2016-03-18 5 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);