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

      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
      

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

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

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes