0
除非設置了D3DXSPRITE_OBJECTSPACE
標誌,否則ID3DXSprite::Begin
方法會在設備上設置世界,視圖和投影轉換。什麼是由ID3DXSprite :: Begin設置的默認轉換矩陣?
如果精靈旋轉出X-Y平面以外,這些默認轉換效果不佳,所以我想修改它們,如果我知道它們是什麼,會更容易。
ID3DXSprite::Begin
設置了哪些變化?
除非設置了D3DXSPRITE_OBJECTSPACE
標誌,否則ID3DXSprite::Begin
方法會在設備上設置世界,視圖和投影轉換。什麼是由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''在[DirectX的工具包](http://go.microsoft.com/fwlink/?LinkId=248929)。 – 2014-12-09 20:06:46