Невозможно использовать SetTransform в D3D9 - PullRequest
1 голос
/ 16 ноября 2009

Что может помешать работе 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);

1 Ответ

3 голосов
/ 17 ноября 2009

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

...