diff --git a/src/fluency/rendering/pygfx_renderer.py b/src/fluency/rendering/pygfx_renderer.py index 1e620be..7df1df4 100644 --- a/src/fluency/rendering/pygfx_renderer.py +++ b/src/fluency/rendering/pygfx_renderer.py @@ -92,10 +92,10 @@ class PygfxRenderer(Renderer): """Initialize pygfx with Qt widget.""" try: import pygfx as gfx - from rendercanvas.qt import RenderCanvas + from rendercanvas.qt import RenderWidget from PySide6.QtWidgets import QVBoxLayout - self._canvas = RenderCanvas(parent=parent_widget) + self._canvas = RenderWidget(parent=parent_widget) self._renderer = gfx.renderers.WgpuRenderer(self._canvas) self._scene = gfx.Scene() @@ -112,6 +112,8 @@ class PygfxRenderer(Renderer): layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._canvas) + self._canvas.request_draw(self._animate) + self._setup_picking() self._initialized = True @@ -124,6 +126,11 @@ class PygfxRenderer(Renderer): traceback.print_exc() return False + def _animate(self): + """Animation callback for the canvas.""" + if self._initialized: + self._renderer.render(self._scene, self._camera) + def _setup_lighting(self) -> None: """Setup scene lighting.""" import pygfx as gfx @@ -394,7 +401,6 @@ class PygfxRenderer(Renderer): def render(self) -> None: """Trigger a render.""" if self._initialized: - self._renderer.render(self._scene, self._camera) self._canvas.request_draw() def on_pick(self, callback: Callable[[Any], None]) -> None: