Calls store.commitFrame() once per rendered R3F frame, however many
components call this hook for the same store, and invalidates the canvas
when the store or the scene changes, so frameloop="demand" renders the
change. Use it inside a <Canvas>; <FastMesh> calls it, so an app that
draws through <FastMesh> needs no other driver. Do not also call
store.commitFrame() yourself.
The first frame switches the store to frame flushing (declarative changes
wait for the next frame); when the store's last driver unmounts, the store
goes back to flushing them on a microtask.
Calls
store.commitFrame()once per rendered R3F frame, however many components call this hook for the same store, and invalidates the canvas when the store or the scene changes, soframeloop="demand"renders the change. Use it inside a<Canvas>;<FastMesh>calls it, so an app that draws through<FastMesh>needs no other driver. Do not also callstore.commitFrame()yourself.The first frame switches the store to frame flushing (declarative changes wait for the next frame); when the store's last driver unmounts, the store goes back to flushing them on a microtask.