Search code examples
openglqt5multisampling

How do I enable multisampling (antialiasing) in OpenGL with Qt5?


How do I enable multisampling when I create the window? How should I initialize OpenGL to match?


Solution

  • Took me a while to figure this one out.

    The trick is to use a QSurfaceFormat in your QWindow's constructor like so:

    setSurfaceType(QWindow::OpenGLSurface);
    QSurfaceFormat format;
    format.setSamples(4);    // Set the number of samples used for multisampling
    setFormat(format);       // Note we set the format on the window...
    create();                // Create the window
    
    context = new QOpenGLContext(this);
    context->setFormat(format);    // ...and set the format on the context too
    context->create();
    

    And later, when initialising OpenGL:

    glEnable(GL_MULTISAMPLE);    // This seems to be the default given the configuration above, but just in case that's not universal...