don't require SwapChain to be passed to viewer.render - this will just render into all registered swapchains

This commit is contained in:
Nick Fisher
2025-06-24 10:36:10 +08:00
parent c7d4d9cb33
commit d20ff0a6f1
4 changed files with 33 additions and 33 deletions

View File

@@ -123,25 +123,29 @@ class ThermionViewerFFI extends ThermionViewer {
///
///
@override
Future render(SwapChain swapchain) async {
await withBoolCallback(
(cb) => Renderer_beginFrameRenderThread(
app.renderer,
(swapchain as FFISwapChain).swapChain,
0.toBigInt,
cb,
),
);
Future render() async {
final swapChains =
await (FilamentApp.instance as FFIFilamentApp).getSwapChains();
for (final swapChain in swapChains) {
await withBoolCallback(
(cb) => Renderer_beginFrameRenderThread(
app.renderer,
swapChain.getNativeHandle(),
0.toBigInt,
cb,
),
);
await withVoidCallback(
(requestId, cb) =>
Renderer_renderRenderThread(app.renderer, view.view, requestId, cb),
);
await withVoidCallback(
(requestId, cb) =>
Renderer_endFrameRenderThread(app.renderer, requestId, cb),
);
await FilamentApp.instance!.flush();
await withVoidCallback(
(requestId, cb) =>
Renderer_renderRenderThread(app.renderer, view.view, requestId, cb),
);
await withVoidCallback(
(requestId, cb) =>
Renderer_endFrameRenderThread(app.renderer, requestId, cb),
);
await FilamentApp.instance!.flush();
}
}
double _msPerFrame = 1000.0 / 60.0;

View File

@@ -39,9 +39,9 @@ abstract class ThermionViewer {
Future setRendering(bool render);
///
/// Render a single frame immediately.
/// Render a single frame immediately into all registered swapchains.
///
Future render(SwapChain swapChain);
Future render();
///
///