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, ширина, высота) и установить матрицу мира эффекта в соответствии с матрицей проекции камеры, и все стало волшебным образом работать.