2016-03-18 70 views
0

我一直无法翻译我的对象,当我尝试这样做时,整个世界都会翻译。整个世界为什么翻译而不仅仅是对象?

任何人有任何想法,为什么发生这种情况?

d3ddev->SetStreamSource(0, v_buffer[2], 0, sizeof(CUSTOMVERTEX));  
d3ddev->SetIndices(i_buffer[2]);           
d3ddev->SetTexture(0, texture[1]); 

D3DXMATRIX matTranslate; 
D3DXMatrixTranslation(&matTranslate, 30.0f, 0.0f, 30.0f); 
d3ddev->SetTransform(D3DTS_WORLD, &matTranslate); 
d3ddev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 24, 0, 12); 

回答

0

D3D设备作为一个状态机。每当你在设备上设置一些状态,如世界变换矩阵,它将持续在多个绘制调用之间。在绘制对象之后,必须在绘制场景的其余部分之前将世界变换重置为单位矩阵,以防止它被翻译。

D3DXMATRIX matIdentity; 
D3DXMatrixIdentity(&matIdentity); 
d3ddev->SetTransform(D3DTS_WORLD, &matIdentity); 
相关问题