glLoadMatrix()替换

Nek*_*ode 0 opengl matrix deprecated

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

gla*_*ert 6

老GL矩阵堆栈从现代的OpenGL删除,这意味着所有的矩阵相关的功能都不见了,包括glPushMatrix,glPopMatrix,glLoadMatrix等这些功能服务,允许应用程序发送的数据转换到固定功能管线的目的.

从现在开始编写自己的可编程着色器管道,完全取决于您如何处理将转换矩阵传递给着色器.通常的方法是使用统一变量统一缓冲区.

因此,在着色器中,您可以声明应用程序所需的尽可能多的矩阵,其中:

uniform mat4 u_mvpMatrix;    // there are also mat3 and mat2
uniform mat4 u_modelMatrix;
...
Run Code Online (Sandbox Code Playgroud)

并设置/更新它们glUniformMatrix*().

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