Math OpenGL矩阵与DirectX矩阵
我只处理过DirectX矩阵 我读过一些文章,说不能将DirectX矩阵数学库用于openGL矩阵 但我也读到,如果你的数学是一致的,你可以得到类似的结果。这让我更加困惑 谁能启发我?或者如果无法在openGL矩阵上使用DirectX数学。有人知道一个好的openGL矩阵库吗 如果有人能帮助我们理解他们的差异和数学知识,我们将不胜感激 我读过一些文章,说不能将DirectX矩阵数学库用于openGL矩阵 这是错误的 但我也读到,如果你的数学是一致的,你可以得到类似的结果 唯一的区别在于OpenGL和DirectX对其规范化设备坐标空间的默认假设。它们使用的范围和符号略有不同。然而,这只会转化为一个带有额外“适配器”矩阵预乘的转换堆栈,您就完成了Math OpenGL矩阵与DirectX矩阵,math,opengl,matrix,directx,Math,Opengl,Matrix,Directx,我只处理过DirectX矩阵 我读过一些文章,说不能将DirectX矩阵数学库用于openGL矩阵 但我也读到,如果你的数学是一致的,你可以得到类似的结果。这让我更加困惑 谁能启发我?或者如果无法在openGL矩阵上使用DirectX数学。有人知道一个好的openGL矩阵库吗 如果有人能帮助我们理解他们的差异和数学知识,我们将不胜感激 我读过一些文章,说不能将DirectX矩阵数学库用于openGL矩阵 这是错误的 但我也读到,如果你的数学是一致的,你可以得到类似的结果 唯一的区别在于OpenG
索引顺序可能也很重要,但现代OpenGL允许您选择名称“transpose”的glUniformMatrix参数使用的顺序我想补充datenwolf的伟大答案,让大家更清楚地认识到OpenGL的矩阵和DirectX的矩阵之间的主要区别在于它们分别采用列主格式和行主格式。(Column-and row major指的是如何以4x4格式写出它们。如果翻译出现在第四列中,则为Column major,反之亦然,则为row major。) 数学家们会告诉你,column major是表示矩阵的正确方法,主要是因为它使对矩阵的操作在视觉上(在纸上)更容易
然而,对于OpenGL来说,整个矩阵在内存中以16个元素的数组连续排列,根据数据,平移占据了第13、14和15个元素。因此,很容易将数据调整为任一矩阵格式。看起来它们是不同的:。相关:。它们可能只是彼此的转置:所以你的意思是,如果我在传递矩阵时使用我为directX制作的数学库,请确保检查转置布尔值?@FrankyRivera:那你的投影矩阵需要一些平移缩放预乘。IIRC
Scale(0.5,0.5,-1)·Translate(1,1,0)
但不要把我的意思固定下来。