我只处理过DirectX矩阵
我读过一些文章说你不能将OpenX矩阵数学库用于openGL矩阵。
但我也读过,如果你的数学是一致的,你可以得到相似的结果。这让我更加困惑。
任何人都可以开导我吗?或者如果你不能在openGL矩阵上使用DirectX数学。有谁知道一个好的openGL矩阵库?
了解他们的差异和数学知识的任何帮助将不胜感激。
答案 0 :(得分:6)
我读过一些文章说你不能将OpenX矩阵数学库用于openGL矩阵。
这是错误的。
但我也读过,如果你的数学是一致的,你可以得到相似的结果。
唯一的区别是OpenGL和DirectX对其标准化设备坐标空间的默认假设。他们使用略有不同的范围和标志。然而,这只会转换为一个转换堆栈,并在其上预先添加一个额外的“适配器”矩阵,并且您已经完成了。
同样重要的可能是索引排序,但是现代OpenGL允许您选择参数使用的名称为“transpose”的glUniformMatrix
答案 1 :(得分:2)
我想通过更清楚地了解OpenGL的矩阵和DirectX矩阵之间的关键感知差异,分别是列主要和行主要格式,来添加datenwolf的绝佳答案。 (列和行主要指的是如何以4x4格式写出它们。如果翻译出现在第四列,那就是列专业,反之亦然,用于行主要。)
数学家会告诉你,列专业是表示矩阵的正确方法,主要是因为它在视觉上(在纸面上)对它们进行操作更容易。
然而,当谈到OpenGL时,整个矩阵在内存中以16个元素的阵列连续布局,根据specifications,平移占据第13,14和15个元素。因此,很容易使数据适应矩阵格式。