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文件?