【发布时间】:2009-07-14 17:36:56
【问题描述】:
在OpenGL ES 2.0,你显然做不到
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
不再设置模型矩阵,但我认为这些矩阵仍然以某种方式内置,因为GLSL spec 告诉您如何在顶点着色器中访问它们。
//
// Matrix state. p. 31, 32, 37, 39, 40.
//
uniform mat4 gl_ModelViewMatrix;
uniform mat4 gl_ProjectionMatrix;
uniform mat4 gl_ModelViewProjectionMatrix;
那么如何将这些值传递给我的着色器?我应该以某种方式使用glUniformMatrix4fv 吗?
OpenGL ES 2.0 Programming Guide 的源代码对着色器部分很有帮助,但所有示例似乎都只保留矩阵变换,并确保它们的顶点在 -1.0 和 1.0 之间。
更新:显然OpenGL ES Shader Language 确实不支持像gl_ModelViewMatrix 这样的预定义条目,所以唯一的答案是定义您自己的自定义模型/视图/投影矩阵,如下面链接的代码,使用glGetUniformLocation 和glUniformMatrix4fv。我很困惑,因为 OpenGL Shader Builder 确实支持它们,但那是普通的 OpenGL,而不是 OpenGL ES。
【问题讨论】:
标签: iphone-sdk-3.0 opengl-es iphone-3gs