Это вопрос HLSL, хотя я использую XNA, если вы хотите сослаться на эту платформу в своем ответе.
В XNA 4.0 у нас больше нет доступа к функциональности DX9 AlphaTest.
Я хочу:
- Визуализировать текстуру в буфер, используя только непрозрачные пиксели текстуры.
- Визуализировать текстуру, тексели которой нарисованы только в местах, где нет непрозрачныхпиксели с шага 1 были нарисованы.
Как это сделать?Если мне нужно использовать clip () в HLSL, как я могу проверить трафаретный буфер, который был нарисован на шаге 1, из моего кода HLSL?
До сих пор я сделал следующее:
_sparkStencil = new DepthStencilState
{
StencilEnable = true,
StencilFunction = CompareFunction.GreaterEqual,
ReferenceStencil = 254,
DepthBufferEnable = true
};
DepthStencilState old = gd.DepthStencilState;
gd.DepthStencilState = _sparkStencil;
// Only opaque texels should be drawn.
DrawTexture1();
gd.DepthStencilState = old;
// Texels that were rendered from texture1 should
// prevent texels in texture 2 from appearing.
DrawTexture2();