Не може да се използва SetTransform в D3D9

Какво може да попречи на 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);

person Kevin Laity    schedule 16.11.2009    source източник
comment
@GMan: не. Нищо освен два полиса и една текстура   -  person Kevin Laity    schedule 16.11.2009
comment
И това е действителният код, нищо между? Предполагам, че сте настроили и другите си матрици? (Проекцията и изгледът)   -  person GManNickG    schedule 16.11.2009
comment
Никога не съм чувал това да не работи в тръбопровода с фиксирана функция. Препоръчвам ви да го пуснете през PIX и да видите какво се случва. (също така, правилно ли сте настроили матриците за изглед и проекция?). Въпреки че, IMHO, вярвам, че тръбопроводът с фиксирани функции е мъртъв, не е актуализиран от почти десетилетие (нито от MS, нито от производители на хардуер) и обикновено е по-бърз и лесен за разработване с шейдъри, защото знаете точно какво се случва и не Не е нужно да се занимавате с подобни неща (въпреки че, разбира се, трябва да разберете какво се случва).   -  person Grant Peters    schedule 16.11.2009
comment
Това е само за 2D изобразяване, така че разбрах, че проекционната матрица и т.н. не са необходими, но ще опитам и ще видя какво ще се случи   -  person Kevin Laity    schedule 16.11.2009


Отговори (1)


Вие задавате „D3DFVF_TLVERTEX“, което означава, че доставяте върхове „Трансформиране и осветяване“ в буфера на върховете, следователно устройството няма да приложи трансформационна матрица към тези върхове.

person gatorfax    schedule 17.11.2009
comment
Да, това беше, очевидно Трансформиран също означава и не може да бъде трансформиран фуртур. - person Kevin Laity; 17.11.2009