Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-69985

Scene3D (and Studio3D) needs a way to determine if the Qt 3D scene changes

    XMLWordPrintable

Details

    Description

      The way Scene3D (and all similar solutions like Studio3D or even the upcoming future Studio3DEngine+Layer3D combo) works is highly not ideal for 3D scenes that are not constantly changing.

      Marking the node as dirty and scheduling a Quick re-render by calling QQuickWindow::update() on each and every frame (this is hooked up to QQuickWindow::beforeRendering) is wasteful (performance, power) and is not acceptable to some customers. Qt Quick itself does not have this problem: if nothing changes in the Qt Quick scene (e.g. all animations stop) the render loop will not render anything.

      So Scene3DRenderer::render() (and all similar solutions in Studio3D and elsewhere) would need a way to tell if rendering needs to be done:

      if (renderAspectPrivate->needsRender()) {
          // ... set up fbo, call renderSynchronous, etc.
          node->markDirty(DirtyMaterial);
          m_window->update();
      }
      // else do nothing, no dirty, no update
      

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-69985
          # Subject Branch Project Status CR V

          Activity

            People

              zakalawe James Turner
              lagocs Laszlo Agocs
              Votes:
              10 Vote for this issue
              Watchers:
              20 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes