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

Gru*_*rig 9 opengl macos glsl opengl-3

我在Mac上,使用Swift,并使用OpenGL 3.2.我也在使用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;
}
Run Code Online (Sandbox Code Playgroud)

Gru*_*rig 30

Cripes.最后在我发布问题后找到了答案.texture2D已被取代texture.

  • 是的,要知道在OS X上`#version 150`只能表示`#version 150 core`.在其他实现了兼容性配置文件的平台上,如果你编写`#version 150 compatibility`,你可以继续使用从GLSL 1.30开始不推荐使用的东西,比如`texture2D`.你真的不想那样,但值得一提;) (3认同)