错误:0:10:无效的未声明的标识符'texture2D'的调用

时间:2018-10-05 12:13:50

标签: macos opengl shader fragment-shader

我正在使用Mac,在OpenGL中,我正在做纹理作业。

当我尝试执行文件时,在终端中出现一个空白(黑色)窗口,并显示以下错误消息:

Compile failure in the fragment shader:
ERROR: 0:10: Invalid call of undeclared identifier 'texture2D'

image of terminal

这是我的片段着色器文件06_fshader.glsl中的代码:

#version 330


out vec4 frag_color;

uniform sampler2D texture;
in vec2 tex;
void main () 
{
      frag_color = texture2D(texture, tex);     
}

我知道这里有类似的问题:GLSL: "Invalid call of undeclared identifier 'texture2D'",但这对我不起作用。

1 个答案:

答案 0 :(得分:3)

代码有两个问题。如所链接的问题所述,第一个是texture2D已替换为texture

第二个问题是,已经有一个名为texture的统一名称,在尝试调用texture(该方法)时会导致命名冲突。这可以通过重命名制服来解决。

最终的着色器应如下所示:

#version 330

out vec4 frag_color;

uniform sampler2D mytexture;
in vec2 tex;
void main () 
{
      frag_color = texture(mytexture, tex);     
}