Optimizing the Render Loop

For optimal performance, consider these strategies:

// Conditional rendering - only render when needed
let needsToRender = true;

engine.runRenderLoop(() => {
    if (needsToRender) {
        scene.render();
    }
});

// Pause rendering when tab is inactive
document.addEventListener('visibilitychange', () => {
    if (document.hidden) {
        engine.stopRenderLoop();
    } else {
        engine.runRenderLoop(() => scene.render());
    }
});

// Adaptive quality based on performance
engine.runRenderLoop(() => {
    const currentFps = engine.getFps();
    
    if (currentFps < 30) {
        // Reduce quality to maintain performance
        reduceSceneComplexity();
    }
    
    scene.render();
});