我正在阅读本教程,以根据我想要传递的像素类型混合不同的纹理:http://www.crappycoding.com/tag/xna/page/2/
到目前为止,我认为我理解了整个概念,除了创建AlphaTestEffect对象时的几行代码,因为对它的解释很少,我也不知道它是做什么的,也不知道为什么要这样设置。
Matrix projection = Matrix.CreateOrthographicOffCenter(0, PlanetDataSize, PlanetDataSize, 0, 0, 1);
Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0);
alphaTestEffect.Projection = halfPixelOffset * projection;
谁能解释一下这些必需品,它们是做什么的,它们是做什么用的?我希望不会花太多时间,我的问题也不是一个愚蠢的问题。
干杯卢卡斯
发布于 2012-01-16 22:55:03
因为他使用的是自定义效果,而不是默认的SpriteBatch效果,所以他必须确保投影的工作方式与默认效果相同(或者更确切地说,他使其相同,以使所有内容都能很好地发挥作用)。
http://blogs.msdn.com/b/shawnhar/archive/2010/04/05/spritebatch-and-custom-shaders-in-xna-game-studio-4-0.aspx
如果你向下滚动一点,就会在那里解释:
“此代码将BasicEffect配置为复制默认的SpriteBatch坐标系:”
默认的SpriteBatch摄影机是具有半像素偏移的简单正交投影,以更好地显示2D纹理。这可以在这里解释:
http://drilian.com/2008/11/25/understanding-half-pixel-and-half-texel-offsets/
https://stackoverflow.com/questions/8880733
复制相似问题