我最近认为从 OpenGL 提供的旧(已弃用)功能(例如矩阵运算和固定函数管道)切换是一个好主意。
我使用 GLM 作为我的矩阵库来简化一些事情。问题是它可能导致的问题比它简化的要多……
透视投影在我的着色器和设置中运行良好,但是当我尝试切换到正交时,一切都崩溃了。我的点和简单的四边形不会显示。当我使用旧的 OpenGL 矩阵时,事情又开始起作用了。
我把它缩小到投影矩阵。我是这样称呼它的:
glm::mat4 projMat = glm::ortho( 0, 400, 0, 400, -1, 1 );
我将其与 opengl 提供的那个进行了比较,一旦被调用“
glOrtho( 0, 400, 0, 400, -1, 1 );
唯一的区别是 [0][0] 元素和 [1][1] 元素(据我所知,它们分别等于“2/width”和“2/height”)。从 OpenGL 矩阵中,值就是这样!但是,在 glm 矩阵上,值是 0。
一旦我在调用 glm::ortho 后手动切换了 glm 矩阵中的值,一切都恢复正常了!
所以我的问题是: glm::ortho() 函数真的坏了,还是我用错了?