glLoadMatrix()替换

时间:2014-07-31 17:48:03

标签: opengl matrix deprecated

将我的游戏移植到较新的OpenGL版本(3.2+)之后,我注意到glLoadMatrix()glMultMatrix()被删除了。他们有替代品吗?我不想使用任何库,因为我有自己的矩阵堆栈。

1 个答案:

答案 0 :(得分:5)

旧的GL矩阵堆栈已从现代OpenGL中删除,这意味着所有与矩阵相关的函数都已消失,包括glPushMatrixglPopMatrixglLoadMatrix等。这些函数用于此目的允许应用程序将转换数据发送到固定功能管道。

由于您现在使用可编程着色器编写自己的管道,因此完全取决于您将如何处理将转换矩阵传递给着色器。通常的方法是使用uniform variablesuniform buffers

因此,在着色器中,您可以根据应用程序声明尽可能多的矩阵,并使用:

uniform mat4 u_mvpMatrix;    // there are also mat3 and mat2
uniform mat4 u_modelMatrix;
...

使用glUniformMatrix*()设置/更新它们。

如果你还没有一个好的矩阵库,你肯定需要一个,因为矩阵乘法和任何其他操作现在也必须由应用程序完成。一个非常好的选择是GLM