Qt5 Multisampling using QOpenGLFrameBufferObject



  • I need to perform multisampling in a Qt5 project but I am not sure how to use "QOpenGLFrameBufferObject":http://http://qt-project.org/doc/qt-5.0/qopenglframebufferobject.html to perform it. There is no example on how to do this as far as I searched and the documentation only mentions: "If you want to use a framebuffer object with multisampling enabled as a texture, you first need to copy from it to a regular framebuffer object using QOpenGLContext::blitFramebuffer()." My code currently looks like this:
    @//Enable FSAA for better output
    int vp[4];
    glGetIntegerv(GL_VIEWPORT, vp);
    if(m_lpFBO == NULL)
    {
    //MultiSampling set to 4 now
    QOpenGLFramebufferObjectFormat format;
    format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
    format.setMipmap(true);
    format.setSamples(4);
    format.setTextureTarget(GL_TEXTURE_2D);
    format.setInternalTextureFormat(GL_RGBA32F_ARB);

        //Create the FBO
        m_lpFBO = new QOpenGLFramebufferObject(vp[2], vp[3], format);
        m_lpFBOSurface = new QGLFramebufferObjectSurface(m_lpFBO);
    }
    
    QRect rc(0, 0, vp[2], vp[3]);
    QGLSubsurface sub(lpPainter->currentSurface(), rc);
    
    
    m_lpFBO->bind();
    sub.setFramebufferObject(m_lpFBO);
    lpPainter->pushSurface(&sub);
    
    //Draw as usual
    .
    . 
    .
    
    lpPainter->popSurface();
    
    
    //Now Copy
    QOpenGLFramebufferObject::blitFramebuffer(lpPainter->currentSurface()->framebufferObject(), rc, m_lpFBO, rc);
    

    @

    I am using Qt5 alpha and my development system is a Macbook pro with AMD 6600 GPU.

    Thanks


Log in to reply
 

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