不支持GLSL 3.30;使用未编译的着色器进行链接; OpenGL

时间:2015-01-28 11:52:29

标签: c++ opengl

此代码告诉GLSL 3.30 is not supported

void GLSLShader :: LoadFromString(GLenum type,const string& source){
    GLuint shader = glCreateShader(type);

const char * ptmp = source.c_str();
glShaderSource (shader, 1, &ptmp, NULL);

//check whether the shader loads fine
GLint status;
glCompileShader (shader);
glGetShaderiv (shader, GL_COMPILE_STATUS, &status);
if (status == GL_FALSE) {
    GLint infoLogLength;        
    glGetShaderiv (shader, GL_INFO_LOG_LENGTH, &infoLogLength);
    GLchar *infoLog= new GLchar[infoLogLength];
    glGetShaderInfoLog (shader, infoLogLength, NULL, infoLog);
    cerr<<"Compile log: "<<infoLog<<endl;
    delete [] infoLog;
}
_shaders[_totalShaders++]=shader;

}

这是glxinfo | grep OpenGL

的结果
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Desktop 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.5.0-devel (git-6ee5eff 2015-01-28 trusty-oibaf-ppa)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.5.0-devel (git-6ee5eff 2015-01-28 trusty-oibaf-ppa)
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.5.0-devel (git-6ee5eff 2015-01-28 trusty-oibaf-ppa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

我使用的是ubuntu 14.04,C ++和QtCreator

代码的某些部分告诉Linking with uncompiled shader 如何启用GLSL3.0或我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用Qt创建GL Widget时可以设置OpenGL上下文:

QGLFormat glFormat;
glFormat.setVersion( 3, 3 );
glFormat.setProfile( QGLFormat::CoreProfile );
glFormat.setSampleBuffers( true );

GLWidget w( glFormat );