Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QQuickFramebufferObject with external OpenGL in Qt6



  • Hi Friends,
    It looks like QQuickFramebufferObject is broken in Qt6. I have followed the changes required in documentation with no success. I have a working OCCT OpenGL viewer as a Quick Item in Qt 5.15.2 based on QQuickFramebufferObject. To port it to Qt6 I have tried:

        QCoreApplication::setAttribute (Qt::AA_UseDesktopOpenGL);    
        QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
        QQuickWindow::setSceneGraphBackend("opengl");
    

    I have removed window()->setClearBeforeRendering(false); from the Item as this method was removed in Qt6.

    I have removed window()->resetOpenGLState(); from the render as this method was removed in Qt6.

    All methods of the Renderer are correctly called, but nothing is rendered on the Qml Scene.

    Any help will be appreciated.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Which release are you testing your port with ?
    On which OS ?

    Can you provide a minimal compilable example that shows your issue ?



  • Hi @SGaist ,
    Thank you. My current unreleased app uses Qt5.15.2, on Linux 64bits. I am trying to port it to Qt6 in advance, so i will not start with an already legacy Qt version. The current app uses QQuickFramebufferObject to embed an OpenCascade View in Qml, it works well with Qt5.15.2 but I failed to port it to Qt6. As a workaround I ditched the QQuickFramebufferObject and now i am using the classical beforeRendering/beforeRenderPassRecording on a QQuickItem derived class and it works.


  • Qt Champions 2018

    Hi this might be due to the new Qt RHI, an abstraction over OpenGL, Vulkan, Metal, DirectX (might have forgotten some or mentioned some that shouldn't be).

    Qt Quick will no longer be speaking directly to OpenGL but there will be an abstraction on top of it to ensure compatility with other graphical stacks.

    You will get more info about this by googling around or watching this webinar : https://www.youtube.com/watch?v=eInD6H4XrpM


Log in to reply