add flush() method on FilamentApp
This commit is contained in:
@@ -261,14 +261,12 @@ abstract class FilamentApp<T> {
|
|||||||
///
|
///
|
||||||
/// Pixel buffers will be returned in RGBA float32 format.
|
/// Pixel buffers will be returned in RGBA float32 format.
|
||||||
///
|
///
|
||||||
Future<List<(View,Uint8List)>> capture(covariant SwapChain swapChain,
|
Future<List<(View, Uint8List)>> capture(covariant SwapChain swapChain,
|
||||||
{
|
{covariant View? view,
|
||||||
covariant View? view,
|
|
||||||
bool captureRenderTarget = false,
|
bool captureRenderTarget = false,
|
||||||
PixelDataFormat pixelDataFormat = PixelDataFormat.RGBA,
|
PixelDataFormat pixelDataFormat = PixelDataFormat.RGBA,
|
||||||
PixelDataType pixelDataType = PixelDataType.UBYTE,
|
PixelDataType pixelDataType = PixelDataType.UBYTE,
|
||||||
Future Function(View)? beforeRender}
|
Future Function(View)? beforeRender});
|
||||||
);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
@@ -302,7 +300,10 @@ abstract class FilamentApp<T> {
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
Future<ThermionAsset> createGeometry(Geometry geometry, T animationManager,
|
Future<ThermionAsset> createGeometry(Geometry geometry, T animationManager,
|
||||||
{List<MaterialInstance>? materialInstances,
|
{List<MaterialInstance>? materialInstances, bool keepData = false});
|
||||||
bool keepData = false});
|
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
///
|
||||||
|
Future flush();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -681,7 +681,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
beforeRender?.call(view);
|
beforeRender?.call(view);
|
||||||
|
|
||||||
final viewport = await view.getViewport();
|
final viewport = await view.getViewport();
|
||||||
final pixelBuffer = Uint8List(viewport.width * viewport.height * 4 * sizeOf<Float>());
|
final pixelBuffer =
|
||||||
|
Uint8List(viewport.width * viewport.height * 4 * sizeOf<Float>());
|
||||||
await withVoidCallback((cb) {
|
await withVoidCallback((cb) {
|
||||||
Renderer_renderRenderThread(
|
Renderer_renderRenderThread(
|
||||||
renderer,
|
renderer,
|
||||||
@@ -697,15 +698,16 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
Renderer_readPixelsRenderThread(
|
Renderer_readPixelsRenderThread(
|
||||||
renderer,
|
renderer,
|
||||||
view.view,
|
view.view,
|
||||||
view.renderTarget == null ? nullptr : view.renderTarget!.renderTarget,
|
view.renderTarget == null
|
||||||
|
? nullptr
|
||||||
|
: view.renderTarget!.renderTarget,
|
||||||
// TPixelDataFormat.PIXELDATAFORMAT_RGBA,
|
// TPixelDataFormat.PIXELDATAFORMAT_RGBA,
|
||||||
// TPixelDataType.PIXELDATATYPE_UBYTE,
|
// TPixelDataType.PIXELDATATYPE_UBYTE,
|
||||||
pixelDataFormat.value,
|
pixelDataFormat.value,
|
||||||
pixelDataType.value,
|
pixelDataType.value,
|
||||||
pixelBuffer.address,
|
pixelBuffer.address,
|
||||||
pixelBuffer.length,
|
pixelBuffer.length,
|
||||||
cb
|
cb);
|
||||||
);
|
|
||||||
});
|
});
|
||||||
pixelBuffers.add((view, pixelBuffer));
|
pixelBuffers.add((view, pixelBuffer));
|
||||||
}
|
}
|
||||||
@@ -866,7 +868,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future<ThermionAsset> createGeometry(Geometry geometry, Pointer animationManager,
|
Future<ThermionAsset> createGeometry(
|
||||||
|
Geometry geometry, Pointer animationManager,
|
||||||
{List<MaterialInstance>? materialInstances,
|
{List<MaterialInstance>? materialInstances,
|
||||||
bool keepData = false,
|
bool keepData = false,
|
||||||
bool addToScene = true}) async {
|
bool addToScene = true}) async {
|
||||||
@@ -903,6 +906,13 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
|
|
||||||
return FFIAsset(assetPtr, this, animationManager.cast<TAnimationManager>());
|
return FFIAsset(assetPtr, this, animationManager.cast<TAnimationManager>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
///
|
||||||
|
Future flush() async {
|
||||||
|
await withVoidCallback((cb) => Engine_flushAndWaitRenderThead(engine, cb));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FinalizableUint8List implements Finalizable {
|
class FinalizableUint8List implements Finalizable {
|
||||||
|
|||||||
Reference in New Issue
Block a user