【发布时间】:2018-10-05 12:13:50
【问题描述】:
我正在使用 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'",但它对我不起作用。
【问题讨论】:
-
你改成
texture(...)是什么意思? -
它说:片段着色器中的编译失败:错误:0:10:“纹理”调用无效(不是函数或子程序统一)
-
是的,那是因为您将制服称为
texture,现在发生了名称冲突。重命名制服,它应该可以工作。 -
不管你选择哪个名字。只要不是质感。例如使用
uniform texture2D mytexture;和... = texture(mytexture, tex)。简而言之:永远不要用 glsl 方法名命名变量。 -
对不起。
uniform sampler2D mytexture.
标签: macos opengl shader fragment-shader