From 846f45bb63e1c8b926a5cb02bc698d46c30ffcd7 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Wed, 19 Jun 2024 16:38:14 +0800 Subject: [PATCH] don't destroy dummy image texture if clearBackgroundImage has been called without setBackgroundImage having been called first --- thermion_dart/native/include/FilamentViewer.hpp | 1 + thermion_dart/native/src/FilamentViewer.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/thermion_dart/native/include/FilamentViewer.hpp b/thermion_dart/native/include/FilamentViewer.hpp index 52cc7ff6..32f59744 100644 --- a/thermion_dart/native/include/FilamentViewer.hpp +++ b/thermion_dart/native/include/FilamentViewer.hpp @@ -211,6 +211,7 @@ namespace thermion_filament uint32_t _imageWidth = 0; mat4f _imageScale; Texture *_imageTexture = nullptr; + Texture *_dummyImageTexture = nullptr; utils::Entity _imageEntity; VertexBuffer *_imageVb = nullptr; IndexBuffer *_imageIb = nullptr; diff --git a/thermion_dart/native/src/FilamentViewer.cpp b/thermion_dart/native/src/FilamentViewer.cpp index ad26485f..fbc091c0 100644 --- a/thermion_dart/native/src/FilamentViewer.cpp +++ b/thermion_dart/native/src/FilamentViewer.cpp @@ -214,7 +214,7 @@ namespace thermion_filament Log("Created scene maager"); - _imageTexture = Texture::Builder() + _dummyImageTexture = Texture::Builder() .width(1) .height(1) .levels(0x01) @@ -229,7 +229,7 @@ namespace thermion_filament .build(*_engine); _imageMaterial->setDefaultParameter("showImage", 0); _imageMaterial->setDefaultParameter("backgroundColor", RgbaType::sRGB, float4(1.0f, 1.0f, 1.0f, 0.0f)); - _imageMaterial->setDefaultParameter("image", _imageTexture, _imageSampler); + _imageMaterial->setDefaultParameter("image", _dummyImageTexture, _imageSampler); } catch (...) { @@ -549,6 +549,7 @@ namespace thermion_filament void FilamentViewer::clearBackgroundImage() { + _imageMaterial->setDefaultParameter("image", _dummyImageTexture, _imageSampler); _imageMaterial->setDefaultParameter("showImage", 0); if (_imageTexture) {