我一直想知道如何实现spriteBatch中的变换矩阵.我创建了一个2D相机,变换矩阵如下:
if (needUpdate)
transformMatrix =
Matrix.CreateTranslation(-Position.X, -Position.Y, 0) *
Matrix.CreateScale(curZoom, curZoom, 1) ; needUpdate = false;
Run Code Online (Sandbox Code Playgroud)
相机的效果和我想要的一样好,但我只是想知道变换是如何应用的:变换是否只影响精灵的轴,或者屏幕是否也会协调?
提前致谢!
我看到你已回答了自己的问题,但提供了完整的信息 - SpriteBatch为传统的世界观投影系统提供了类似的界面.
所述SpriteBatch类具有一个隐含的投影矩阵(在左上角(0,0),每个像素一个单元)开坐标在视口"客户空间"并把它们在屏幕上.
该Begin调用具有接受转换矩阵的重载,该转换矩阵相当于用于移动相机的视图矩阵.
并且Draw调用虽然实际上不使用矩阵,但允许您指定位置,旋转,缩放等 - 相当于用于在场景中定位模型的世界矩阵(模型空间到世界空间).
所以你从你的"模型"等价物开始 - 这SpriteBatch是一个纹理(或源矩形)大小的四元组(精灵).绘制时,将四边形转换为其世界坐标,然后将其转换为其视图坐标,最后将其转换为其投影坐标.