在OpenGL中存储和加载矩阵

3 opengl graphics matrix

是否有可能告诉OpenGL将当前转换矩阵存储在特定位置(而不是将其推入堆栈)并从特定位置加载矩阵?

我更喜欢一种不涉及视频设备和主存储器之间额外数据传输的解决方案(即最好将矩阵存储在视频存储器中的某处).

小智 9

回答你问题的第一部分:

功能glLoadMatrix和glGet能做到这一点

// get current model view matrix
double matrix[16];
glGetDoublev(GL_MODELVIEW_MATRIX, matrix)

// manipulate matrix

glLoadMatrixd(matrix);
Run Code Online (Sandbox Code Playgroud)

请注意,OpenGL 4不再支持这些功能.无论如何,Matrix操作必须在应用程序站点上完成,并作为着色器程序的统一变量提供.