2011-08-12 45 views
0

我有許多紋理要顯示在屏幕上,其中一些紋理可能有旋轉或其他轉換。所有轉換都是獨立我是否需要爲每個獨立紋理創建D3DXSprite?因爲,如果我只創建一個精靈並應用變換,它會影響精靈中的每個紋理。謝謝。D3DXSprite並顯示紋理並以不同的方式旋轉它們

回答

0

不,作爲文檔ID3DXSprite ::抽獎()規定:

要縮放,旋轉或轉換精靈,叫ID3DXSprite ::一個setTransform與包含規模矩陣,旋轉和平移( SRT)值,然後調用ID3DXSprite :: Draw。有關在矩陣中設置SRT值的信息,請參閱矩陣變換。

因此,這將是這個樣子:

d3dxSpriteObject.Begin([...]); 
for(int i=0; i<numTextures; i++) 
{ 
    d3dxSpriteObject.SetTransform(matrix); 
    d3dxSpriteObject.Draw(texture[i], NULL, textureCenter[i], texturePos[i], 0xffffffff); 
} 
d3dxSpriteObject.End(); 
+0

如果某些對象不會得到改造,做我需要做的下一SetTransformation或可能是更好的辦法\t \t \t \t> D3DXMATRIX矩陣; D3DXMatrixScaling(&matrix,1,1,1); gSprite-> SetTransform(&matrix); – Yola

+0

我只能猜測,但我的猜測是,轉換將保持不變,直到您調用下一個SetTransform()。所以我猜想像SetTransform();畫();畫(); _both_繪製調用將與您在SetTransform()上設置的內容一起進行。你應該嘗試一下;) –