C++ ID3DXSprite::Begin设置的默认转换矩阵是什么?

C++ ID3DXSprite::Begin设置的默认转换矩阵是什么?,c++,windows,direct3d,C++,Windows,Direct3d,除非设置了D3DXSPRITE\u OBJECTSPACE标志,否则ID3DXSprite::Begin方法将设置设备上的世界、视图和投影变换 如果精灵旋转出X-Y平面,则这些默认变换无法正常工作,因此我想修改它们,如果我知道它们是什么,这将更容易 ID3DXSprite::Begin设置了哪些转换?ID3DXSprite::Begin设置世界并查看对标识的转换 投影变换设置为matProj: // pdev is the IDirect3DDevice9 pointer D3DVIEWPORT

除非设置了
D3DXSPRITE\u OBJECTSPACE
标志,否则
ID3DXSprite::Begin
方法将设置设备上的世界、视图和投影变换

如果精灵旋转出X-Y平面,则这些默认变换无法正常工作,因此我想修改它们,如果我知道它们是什么,这将更容易


ID3DXSprite::Begin
设置了哪些转换?

ID3DXSprite::Begin
设置世界并查看对标识的转换

投影变换设置为
matProj

// pdev is the IDirect3DDevice9 pointer
D3DVIEWPORT9 viewport;
pdev->GetViewport(&viewport);

// Short variable names to make the matrix readable
int w = viewport.Width; int h = viewport.Height;
int vx = viewport.X; int vy = viewport.Y;

// The scaling factors
float sx = 1.0f / w;
float sy = 1.0f / h;

// The projection matrix
D3DMATRIX matProj = {
                    sx * 2.0f,                  0.0f, 0.0f, 0.0f,
                         0.0f,            -sy * 2.0f, 0.0f, 0.0f,
                         0.0f,                  0.0f, 1.0f, 0.0f,
       -sx * (w + 2 * vx + 1), sy * (h + 2 * vy + 1), 0.0f, 1.0f
};

注意:如果您使用的是Direct3D 11而不是传统的Direct3D 9,则可以在中使用并查看
SpriteBatch
的所有源代码。