gpt4 book ai didi

xna - Spritebatch.Begin() 变换矩阵

转载 作者:行者123 更新时间:2023-12-04 22:07:38 26 4
gpt4 key购买 nike

我一直想知道 spriteBatch 中的变换矩阵是如何实现的。我创建了一个2D相机,变换矩阵如下:

            if (needUpdate)
transformMatrix =
Matrix.CreateTranslation(-Position.X, -Position.Y, 0) *
Matrix.CreateScale(curZoom, curZoom, 1) ; needUpdate = false;

相机的工作效果如我所愿,但我只想知道如何应用变换:变换是否只影响 Sprite 的轴,还是也影响屏幕坐标?

提前致谢!

最佳答案

我看到您已经回答了自己的问题,但为了提供完整的信息 - SpriteBatch 提供了与传统的世界观投影转换系统类似的界面。

SpriteBatch 类有一个隐式的投影矩阵,该矩阵采用视口(viewport)“客户空间”中的坐标((0,0) 位于左上角,一个单位每个像素)并将它们放在屏幕上。

Begin 调用具有接受变换矩阵的重载,该矩阵相当于用于移动相机的 View 矩阵。

Draw 调用虽然实际上没有使用矩阵,但允许您指定位置、旋转、缩放等 - 相当于用于定位 a 的 world 矩阵场景中的模型(模型空间到世界空间)。

因此,您从等效的“模型”开始 - 对于 SpriteBatch 来说,它是纹理(或源矩形)大小的四边形( Sprite )。绘制时,该四边形将转换为其世界坐标,然后转换为其 View 坐标,最后转换为其投影> 坐标。

关于xna - Spritebatch.Begin() 变换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com