add setImage method to set texture image directly from buffer

This commit is contained in:
Nick Fisher
2025-03-04 18:17:17 +08:00
parent a245cf2915
commit cca9fba79f
3 changed files with 52 additions and 3 deletions

View File

@@ -7,7 +7,7 @@ void main() async {
final testHelper = TestHelper("material");
group("image", () {
test('decode image', () async {
test('set texture from decoded image', () async {
await testHelper.withViewer((viewer) async {
var imageData =
File("${testHelper.testDir}/assets/cube_texture_512x512.png")
@@ -25,6 +25,30 @@ void main() async {
await texture.dispose();
}, bg: kRed);
});
test('setImage', () async {
await testHelper.withViewer((viewer) async {
var imageData =
File("${testHelper.testDir}/assets/cube_texture_512x512.png")
.readAsBytesSync();
final image = await viewer.decodeImage(imageData);
expect(await image.getChannels(), 4);
expect(await image.getWidth(), 512);
expect(await image.getHeight(), 512);
final texture = await viewer.createTexture(
await image.getWidth(), await image.getHeight(),
textureFormat: TextureFormat.RGBA32F);
var data = await image.getData();
await texture.setImage(
0,
data.buffer.asUint8List(data.offsetInBytes),
512, 512, 4, PixelDataFormat.RGBA, PixelDataType.FLOAT
);
await texture.dispose();
}, bg: kRed);
});
});
group("sampler", () {