Files
cup_edit/thermion_dart/test/render_thread_tests.dart
Nick Fisher 1177a71f73 test updates
2025-03-20 18:56:10 +08:00

45 lines
1.3 KiB
Dart

import 'dart:async';
import 'dart:ffi';
import 'package:test/test.dart';
import 'package:thermion_dart/thermion_dart.dart';
import 'helpers.dart';
void main() async {
final testHelper = TestHelper("render_thread");
await testHelper.setup();
group("render thread/capture", () {
test("request frame on render thread", () async {
await testHelper.withViewer((viewer) async {
var metalTexture = await testHelper.createTexture(500, 500);
var texture = await FilamentApp.instance!.createTexture(
500, 500,
importedTextureHandle: metalTexture.metalTextureAddress,
flags: {
TextureUsage.TEXTURE_USAGE_BLIT_DST,
TextureUsage.TEXTURE_USAGE_SAMPLEABLE,
TextureUsage.TEXTURE_USAGE_COLOR_ATTACHMENT
});
var renderTarget = await FilamentApp.instance!
.createRenderTarget(500, 500, color: texture);
await viewer.view.setRenderTarget(renderTarget);
await viewer.render();
await Future.delayed(Duration(milliseconds: 1));
var data = metalTexture.getTextureBytes()!;
var pixels = data.bytes.cast<Uint8>().asTypedList(data.length);
savePixelBufferToBmp(
pixels, 500, 500, "${testHelper.testDir}/request_frame.bmp");
await viewer.dispose();
});
});
});
}