2

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,所以唯一的答案是定义您自己的自定义模型/视图/投影矩阵,如下面链接的代码中所做的那样,使用glGetUniformLocationglUniformMatrix4fv。我很困惑,因为 OpenGL Shader Builder确实支持它们,但那是普通的 OpenGL,而不是 OpenGL ES。

4

1 回答 1

0

gl_ModelViewProjectionMatrix 似乎不在“ OpenGL ES Shading Language version 1.00”规范中。似乎有很多着色语言规范,所以这可能是造成混淆的原因。据我了解,您为矩阵存储定义了自己的制服。

于 2010-12-19T23:13:37.463 回答