XNA, альфа-тестирование, трафаретный буфер и две разные проекции

Мой вопрос об использовании буфера трафарета из другой проекции в качестве маски в другой проекции. Я не уверен, как подойти к этому, поэтому я продолжу и изложу некоторый код:

spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, AlwaysStencilState, null, alphaEffect2, Camera.Projection);

// Draw stuff used as a stencil in Camera.Projection space

spriteBatch.End();

spriteBatch.Begin(SpriteSortMode.Immediate, null, SamplerState.PointClamp, EqualStencilState, null, null);

// Draw a background behind

spriteBatch.End();

Хорошо, это работает, если я возьму Camera.Projection из первого уравнения и отобразлю в координатном пространстве экрана. Однако это НЕ работает с проекцией камеры. Насколько я понимаю, рендеринг просто выполняется в буфере трафарета "далеко-далеко" по сравнению с последними вызовами отрисовки, которые происходят в пространстве экрана.

Как я могу использовать трафарет первой операции в качестве маски для второй?

1 ответ

Alrighty. Я обнаружил, что на самом деле я мог просто использовать оригинальную проекцию эффекта (0,0, ширина, высота) и установить матрицу мира эффекта в соответствии с матрицей проекции камеры, и все стало волшебным образом работать.

Другие вопросы по тегам