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

QtQuick Offscreen Rendering - Define "Master Item" to Trigger Scene Graph Rendering



  • Hi,

    I have a window that holds multiple child items in qml. The whole setup is used for video processing where one of the window´s child items is responsible for providing a video frame and other items render scene specific overlays on top of the video image. I do not render the scene onto the screen but into a framebuffer object (no vsync signal from the graphics driver to sync to). The whole scene should only be repainted on an update() signal from the video item (signals from other items should be ignored but changes of their properties should be taken into account when the scene is rendered).

    For live mode I do not have to worry about the updates since I can sync with the vsync signal of my graphics card.

    When offscreen rendering is enabled, I get a repaint for each update signal fired by any of the items in the window.

    E.g.

    Window {
        Video {
         // This custom item provides the video frames that contain a football.
        }
    
        Rectangle {
        // This item provides a rectangle that acts as a bounding box for the football
        }
    
    }
    

    If both Rectangle and Video perform updates with 60Hz, I´ll get 120 scene updates into the FBO, although I only want to paint the new video image with the correspoinding updated rectangle coordinate once per video input frame.

    How can I use the video signal as some kind of "master" signal and only trigger a repaint on video updates while changes of properties of the other Items are taken into account when the scene graph is rendered?

    Thanks


Log in to reply