- 
    
Task
 - 
    Resolution: Done
 - 
    
P2: Important
 - 
    None
 - 
    5.11
 
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
- relates to
 - 
                    
        
        QT3DS-2981
        Support customer project B
    
-         
 - Closed
 
 -         
 - 
                    
QTBUG-72923 Scene3D does not stop processing even when visible property is set to false
-         
 - Closed
 
 -         
 - 
                    
QTBUG-70035 Qt 3D renderer design not suitable for proper Qt Quick integration
-         
 - Open
 
 -         
 - 
                    
        
        QT3DS-660
        Qt 3D bugs and features required for Runtime 2
    
-         
 - Withdrawn
 
 -