如何理解OpenGL文档的矩阵?

时间:2016-06-11 13:38:38

标签: opengl matrix

我确信我的浏览器没有损坏,但是OpenGL的参考文档使用了我无法理解的非常奇怪和无证的矩阵表示。

例如,这:https://www.opengl.org/sdk/docs/man2/xhtml/glFrustum.xml

描述

glFrustum描述了一个产生透视投影的透视矩阵。当前矩阵(请参阅glMatrixMode)乘以此矩阵,结果将替换当前矩阵,就好像使用以下矩阵作为参数调用glMultMatrix一样:

2 ⁢ nearVal right - left 0 A 0 0 2 ⁢ nearVal top - bottom B 0 0 0 C D 0 0 -1 0

A = right + left right - left

B = top + bottom top - bottom

C = - farVal + nearVal farVal - nearVal

D = - 2 ⁢ farVal ⁢ nearVal farVal - nearVal

所以我无法理解他们所说的“跟随矩阵”。如果我必须像线性阵列那样看它,它甚至没有16个值。

这更难:https://www.opengl.org/sdk/docs/man2/xhtml/glMultMatrix.xml

实施例

如果当前矩阵为C且要变换的坐标为v =v⁡0v⁡1v⁡2v⁡3,则当前变换为C×v,或

c ⁡ 0 c ⁡ 4 c ⁡ 8 c ⁡ 12 c ⁡ 1 c ⁡ 5 c ⁡ 9 c ⁡ 13 c ⁡ 2 c ⁡ 6 c ⁡ 10 c ⁡ 14 c ⁡ 3 c ⁡ 7 c ⁡ 11 c ⁡ 15 × v ⁡ 0 v ⁡ 1 v ⁡ 2 v ⁡ 3
Calling glMultMatrix with an argument of m = m ⁡ 0 m ⁡ 1 ... m ⁡ 15 replaces the current transformation with C × M × v , or

c ⁡ 0 c ⁡ 4 c ⁡ 8 c ⁡ 12 c ⁡ 1 c ⁡ 5 c ⁡ 9 c ⁡ 13 c ⁡ 2 c ⁡ 6 c ⁡ 10 c ⁡ 14 c ⁡ 3 c ⁡ 7 c ⁡ 11 c ⁡ 15 × m ⁡ 0 m ⁡ 4 m ⁡ 8 m ⁡ 12 m ⁡ 1 m ⁡ 5 m ⁡ 9 m ⁡ 13 m ⁡ 2 m ⁡ 6 m ⁡ 10 m ⁡ 14 m ⁡ 3 m ⁡ 7 m ⁡ 11 m ⁡ 15 × v ⁡ 0 v ⁡ 1 v ⁡ 2 v ⁡ 3
Where v is represented as a 4 × 1 matrix.

2 个答案:

答案 0 :(得分:3)

您的浏览器是否支持MathML?因为没有它会显示这种无格式的混乱。这就是它在支持MathML的浏览器中的外观:

enter image description here

答案 1 :(得分:3)

您案件中的问题有两方面:

1:您的浏览器不支持MathML。 OpenGL 2.x文档makes it clear that this is necessary

2:OpenGL 2.x文档尚未使用MathJax支持进行更新,MathJax支持可在任何地方启用MathML。 modern OpenGL 4.x documentation uses this,但仅涵盖核心配置文件。

因此,除了获得支持MathML的浏览器之外,没有真正的解决方案。 Khronos Group已经非常明确地表示他们甚至不会在man2页面中修复错误信息,更不用说使用MathJax升级它们了。