我目前正在嘗試在direct3d 9中的場景上繪製陰影。我試圖做一些多遍渲染,並且無法理解如何使用/設置混合模式。Direct3D 9陰影貼圖混合模式
我已經做了深度傳遞,填充深度緩衝區,然後我有一個循環遍歷場景中的所有燈光。內環路我有2個環,其通過場景中的所有形狀都環
我有這種設置
for(number of shapes)
{
//render from camera position and fill depth buffer
}
for(number of lights)
{
for(number of shapes)
{
//render to shadow map
}
for(number of shapes)
{
//render to screen
}
}
在PIX我可以看到,它遍歷每個光,但是當我運行它只顯示燈光陣列中的最後一盞燈。我認爲這與混合模式有關。
我查看了混合模式並找到了關於源和目標混合的信息。這是我需要/有人可以幫忙解釋一下嗎?
由於提前,
馬克
[編輯] 我有兩個指示燈可見使用下面的代碼
hr = device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
hr = device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
hr = device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
陰影看起來不正確的,但我越來越近達到預期的結果。
任何更多的建議將是巨大的,
感謝,
馬克
我沒有使用固定功能管道。我目前有3套着色器。第一盤用於深度傳球。第二組用於輸出燈光位置和第三組場景的深度,以使用陰影貼圖紋理深度來渲染場景中的陰影。我認爲問題在於傳球之間的混合。 – MulletDevil 2011-05-05 12:13:25
我假設目標是渲染目標?什麼是來源/你如何設置它? – MulletDevil 2011-05-05 14:57:43
目標是渲染目標,源代碼是您設置爲混合的紋理的顏色。 – mkaes 2011-05-06 08:16:23