Вопрос

Что может помешать работе IDirect3DDevice9::SetTransform?Я просмотрел множество руководств по использованию матриц преобразования в Direct3D9, в том числе один здесь.И насколько я могу судить, все они делают это одинаково.

Я пытаюсь написать код только для перевода текстурированного многоугольника.Я вызываю SetTransform с матрицей, инициализированной с помощью D3DXMatrixTranslation, и он возвращает 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);
Это было полезно?

Решение

Вы устанавливаете «D3DFVF_TLVERTEX», что означает, что вы предоставляете вершины «Transform and Lit» в буфере вершин, поэтому устройство не будет применять матрицу преобразования к этим вершинам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top