我可以在一个着色器通道中使用两个混合状态吗?

时间:2015-07-19 23:15:36

标签: c++ shader direct3d hlsl blending

我有代码设置混合状态,绘制基元,更改混合状态,并绘制第二组。

这一切都在一个Present()传递中,并且一个顶点/着色器传递是活动的,但是在不同轮次的Draw()调用中。所以,它会继续这样:

SetBlendState(pd3dDevice, blendSolid);
DrawABunchofTrianglesThatMakeRedLines(pd3dDevice);
SetBlendState(pd3dDevice, blendAlpha);
DrawABunchofTrianglesThatMakeGreenLines(pd3dDevice);

如果我拿出第二个SetBlendState,那么一切都是稳固的。但是,稍后设置一个alpha混合状态,一切都是通过混合绘制的。

那么,如果你不能改变Draw调用之间的混合,那么需要做些什么才能将混合从一个绘图批处理更改为下一个绘图批处理?

我应该注意,在VS Graphics调试器中,我可以看到两个不同的绘制调用中设置了不同的混合状态。但它似乎仍然是#34;最后一个获胜"。

谢谢!

0 个答案:

没有答案