GLSL:"无效调用未声明的标识符'texture2D'"

14

我正在使用 Swift 和 OpenGL 3.2,同时在 Mac 上使用 XCode 6.1 Beta。我想这可能是导致错误的最可能原因,因为我找不到任何证据表明这个不支持。

但是,在编译期间,这个片段着色器会导致错误:Invalid call of undeclared identifier 'texture2D'

#version 150

uniform sampler2D usTexture;

in vec2 vTextureCoord;

out vec4 FragColor;

void main() {
  vec4 color = texture2D(usTexture, vTextureCoord);
  FragColor = color;
}
1个回答

37

天啊,刚发布问题就终于找到了答案。texture2D已被texture替代。


4
注意,在 OS X 上,#version 150 只能表示 #version 150 core。在其他实现兼容性配置文件的平台上,如果你写了 #version 150 compatibility,你可以继续使用 GLSL 1.30 开始被弃用的东西,比如 texture2D。虽然你真的不想这样做,但值得一提 ;) - Andon M. Coleman
好的,知道了!谢谢。 - Grumdrig
那么使用 #version 330 的人怎么办呢?我正在使用它,用 'texture' 替换 'texture2D' 并不能解决问题。我该怎么做呢? - Light Yagami

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接