我正在使用Mac,在OpenGL中,我正在做纹理作业。
当我尝试执行文件时,在终端中出现一个空白(黑色)窗口,并显示以下错误消息:
Compile failure in the fragment shader:
ERROR: 0:10: Invalid call of undeclared identifier 'texture2D'
这是我的片段着色器文件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'",但这对我不起作用。
答案 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);
}