我的程序有QT设置,想要使用glsl版本"核心330"着色器。 我的GLWidget是一个QOpenGLWidget对象。 创建我的小部件后,我运行以下代码:
glWidget = new GLWidget;
QSurfaceFormat format;
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setVersion(3, 3);
format.setProfile(QSurfaceFormat::CoreProfile);
glWidget->setFormat(format);
QSurfaceFormat::setDefaultFormat(format);
现在我的问题是,如何为以下着色器启用现代GLSL:
#version 330 core
layout(location = 0) in vec3 vertex;
layout(location = 1) in vec2 uvs;
out vec2 uv;
void main(){
uv = uvs;
gl_Position = vec4(vertex,1.0);
}
我在StackOverflow中搜索并使用了Google,但我无法找到合适的解释。
感谢您的帮助。
修改 其他信息:
编辑#2 我使用以下代码创建着色器:
vertexShader = new QOpenGLShader(QOpenGLShader :: Vertex); std :: string str = ReadFile(" ./ Shader / VidIt / videoShow.vert");
vertexShader->compileSourceCode(str.c_str());
fragmentShader = new QOpenGLShader(QOpenGLShader::Fragment);
str = ReadFile("./Shader/VidIt/videoShow.frag");
vertexShader->compileSourceCode(str.c_str());
program = new QOpenGLShaderProgram();
program->addShader(vertexShader);
program->addShader(fragmentShader);
program->link();
这段代码虽然没有编译我的着色器,但我得到以下编译错误:
QOpenGLShader :: compile(Vertex):ERROR:0:2:'核心' :无效版本 指令
任何想法如何解决这个问题?