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
的所有源代码。