fix incorrect indexing for material instances when creating an instance

This commit is contained in:
Nick Fisher
2025-06-19 10:57:54 +08:00
parent 7446b0545a
commit a823718bcd
2 changed files with 12 additions and 14 deletions

View File

@@ -758,14 +758,14 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
final pixelBuffers = <(View, Uint8List)>[];
if (beginFrame) {
final views = <FFIView>[];
if (view != null) {
views.add(view);
} else {
views.addAll(_swapChains[swapChain]!.where((v) => v.renderable));
}
final views = <FFIView>[];
if (view != null) {
views.add(view);
} else {
views.addAll(_swapChains[swapChain]!.where((v) => v.renderable));
}
if (beginFrame) {
_logger.info("Capturing ${views.length} views");
for (final view in views) {
@@ -784,7 +784,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
PixelDataType.UBYTE || PixelDataType.BYTE => 1,
_ => throw UnsupportedError(pixelDataFormat.toString())
};
final pixelBuffer = Uint8List(viewport.width *
final pixelBuffer = makeUint8List(viewport.width *
viewport.height *
numChannels *
channelSizeInBytes);
@@ -807,10 +808,6 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
view.renderTarget == null
? nullptr
: view.renderTarget!.renderTarget,
// TPixelDataFormat.PIXELDATAFORMAT_RGBA,
// TPixelDataType.PIXELDATATYPE_UBYTE,
// TPixelDataFormat.fromValue(pixelDataFormat.value),
// TPixelDataType.fromValue(pixelDataType.value),
pixelDataFormat.value,
pixelDataType.value,
pixelBuffer.address,
@@ -829,6 +826,7 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
});
await flush();
return pixelBuffers;
}

View File

@@ -90,8 +90,8 @@ namespace thermion
TRACE("Instance child entity %d not renderable", i);
} else {
TRACE("Instance child entity %d renderable", i);
for(int i = 0; i < materialInstanceCount; i++) {
rm.setMaterialInstanceAt(renderableInstance, i, materialInstances[i]);
for(int j = 0; j < materialInstanceCount; j++) {
rm.setMaterialInstanceAt(renderableInstance, i, materialInstances[j]);
}
}
}