我目前正在尝试在 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);
阴影看起来不正确,但我越来越接近预期的结果。
任何更多的建议会很棒,
谢谢,
标记