D3D9 HLSL矩阵化了我的大脑

时间:2011-01-27 07:03:00

标签: direct3d9

我正在寻求所有Direct3D专家的帮助。坦率地说,我对HLSL的一个非常奇怪的行为感到疯狂。这是我指定矩阵的方式。

现在我的问题D3DX 9起作用了:

D3DXMatrixOrthoOffCenterRH和其他人......

他们是否返回以此形式使用的矩阵:v'= v * M //专栏

或v'= M * v // Row major ???

我注意到D3DXMatrixTrnaslate在Column major中,我假设所有函数都一样。

现在D3DX Project和Unproject函数是否采用上述函数返回的相同形式?

有没有人经历过HLSL矩阵乘法的疯狂?

感谢。

1 个答案:

答案 0 :(得分:0)

我会保持简短。 RH函数返回column-major(http://en.wikipedia.org/wiki/Column_vector,for ref。)矩阵,并不是HLSL(或适当优化的程序集)着色器的首选布局,因为它们无法执行使用点积的矢量的3D变换。因此,在上传到着色器常量存储器之前,请使用LH或行主要(V'= M * V,确实)布局或至少转置。

如需动手实例,请参阅DirectX文档,查找D3DXMatrixLookAtLH()和D3DXMatrixLookAtRH()。在该页面上给出了矩阵的布局,您可以比较布局,并了解为什么dot4'每行使用X,Y,Z,1矢量分别执行X,Y,Z和W的仿射变换(给定您使用LH /行主矩阵。)