0
我想用D3DXVec3TransformCoordArray和一個世界矩陣來定位和旋轉三角形,但是當我繪製轉換的三角形時,它們會變得非常可怕。我究竟做錯了什麼? (順便說一句,我必須這樣做的CPU,它不適合繪圖的目的...)DirectX矩陣轉換
D3DXVECTOR3 tri[3];
tri[0] = mbuffer.vertices[mbuffer.indices[x]].position;
tri[1] = mbuffer.vertices[mbuffer.indices[x + 1]].position;
tri[2] = mbuffer.vertices[mbuffer.indices[x + 2]].position;
D3DXMatrixRotationQuaternion(&rotM, &obj->getRotation());
D3DXMatrixTranslation(&posM, obj->getPosition().x, obj->getPosition().y, obj->getPosition().z);
transM = rotM * posM;
D3DXVec3TransformCoordArray(tri, 1, tri, 1, &transM, 3);
當我註釋掉最後一行D3DXVec3TransformCoordArray(tri, 1, tri, 1, &transM, 3);
那麼物體呈現精細,但是,當然,不改變...
編輯: 另外,obj->getPosition()
和obj->getRotation()
返回正確的值。
EDIT2: 還好吧,好像
D3DXVec3TransformCoord(&tri[0], &tri[0], &transM);
D3DXVec3TransformCoord(&tri[1], &tri[1], &transM);
D3DXVec3TransformCoord(&tri[2], &tri[2], &transM);
,而不是
D3DXVec3TransformCoordArray(tri, 1, tri, 1, &transM, 3);
解決了這個問題。
誰能告訴我如何正確使用D3DXVec3TransformCoordArray
? (MSDN不是很有幫助)
哦,是的,它應該是transM而不是posM,但我想知道它是否至少與位置一起工作,並忘記將其改回。我會編輯它。確定參數2和4? MSDN說不同。我嘗試將它們更改爲3,但沒有幫助。看起來更糟糕^^ – theCNG27