OpenGL 3.0+;:正交投影矩阵

OpenGL 3.0+;:正交投影矩阵,opengl,matrix,lwjgl,projection,orthographic,Opengl,Matrix,Lwjgl,Projection,Orthographic,我终于毕业了,开始在OpenGL中使用我自己的矩阵,在设置正交投影时遇到了一些问题。目前,我有一种方法,它取左、右、上、下四个元素,并将它们放入一个矩阵中,如下所示: 然后我把这个矩阵乘以投影矩阵,我得到的输出结果完全没有意义。这让我相信我是1)。未使用正确的正交矩阵,2)。不将正交矩阵乘以正确的矩阵,或3)。两者都有 我怀疑它是2,因为每当我使用不推荐使用的函数时,当当前矩阵是GL_投影时,就会调用glOrtho。那么,如何准确地从左、右、上和下的值计算正交矩阵呢?从技术上讲,您不需要使用正交

我终于毕业了,开始在OpenGL中使用我自己的矩阵,在设置正交投影时遇到了一些问题。目前,我有一种方法,它取左、右、上、下四个元素,并将它们放入一个矩阵中,如下所示:

然后我把这个矩阵乘以投影矩阵,我得到的输出结果完全没有意义。这让我相信我是1)。未使用正确的正交矩阵,2)。不将正交矩阵乘以正确的矩阵,或3)。两者都有


我怀疑它是2,因为每当我使用不推荐使用的函数时,当当前矩阵是GL_投影时,就会调用glOrtho。那么,如何准确地从左、右、上和下的值计算正交矩阵呢?

从技术上讲,您不需要使用正交矩阵。使用固定函数管道,您通常会在投影矩阵堆栈上加载一个单位矩阵,因此将正交矩阵与之相乘将只在投影矩阵堆栈上保留正交矩阵


在你的例子中,无论你用什么乘正交,它都可能是错误的(即不是恒等式)。建议:不要乘法,只需加载即可。

我认为您需要2/宽,2/高(除非我遗漏了什么,否则您在这里似乎是在乘法而不是除法)。我现在觉得自己很愚蠢。。我终于在正交投影矩阵上找到了一个wiki页面,这就是问题之一。另一个是daten wolf说的,这解决了一半的问题。另一个是罗宾逊在上面的评论中提出的。谢谢为了将来供其他人参考,请查看本页以查找正确的正交投影设置:
2(right-left)   0               0                   -right + (left * right) - left
0               2(top-bottom)   0                   -top + (top * bottom) - bottom
0               0               -2(farVal-nearVal)  -far + (far * near) - far
0               0               0                   1