[Interest] Divining the opengl versions available

Boudewijn Rempt boud at valdyas.org
Tue May 17 20:16:13 CEST 2016


This seems to work! I'm testing on a bunch of system, but it looks
like I'll be able to use this, thanks!

Boudewijn

On Tue, 17 May 2016, Andy wrote:

> FWIW here's how I'm doing it.
> 
> I set the default format at startup with my requested format:
> 
>    void  initOpenGL()
>    {
>       QSurfaceFormat format;
> 
>       format.setVersion( 3, 3 );
>       format.setProfile( QSurfaceFormat::CoreProfile );
> 
>       format.setDepthBufferSize( 24 );
>       format.setSamples( 4 );
>       format.setStencilBufferSize( 8 );
> 
>       QSurfaceFormat::setDefaultFormat( format );
>    }
> 
> Then I call this to dump some info so I know what I'm getting:
> 
>    void  openGLInfo()
>    {
>       // we need a QSurface active to get our GL functions from the context
>       QWindow  surface;
>       surface.setSurfaceType( QSurface::OpenGLSurface );
>       surface.create();
> 
>       QOpenGLContext context;
>       context.create();
>       context.makeCurrent( &surface );
> 
>       QOpenGLFunctions  *funcs = context.functions();
>       funcs->initializeOpenGLFunctions();
> 
>       qInfo() << "OpenGL Info";
>       qInfo() << "  Vendor: " << reinterpret_cast<const char *>(funcs->glGetString( GL_VENDOR ));
>       qInfo() << "  Renderer: " << reinterpret_cast<const char *>(funcs->glGetString( GL_RENDERER ));
>       qInfo() << "  Version: " << reinterpret_cast<const char *>(funcs->glGetString( GL_VERSION ));
>       qInfo() << "  Shading language: " << reinterpret_cast<const char *>(funcs->glGetString( GL_SHADING_LANGUAGE_VERSION
> ));
>       qInfo() << "  Requested format: " << QSurfaceFormat::defaultFormat();
>       qInfo() << "  Current format:   " << context.format();
>    }
> 
> Which gives me something like this:
> 
> OpenGL Info
>   Vendor:  NVIDIA Corporation
>   Renderer:  NVIDIA GeForce GTX 780M OpenGL Engine
>   Version:  4.1 NVIDIA-10.4.2 310.41.35f01
>   Shading language:  4.10
>   Requested format:  QSurfaceFormat(version 3.3, options QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize
> -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples 4, swapBehavior 0, swapInterval 1, profile  1)
>   Current format:    QSurfaceFormat(version 4.1, options QFlags(), depthBufferSize 24, redBufferSize 8, greenBufferSize
> 8, blueBufferSize 8, alphaBufferSize -1, stencilBufferSize 8, samples 4, swapBehavior 2, swapInterval 1, profile  1)
> 
> 
> (Note: This only gives me a 3.0 context on VMware Fusion 8.1 running Windows 7 - should support 3.3 - so maybe I'm doing
> something wrong?)
> 
> If anyone has any suggestions for improvement it would be most welcome!
> 
> 
> ---
> Andy Maloney  //  https://asmaloney.com
> twitter ~ @asmaloney
> 
> 
> On Tue, May 17, 2016 at 4:05 AM, Giuseppe D'Angelo <dangelog at gmail.com> wrote:
>       On Tue, May 17, 2016 at 9:59 AM, Boudewijn Rempt <boud at valdyas.org> wrote:
>       > Hm... But when I tried that with a nonsense version, say 9.9, I
>       > got 9.9 back. Maybe I made a mistake, though. I copied the functions
>       > check approach from the tesselation example from KDab's website...
>
>       Did you _create_ the context or just set a format and asked for it
>       back immediately?
>
>       Using the functions for just testing whether you've got a certain GL
>       version seems to me to be doing it the other way around. Then, sure,
>       once you're happy with the version you need to grab them and use them.
>
>       --
>       Giuseppe D'Angelo
>       _______________________________________________
>       Interest mailing list
>       Interest at qt-project.org
>       http://lists.qt-project.org/mailman/listinfo/interest
> 
> 
> 
>

-- 
Boudewijn Rempt | http://www.krita.org, http://www.valdyas.org


More information about the Interest mailing list