0

D3DXVec3TransformCoordArray とワールド マトリックスを使用して三角形を配置および回転しようとしていますが、変換された三角形を描画すると、ひどく歪んでしまいます。私は何を間違っていますか?(ちなみに、CPUでこれを行う必要があります。描画目的ではありません...)

        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 はあまり役に立ちませんでした)

4

1 に答える 1