Opengl es Open 3.0中的片段着色器编译错误

Opengl es Open 3.0中的片段着色器编译错误,opengl-es,fragment-shader,Opengl Es,Fragment Shader,我的片段着色器中出现以下错误: 编译日志:错误:0:7:“纹理”:语法错误:语法错误 着色器的编写方式如下: #version 300 es in mediump vec2 texCoord; out mediump vec4 fColor; uniform sampler texture; void main(void) { fColor = texture(texture, texCoord); } 为什么会出现错误?纹理现在是GLSL 3.00中的保留字,您需要更改名称

我的片段着色器中出现以下错误:

编译日志:错误:0:7:“纹理”:语法错误:语法错误

着色器的编写方式如下:

#version 300 es

in mediump vec2 texCoord;

out mediump vec4 fColor;

uniform sampler texture;

void main(void) {

    fColor = texture(texture, texCoord);
}
为什么会出现错误?

纹理现在是GLSL 3.00中的保留字,您需要更改名称


你犯了两个错误。首先,纹理是一个关键字,所以不能将其用作变量名。其次,采样器在OpenGL ES中不作为数据类型存在;您需要特定的子类型,例如sampler2D

工作着色器是:

#version 300 es

in mediump vec2 texCoord;
out mediump vec4 fColor;
uniform sampler2D myTexture;

void main(void) {
    fColor = texture(myTexture, texCoord);
}

你的意思是:fColor=texture2Dtexture,texCoord?显然,texture2d在glsl 3.0“myTexture”中已更改:语法错误:语法错误“任何变量名都会导致相同的错误。我从2014年的SIGGRAPH视频中得到了这段代码,该视频是在对GLSL3.0进行更改之后,在阅读了关于纹理保留的工作内容之后发布的。好吧,也许不是唯一的更改,我只是碰巧注意到了这一点,可能还有更多,但这是一个微不足道的着色器。你还能看到什么吗?可以安全地说,任何不正确的内容都只限于此代码吗?