庆幸,扩展没有被加载
我的应用程序给我发了这条消息时,我试图运行GLSL3.3着色器庆幸,扩展没有被加载
#version 330 layout(location = 0) in vec2 position;
layout(location = 1) uniform float TimeUniform = 0.0f;
out float TimeUniformFrag;
void main() {
gl_Position = vec4(position.x - 1.0f, position.y - 1.0f, 0.0f, 1.0f);
TimeUniformFrag = TimeUniform;
}
...
Vertex Shader: 0:3(1): error: uniform explicit location requires GL_ARB_explicit_uniform_location and either GL_ARB_explicit_attrib_location or GLSL 3.30.
等我回去,并添加所述扩展到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文件)
我在做什么错?
回答:
这与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文本。
以上是 庆幸,扩展没有被加载 的全部内容, 来源链接: utcz.com/qa/266759.html