2014-11-22 53 views
0

除非設置了D3DXSPRITE_OBJECTSPACE標誌,否則ID3DXSprite::Begin方法會在設備上設置世界,視圖和投影轉換。什麼是由ID3DXSprite :: Begin設置的默認轉換矩陣?

如果精靈旋轉出X-Y平面以外,這些默認轉換效果不佳,所以我想修改它們,如果我知道它們是什麼,會更容易。

ID3DXSprite::Begin設置了哪些變化?

+0

注意,如果你使用的Direct3D 11,而不是傳統的Direct3D 9,你可以使用和看到所有的源''SpriteBatch''在[DirectX的工具包](http://go.microsoft.com/fwlink/?LinkId=248929)。 – 2014-12-09 20:06:46

回答

1

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 
}; 
相關問題