我一直想知道 spriteBatch 中的变换矩阵是如何实现的。我创建了一个2D相机,变换矩阵如下:
if (needUpdate)
transformMatrix =
Matrix.CreateTranslation(-Position.X, -Position.Y, 0) *
Matrix.CreateScale(curZoom, curZoom, 1) ; needUpdate = false;
相机的工作效果如我所愿,但我只想知道如何应用变换:变换是否只影响精灵的轴,还是也影响屏幕坐标?
提前致谢!
我看到您已经回答了自己的问题,但要提供完整的信息 -SpriteBatch
提供与传统的世界观投影转换系统类似的界面。
The SpriteBatch
类有一个隐式的投影矩阵,它获取视口“客户空间”中的坐标(左上角的(0,0),每个像素一个单位)并将它们放在屏幕上。
The Begin
调用有一个接受变换矩阵的重载,它相当于view用于移动相机的矩阵。
And the Draw
调用虽然实际上没有使用矩阵,但允许您指定位置、旋转、缩放等 - 相当于world用于在场景中定位模型(模型空间到世界空间)的矩阵。
所以你从你的“模型”等价物开始 - 这对于SpriteBatch
是纹理(或源矩形)大小的四边形(精灵)。绘制时,该四边形将转换为其world坐标,然后将其转换为view坐标,最后将其转换为它的投影坐标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)