为什么整个世界而不仅仅是对象?

时间:2016-03-18 12:13:30

标签: directx d3dx

我无法单独翻译我的对象,当我尝试这样做时,整个世界将转而翻译。

任何人都有任何想法为什么会这样?

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);

1 个答案:

答案 0 :(得分:0)

D3D设备充当状态机。每当您在设备上设置某个状态(如世界变换矩阵)时,它将在多个绘制调用之间保持不变。绘制对象后,必须先将世界变换重置为单位矩阵,然后再绘制场景的其余部分以防止其被翻译。

D3DXMATRIX matIdentity;
D3DXMatrixIdentity(&matIdentity);
d3ddev->SetTransform(D3DTS_WORLD, &matIdentity);