Re: [請益] 請問關於 Shader 的問題

看板GameDesign (遊戲設計)作者 (LOUIS￾N)時間16年前 (2009/08/17 15:08), 編輯推噓2(2012)
留言14則, 3人參與, 最新討論串2/4 (看更多)

08/17 12:24,
兩個effect
08/17 12:24
謝謝你的回覆 但是這也是我所苦惱的地方 我上一篇文章寫的不清楚 請見諒 我苦惱的地方是 如果使用兩個以上 effect 那他載入的迴圈 要如何撰寫?? 一個effect時候的迴圈如下 : --- if (SUCCEEDED(g_pEffect->SetTechnique(hTechnique))) { if (SUCCEEDED(g_pEffect->Begin(&totalPasses, 0))) { for (UINT pass2 = 0; pass2 < totalPasses; ++pass2) { if (SUCCEEDED(g_pEffect->BeginPass(pass))) { g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12); g_pEffect->EndPass(); } } g_pEffect->End(); } } --- 應該不是單純的執行上述迴圈兩次吧?? 因為我這樣測試的結果 會讓第二次的執行的 effect 覆蓋第一次執行的結果 而不是同時執行兩個結果 也試過用兩個 effect 並使用下面的巢狀回圈執行過 但是只有出現到第一個effect的效果 --- if (SUCCEEDED(g_pEffect2->SetTechnique(hTechnique2))) { if (SUCCEEDED(g_pEffect2->Begin(&totalPasses2, 0))) { for (UINT pass = 0; pass < totalPasses2; ++pass) { if (SUCCEEDED(g_pEffect2->BeginPass(pass))) { // Render the cube. if (SUCCEEDED(g_pEffect->SetTechnique(hTechnique))) { if (SUCCEEDED(g_pEffect->Begin(&totalPasses, 0))) { for (UINT pass = 0; pass < totalPasses; ++pass) { if (SUCCEEDED(g_pEffect->BeginPass(pass))) { g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12); g_pEffect->EndPass(); } } g_pEffect->End(); } } g_pEffect2->EndPass(); } g_pEffect2->End(); } } } --- 我不知道上述的程式碼 我是否哪邊有搞錯 不知可否請你指導一下 給一些提示 而且若使用上述的結構 那麼在必須 大量同時使用 Shader 時的情況下 難道就是使用 遞迴 的方式 寫一個巢狀迴圈 不斷的往內部執行嗎?? 不好意思 打了一長串的問題 不過還是請你多多幫忙 謝謝你的推文 謝謝你 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.76.190.21

08/17 15:16, , 1F
概念上是在目標場景render前把要用的shader裝上.
08/17 15:16, 1F

08/17 15:36, , 2F
首先呢你必須要做的是
08/17 15:36, 2F

08/17 15:37, , 3F
\Samples\C++\Direct3D\PostProcess
08/17 15:37, 3F

08/17 15:37, , 4F
把這個範例看完你就懂了
08/17 15:37, 4F

08/17 15:37, , 5F
重點不是你有幾個shader有幾個effect
08/17 15:37, 5F

08/17 15:38, , 6F
重點是你要用哪個effect
08/17 15:38, 6F

08/17 15:39, , 7F
看來你不是很了解technique可以幹什麼
08/17 15:39, 7F

08/17 15:40, , 8F
並不是所有的technique都被需要使用
08/17 15:40, 8F

08/17 15:40, , 9F
你可以只用你要的 即使不是同一個effect
08/17 15:40, 9F

08/17 15:40, , 10F
只要輸入的vertex format是相同的 就可以被使用
08/17 15:40, 10F

08/17 15:41, , 11F
其實不同也可以啦 不過你現在應該不用考慮到那麼深
08/17 15:41, 11F

08/17 15:50, , 12F
打完下面的文章 才看到樓上推文 囧 謝謝你 真是好範例
08/17 15:50, 12F

08/17 16:08, , 13F
因為我今天翹班 所以現在很閒\(^▽^)/
08/17 16:08, 13F

08/17 16:24, , 14F
囧 某種意義上 還真羨慕...
08/17 16:24, 14F
文章代碼(AID): #1AYG7gpY (GameDesign)
文章代碼(AID): #1AYG7gpY (GameDesign)