Почему весь мир переводит, а не просто объект?

Я не смог перевести свой объект в одиночку, когда я попытался бы сделать это, весь мир перевел бы вместо этого.

У кого-нибудь есть идеи, почему это происходит?

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 ответ

Устройство D3D действует как конечный автомат. Всякий раз, когда вы устанавливаете какое-либо состояние на устройстве, например матрицу мирового преобразования, оно сохраняется между несколькими вызовами отрисовки. После того, как вы рисуете свой объект, вы должны сбросить преобразование мира обратно в матрицу идентичности, прежде чем рисовать остальную часть сцены, чтобы предотвратить ее перевод.

D3DXMATRIX matIdentity;
D3DXMatrixIdentity(&matIdentity);
d3ddev->SetTransform(D3DTS_WORLD, &matIdentity);
Другие вопросы по тегам