GLSL:“未声明的标识符‘texture2D’的无效调用”

Posted

技术标签:

【中文标题】GLSL:“未声明的标识符‘texture2D’的无效调用”【英文标题】:GLSL: "Invalid call of undeclared identifier 'texture2D'" 【发布时间】:2014-12-03 15:53:38 【问题描述】:

我在 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;

【问题讨论】:

【参考方案1】:

绉纱。在我发布问题后终于找到了答案。 texture2D 已替换为 texture

【讨论】:

是的,请注意在 OS X 上 #version 150 只能表示 #version 150 core。在实现了兼容性配置文件的其他平台上,如果您编写 #version 150 compatibility,您可以继续使用从 GLSL 1.30 开始不推荐使用的东西,例如 texture2D。你真的不想这样,但值得一提;) 很高兴知道!谢谢。 使用#version 330 的人怎么样。我正在使用它并用'texture'替换'texture2D'并不能解决问题。我该怎么办?

以上是关于GLSL:“未声明的标识符‘texture2D’的无效调用”的主要内容,如果未能解决你的问题,请参考以下文章

我的OpenGL学习进阶之旅如何抽取着色器代码到assets目录下的GLSL文件,以及如何通过Java或者C++代码来加载着GLSL文件?

在 webgl 中调试 GLSL 代码

如何向GLSL中传入多个纹理

转载OpenGL超级宝典笔记——GLSL语言基础

GLSL编辑工具[关闭]

openGL之API学习(一七七)opengl gles glsl glsl es版本对应关系