don't require SwapChain to be passed to viewer.render - this will just render into all registered swapchains
This commit is contained in:
@@ -203,8 +203,8 @@ abstract class FilamentApp<T> {
|
||||
///
|
||||
///
|
||||
///
|
||||
Future setMaterialInstanceAt(
|
||||
ThermionEntity entity, int primitiveIndex, MaterialInstance materialInstance);
|
||||
Future setMaterialInstanceAt(ThermionEntity entity, int primitiveIndex,
|
||||
MaterialInstance materialInstance);
|
||||
|
||||
///
|
||||
///
|
||||
@@ -216,6 +216,11 @@ abstract class FilamentApp<T> {
|
||||
///
|
||||
Future unregister(covariant SwapChain swapChain, covariant View view);
|
||||
|
||||
///
|
||||
///
|
||||
///
|
||||
Future<Iterable<SwapChain>> getSwapChains();
|
||||
|
||||
///
|
||||
///
|
||||
///
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
///
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user