update tests + bindings

This commit is contained in:
Nick Fisher
2025-05-17 21:52:21 +08:00
parent ee306549d8
commit 4b2342979f
3 changed files with 26 additions and 20 deletions

View File

@@ -2490,14 +2490,12 @@ external void GltfAssetLoader_createRenderThread(
@ffi.Native<
ffi.Void Function(
ffi.Pointer<TEngine>,
ffi.Pointer<ffi.Char>,
ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
ffi.Pointer<TGltfResourceLoader>)>>)>(isLeaf: true)
external void GltfResourceLoader_createRenderThread(
ffi.Pointer<TEngine> tEngine,
ffi.Pointer<ffi.Char> relativeResourcePath,
ffi.Pointer<
ffi
.NativeFunction<ffi.Void Function(ffi.Pointer<TGltfResourceLoader>)>>
@@ -2616,12 +2614,10 @@ external void Gizmo_createRenderThread(
callback,
);
@ffi.Native<
ffi.Pointer<TGltfResourceLoader> Function(
ffi.Pointer<TEngine>, ffi.Pointer<ffi.Char>)>(isLeaf: true)
@ffi.Native<ffi.Pointer<TGltfResourceLoader> Function(ffi.Pointer<TEngine>)>(
isLeaf: true)
external ffi.Pointer<TGltfResourceLoader> GltfResourceLoader_create(
ffi.Pointer<TEngine> tEngine,
ffi.Pointer<ffi.Char> relativeResourcePath,
);
@ffi.Native<

View File

@@ -41,11 +41,10 @@ void main() async {
}, cameraPosition: Vector3(0, 0, 5));
});
test('load/remove gltf', () async {
test('sync load/remove gltf from uri', () async {
await testHelper.withViewer((viewer) async {
var asset = await viewer.loadGltf(
"file://${testHelper.testDir}/assets/cube.gltf",
relativeResourcePath: "${testHelper.testDir}/assets");
"file://${testHelper.testDir}/assets/cube.gltf");
await viewer
.loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx");
await testHelper.capture(viewer.view, "gltf_loaded");
@@ -54,12 +53,9 @@ void main() async {
}, cameraPosition: Vector3(0, 0, 5));
});
test('load/remove gltf (async)', () async {
test('async load/remove gltf from uri', () async {
await testHelper.withViewer((viewer) async {
var assetData =
File("${testHelper.testDir}/assets/cube.gltf").readAsBytesSync();
var asset = await viewer.loadGltfFromBuffer(assetData,
relativeResourcePath: "${testHelper.testDir}/assets", loadResourcesAsync: true);
var asset = await viewer.loadGltf("file://${testHelper.testDir}/assets/cube.gltf", loadAsync: true);
await viewer
.loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx");
await testHelper.capture(viewer.view, "gltf_async_loaded");
@@ -68,11 +64,22 @@ void main() async {
}, cameraPosition: Vector3(0, 0, 5));
});
test('sync load/remove gltf from buffer', () async {
await testHelper.withViewer((viewer) async {
var assetData =
File("${testHelper.testDir}/assets/cube.gltf").readAsBytesSync();
var asset = await viewer.loadGltfFromBuffer(assetData,
resourceUri: "${testHelper.testDir}/assets", loadResourcesAsync: false);
await viewer
.loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx");
await testHelper.capture(viewer.view, "gltf_load_from_buffer");
}, cameraPosition: Vector3(0, 0, 5));
});
test('transform gltf to unit cube', () async {
await testHelper.withViewer((viewer) async {
var asset = await viewer.loadGltf(
"file://${testHelper.testDir}/assets/cube.gltf",
relativeResourcePath: "${testHelper.testDir}/assets");
"file://${testHelper.testDir}/assets/cube.gltf");
await viewer
.loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx");

View File

@@ -195,8 +195,13 @@ class TestHelper {
return object;
}
Future<Uint8List> _loadResource(String uri) async {
uri = uri.replaceAll("file://", "");
return File(uri).readAsBytesSync();
}
Future setup() async {
await FFIFilamentApp.create();
await FFIFilamentApp.create(config: FFIFilamentConfig(loadResource: _loadResource));
}
Future createViewer(
@@ -244,9 +249,7 @@ class TestHelper {
color: color, depth: depth) as FFIRenderTarget;
}
var viewer = ThermionViewerFFI(
loadAssetFromUri: (path) async =>
File(path.replaceAll("file://", "")).readAsBytesSync());
var viewer = ThermionViewerFFI();
await viewer.initialized;
await FilamentApp.instance!.register(swapChain, viewer.view);