C++ DirectX矩阵变换

C++ DirectX矩阵变换,c++,directx,d3dx,matrix-transform,C++,Directx,D3dx,Matrix Transform,我试图用D3DXVec3TransformCoordArray和一个世界矩阵来定位和旋转三角形,但当我画出变换后的三角形时,它们扭曲得可怕。我做错了什么?(顺便说一句,我需要在CPU上执行此操作,它不是用于绘图目的…) 当我注释掉最后一行D3DXVec3TransformCoordArray(tri,1,tri,1,&transM,3)然后对象会很好地渲染,但当然不会转换 编辑: 另外,obj->getPosition()和obj->getRotation()返回正确的值 编辑2: 好吧,看起来

我试图用D3DXVec3TransformCoordArray和一个世界矩阵来定位和旋转三角形,但当我画出变换后的三角形时,它们扭曲得可怕。我做错了什么?(顺便说一句,我需要在CPU上执行此操作,它不是用于绘图目的…)

当我注释掉最后一行
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没有太大帮助)

编辑:D3DXVec3TransferorMCoordArray在本例中,步幅参数应为D3DXVECTOR3的大小。
如果需要旋转和平移,请尝试传入D3DXVec3TransformCoordArray transM矩阵,而不是posM

哦,是的,它应该是transM而不是posM,但我想知道它是否至少只适用于position,并且忘了把它改回来。我会编辑的。确定参数2和4吗?MSDN表示不同。我试着把它们改成3,但没用。看起来更糟^^
D3DXVec3TransformCoordArray(tri, 1, tri, 1, &transM, 3);