GLAD,扩展未加载

时间:2017-12-27 17:57:25

标签: opengl glsl opengl-extensions

当我尝试运行GLSL3.3着色器时,我的应用程序向我发送了此消息

kmeans

所以我回去并将所述扩展添加到GLAD生成器: 你可以在下面看到我的选择!
http://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_ARB_explicit_uniform_location

之后,我将我的glad.c和glad.h文件复制粘贴回我的文件并编译......令我惊讶的是,我得到了同样的错误! (没有包含KHR.h文件)

我做错了什么?

1 个答案:

答案 0 :(得分:5)

这与GLAD无关。它与扩展在GLSL中的工作方式有关。

在OpenGL中,扩展只是存在;无论您是否明确使用它们,您的实现都会提供它们并且它们具有效果。无论您是否使用扩展加载器,实现仍然提供其功能。

但在GLSL中,这不是它的工作原理。当您说#version 330 core时,您说的是以下文本形式为OpenGL着色语言,如规范版本3.30所定义。完全和那种语言。

GLSL 3.30不允许在着色器中指定统一的位置。为此,您必须使用GLSL版本4.30或ARB_explicit_uniform_location扩展名。

在GLSL中,扩展只适用于明确要求的语言。由于您没有要求ARB_explicit_uniform_location扩展,因此其语法更改不适用于您的着色器。因此编译错误。

如果您希望着色器使用扩展程序,则必须specify it explicitly with a #extension declaration

#extension GL_ARB_explicit_uniform_location : require

这应该在您的#version声明之后,但之前任何实际的GLSL文本。