C# XNA、alpha测试、模板缓冲区和两个不同的投影

C# XNA、alpha测试、模板缓冲区和两个不同的投影,c#,xna,projection,stencil-buffer,C#,Xna,Projection,Stencil Buffer,我的问题是使用另一个投影的模具缓冲区作为另一个投影中的遮罩。我不确定如何实现这一点,因此我将继续编写一些代码: spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, AlwaysStencilState, null, alphaEffect2, Camera.Projection); // Draw stuff used as a stencil in Camera.Projection space

我的问题是使用另一个投影的模具缓冲区作为另一个投影中的遮罩。我不确定如何实现这一点,因此我将继续编写一些代码:

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();
好的,如果我把相机从第一个方程中投影出来,然后渲染到屏幕坐标空间,这就行了。但是,这不适用于摄影机投影。我的理解是,与后一种在屏幕空间中进行的绘制调用相比,渲染只是对“很远”的模具缓冲区进行的


如何使用第一次操作的模板作为第二次操作的遮罩?

好的。我发现我实际上可以使用原始效果的投影(0,0,宽度,高度)并设置效果的世界矩阵来对应相机的投影矩阵,然后一切都开始神奇地工作