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