【发布时间】:2014-01-26 19:17:16
【问题描述】:
我正在尝试使用 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() 返回正确的值。
编辑2: 好吧,好像
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 不是很有帮助)
【问题讨论】:
标签: c++ directx d3dx matrix-transform