我正在使用 OpenGL 进行一些编程,我需要获取模型矩阵来实现我自己的计算目的。众所周知,OpenGL库函数只能通过使用获取模型视图矩阵
glGetDoublev(GL_MODELVIEW_MATRIX, m);
能否请您告诉我如何获取矩阵并使用 C 实现此功能?
我正在使用 OpenGL 进行一些编程,我需要获取模型矩阵来实现我自己的计算目的。众所周知,OpenGL库函数只能通过使用获取模型视图矩阵
glGetDoublev(GL_MODELVIEW_MATRIX, m);
能否请您告诉我如何获取矩阵并使用 C 实现此功能?
OpenGL矩阵堆栈(假设它是可用的——这个东西在GL核心配置文件中被禁用,如果我没记错的话,版本3.2或OpenGL ES 2.0)包含两种矩阵类型——投影和模型视图。单独的建模和视图矩阵对于 3D 绘图目的没有实际用途,因此 GL 不区分它们(相反,D3D 具有单独的投影、世界(建模同名)和视图矩阵)。
Modelview 只是modeling * view
,这里没有魔法。然而,提取建模(如果你知道视图)是相当繁重的数学运算。因此,如果您通过 GL 调用创建了建模矩阵,为什么要将其提取回来?您是否还有初始数据来重新创建矩阵?(这是推荐的,因为较新的 GL 没有矩阵函数,所以在某些时候你必须自己计算矩阵并只给 GL 最终的)。即使对于较低的 GL 配置文件,最好自己执行矩阵计算,然后才使用 glLoadMatrix() 调用加载结果。