[solved] Select an OpenGL 4 context on Mac OSX Maverick

  • Hi all,

    since some weeks I have troubles to select an OpenGL 4 context on Mac OSX 10.9 with QT when porting a cross plattform application. The format is set in the constructor of the main Window as shown in the following source:

    @QGLFormat glFormat;
    glFormat.setProfile( QGLFormat::CoreProfile );
    glFormat.setVersion( 4, 1 );

    glWidget = new GLWidget(_pathToEarthFile,glFormat);

    QGLContext* glContext = (QGLContext *) glWidget->context();

    Later on, I do the version output the following:

    @std::cout << "Widget OpenGl: " << glContext->format().majorVersion() << "." << glContext->format().minorVersion() << std::endl;
    std::cout << "Context valid: " << glContext->isValid() << std::endl;
    std::cout << "Really used OpenGl: " << glContext->format().majorVersion() << "." << glContext->format().minorVersion() << std::endl;
    std::cout << "OpenGl information: " << std::endl;
    std::cout << "VENDOR: " << (const char*)glGetString(GL_VENDOR) << std::endl;
    std::cout << "RENDERDER: " << (const char*)glGetString(GL_RENDERER) << std::endl;
    std::cout << "VERSION: " << (const char*)glGetString(GL_VERSION) << std::endl;
    std::cout << "GLSL VERSION: " << (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl;

    qDebug() << "OpenGLVersionFlags(): " << QGLFormat::OpenGLVersionFlags();

    if((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_3_2) == 0)
    std::cout << "GL 3.2 Not supported" << std::endl;

    and I get the following output:

    @Widget OpenGl: 1.0
    Context valid: 1
    Really used OpenGl: 1.0
    OpenGl information:
    VENDOR: ATI Technologies Inc.
    RENDERDER: ATI Radeon HD 5770 OpenGL Engine
    VERSION: 2.1 ATI-1.14.21
    GLSL VERSION: 1.20
    OpenGLVersionFlags(): QFlags()
    GL 3.2 Not supported @

    What I know:

    • My mac and the graphics card support 4.1, because the OpenGL Extension Viewer shows the 4.1. core profile.
    • It does not depend what version I use in glFormat.setVersion, the output is always 1.0 for the qt context.
    • sourcecode compiles with OpenGL 4.1 calls, which means, that the right OpenGL Framework is available while compilation (I included the OpenGL.framework in Xcode 5.01).
    • shaders do not compile with version 410 or something else higher than 120.

    Before christmas I tracked this down to the fact, that there was a wrong header included and that there is a fix in QT 5.2 beta. From then on I used the QT 5.2 build.

    Has anyone experienced the same issues or did anyone got a similar example running without objective-c and without using another windowing system? I also thought, that it must be possible to reset the GL_VERSION in OpenGL anyhow, but this depends on the windowing system, doesn't it?

    Cheers and thanks for the support!

  • Hi all,

    this is solved. Did not find the valid QT 5.2. packages in cmake, but it is working now.


Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.