我正在尝试使用OpenGL ES 3.0,并在快速参考表中发现以下声明:
“#version 300 es” 必须出现在使用GLSL ES版本3.00编写的着色器程序的第一行。如果省略此行,则该着色器将被视为目标版本1.00。
因此,我尝试在我的着色器开头添加这个声明,但结果只会导致错误:由.glGetProgramInfoLog报告的无效顶点着色器链接失败。如果我删除带有“#version 300 gl”声明的第一行,则着色器将编译并正常工作。
这是我的顶点着色器代码:
我还在顶点着色器和片元着色器中添加了版本声明,但仍然收到相同的错误。我在GLSurfaceView中调用了setEGLContextClientVersion(3),并在清单中添加了,以指示应用程序需要OpenGL ES 3.0。我是否错误地阅读了OpenGL ES文档,不需要添加此版本声明?如果需要添加它,为什么总是导致错误?
“#version 300 es” 必须出现在使用GLSL ES版本3.00编写的着色器程序的第一行。如果省略此行,则该着色器将被视为目标版本1.00。
因此,我尝试在我的着色器开头添加这个声明,但结果只会导致错误:由.glGetProgramInfoLog报告的无效顶点着色器链接失败。如果我删除带有“#version 300 gl”声明的第一行,则着色器将编译并正常工作。
这是我的顶点着色器代码:
private final String vertexShaderCode =
"#version 300 es \n" +
"uniform mat4 uMVPMatrix; \n" +
"attribute vec2 a_TexCoordinate; \n" +
"attribute vec4 vPosition; \n" +
"varying vec2 v_TexCoordinate; \n" +
"void main() { \n" +
" v_TexCoordinate = a_TexCoordinate; \n" +
" gl_Position = uMVPMatrix * vPosition; \n" +
"} \n";
我还在顶点着色器和片元着色器中添加了版本声明,但仍然收到相同的错误。我在GLSurfaceView中调用了setEGLContextClientVersion(3),并在清单中添加了,以指示应用程序需要OpenGL ES 3.0。我是否错误地阅读了OpenGL ES文档,不需要添加此版本声明?如果需要添加它,为什么总是导致错误?