我正在尝试使用 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 不是很有帮助)