2009-11-16 57 views
1

什麼可能會停止IDirect3DDevice9 :: SetTransform的工作?我已經看了很多在Direct3D9中使用轉換矩陣的教程,其中包括this one here。據我所知,他們都是這樣做的。無法在D3D9中使用SetTransform

我想寫一些代碼只是爲了翻譯紋理多邊形。我用一個用D3DXMatrixTranslation初始化的矩陣調用SetTransform,並返回S_OK。然而,繪製到屏幕上的實際多邊形不會被轉換。

D3DXMATRIX m_Translation; 
D3DXMatrixTranslation(&m_Translation,100,100,0); 
d3dDevice->SetTransform(D3DTS_WORLD, &m_Translation); 

d3dDevice->SetFVF(D3DFVF_TLVERTEX); 
d3dDevice->SetStreamSource(0, vertexBuffer, 0, sizeof(TLVERTEX)); 

HRESULT hr = d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2); 
+0

你使用的着色器? – GManNickG 2009-11-16 04:46:52

+0

@GMan:不可以。只有兩個多邊形和一個紋理 – 2009-11-16 05:09:42

+0

這就是實際的代碼,兩者之間沒有任何關係?我猜你還有其他的矩陣? (投影&視圖) – GManNickG 2009-11-16 05:38:49

回答

3

您可以設置「D3DFVF_TLVERTEX」,這意味着你在供應頂點緩衝區「變換上火」的頂點,因此該設備是不會變換矩陣應用到這些頂點。

+0

是的,它顯然是轉換也意味着「無法轉變furthur」 。 – 2009-11-17 15:40:01