C# AlphaTestEffect.Projection属性

C# AlphaTestEffect.Projection属性,c#,xna,render,target,C#,Xna,Render,Target,我正在浏览本教程,根据要传递的像素类型混合不同的纹理: 到目前为止,我认为我理解了整个概念,除了创建AlphaTestEffect对象时的几行代码,因为对它几乎没有解释,我也不知道它是用来做什么的,以及为什么要这样设置 Matrix projection = Matrix.CreateOrthographicOffCenter(0, PlanetDataSize, PlanetDataSize, 0, 0, 1); Matrix halfPixelOffset = Matrix.CreateT

我正在浏览本教程,根据要传递的像素类型混合不同的纹理:

到目前为止,我认为我理解了整个概念,除了创建AlphaTestEffect对象时的几行代码,因为对它几乎没有解释,我也不知道它是用来做什么的,以及为什么要这样设置

Matrix projection = Matrix.CreateOrthographicOffCenter(0, PlanetDataSize, PlanetDataSize, 0, 0, 1);
Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0);

alphaTestEffect.Projection = halfPixelOffset * projection;
谁能解释一下这些必要性,它们是做什么的,它们的用途是什么?我希望这不会花太多时间,我的问题也不傻

干杯
Lucas

因为他使用的是自定义效果,而不是默认的SpriteBatch效果,所以他必须确保投影效果与默认效果相同,或者更确切地说,他正在使投影效果相同,以使所有效果都能很好地配合

如果向下滚动一点,说明如下:

此代码将BASICEFECT配置为复制默认的SpriteBatch坐标系:

默认的SpriteBatch相机是一个简单的正交投影,具有半像素偏移,以更好地显示2D纹理。这可以在这里解释: