在OpenGL ES 2.0中,你显然做不到
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
不再设置模型矩阵,但我认为这些矩阵仍然以某种方式内置,因为GLSL 规范告诉您如何在顶点着色器中访问它们。
//
// 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 着色器语言不支持预定义的条目gl_ModelViewMatrix
,所以唯一的答案是定义您自己的自定义模型/视图/投影矩阵,如下面链接的代码中所做的那样,使用glGetUniformLocation
和glUniformMatrix4fv
。我很困惑,因为 OpenGL Shader Builder确实支持它们,但那是普通的 OpenGL,而不是 OpenGL ES。