Thanks Sean. That was my initial thought too, but in order to create the context to check the results, I need an application. But if I set the default after I create the application I get a warning:
Warning: Setting a new default format with a different version or profile after the global shared context is created may cause issues with context sharing. (qsurfaceformat.cpp:836, static void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &)) (Which is what it says in the docs for QSurfaceFormat::setDefaultFormat()) Hence the catch-22. The problem is actually stranger - if I request with 8 samples: OpenGL Info Vendor: VMware, Inc. Renderer: SVGA3D; build: RELEASE; LLVM; Version: 3.0 Mesa 17.2.0 (git-8cfea49610) Shading language: 1.30 Requested: (v3.3 [core], depthBufferSize 24, stencilBufferSize -1, rgba BufferSizes (-1, -1, -1, -1 ), samples 8, swapBehavior 0, swapInterval 1) Current: (v3.0 [none], depthBufferSize 24, stencilBufferSize 8, rgba BufferSizes (8, 8, 8, 8 ), samples -1, swapBehavior 2, swapInterval 1) If I request without setSamples(): OpenGL Info Vendor: VMware, Inc. Renderer: SVGA3D; build: RELEASE; LLVM; Version: 3.3 (Core Profile) Mesa 17.2.0 (git-8cfea49610) Shading language: 3.30 Requested: (v3.3 [core], depthBufferSize 24, stencilBufferSize -1, rgba BufferSizes (-1, -1, -1, -1 ), samples -1, swapBehavior 0, swapInterval 1) Current: (v3.3 [core], depthBufferSize 24, stencilBufferSize 8, rgba BufferSizes (8, 8, 8, 8 ), samples 0, swapBehavior 2, swapInterval 1) I would have expected the first case to return "0" samples like the second one - it properly adjusts everything else like the buffer sizes and swap behaviour. --- Andy Maloney // https://asmaloney.com twitter ~ @asmaloney <https://twitter.com/asmaloney> On Wed, Sep 19, 2018 at 4:28 AM Sean Harmer <s...@theharmers.co.uk> wrote: > Hi Andy, > > In your main, set up the desired QSurfaceFormat, use it to try to create a > context, and check the results. If that works great, destroy it and carry > on with that as the default surface format. Otherwise, drop down a level > and try again until you find a surface format that works. > > Cheers, > > Sean > > On 17/09/2018 17:57, Andy wrote: > > I seem to have a catch-22. > > - QSurfaceFormat::setDefaultFormat() needs to be called before application > construction. > > - I want multisampling on a 3.3 context by default, so I need to call > QSurfaceFormat::setSamples(). > > - I can't know how many samples are supported until after application > construction by actually creating a context and asking how many it > supports. (Or can I somehow?) > > - If I just setSamples() to the number I want (8) and call > setDefaultFormat, then any card/driver that doesn't support that many > samples fails to be created and I end up with a 2.0 default context. > > Any ideas? > > --- > Andy Maloney // https://asmaloney.com > twitter ~ @asmaloney <https://twitter.com/asmaloney> > > > > _______________________________________________ > Interest mailing > listInterest@qt-project.orghttp://lists.qt-project.org/mailman/listinfo/interest > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest