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 <dange...@gmail.com> wrote:
On Tue, May 17, 2016 at 9:59 AM, Boudewijn Rempt <b...@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@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
--
Boudewijn Rempt | http://www.krita.org, http://www.valdyas.org
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest