我只处理过 DirectX 矩阵
我读过文章说您不能将 DirectX 矩阵数学库用于 openGL 矩阵。
但我也读过,如果你的数学是一致的,你可以获得类似的结果。这让我更加困惑。
任何人都可以启发我吗?或者如果您不能在 openGL 矩阵上使用 DirectX 数学。有谁知道一个好的openGL矩阵库?
任何有助于理解他们的差异和数学知识的帮助将不胜感激。
我读过文章说您不能将 DirectX 矩阵数学库用于 openGL 矩阵。
这是错误的。
但我也读过,如果你的数学是一致的,你可以获得类似的结果。
唯一的区别在于 OpenGL 和 DirectX 对其标准化设备坐标空间的默认假设。他们使用略有不同的范围和标志。然而,这只转化为一个转换堆栈,上面预乘了一个额外的“适配器”矩阵,你就完成了。
索引排序也很重要,但是现代 OpenGL 允许您选择名称“转置”的 glUniformMatrix 的参数使用哪个顺序
我想通过更清楚地说明 OpenGL 的矩阵和 DirectX 的矩阵之间的主要感知差异是它们分别采用列主要格式和行主要格式来补充 datenwolf 的出色答案。(列优先和行优先是指您将如何以 4x4 格式写出它们。如果翻译出现在第四列,即列优先,反之亦然。)
数学家会告诉你,列优先是表示矩阵的正确方法,主要是因为它使对它们的操作在视觉上(在纸上)更容易。
然而,对于 OpenGL,整个矩阵在内存中以 16 元素数组的形式连续布局,根据规范,平移占用了第 13、14 和 15 个元素。因此,很容易将数据调整为任一矩阵格式。