Allow ImGui uploaded images to be resized or destroyed.
PiperOrigin-RevId: 846354598 Change-Id: I86882813ab607945fffc763122248e167be856a8
This commit is contained in:
committed by
Copybara-Service
parent
b5b654f00c
commit
522ff1cd80
@@ -125,6 +125,24 @@ uintptr_t GuiView::UploadImage(uintptr_t tex_id, const uint8_t* pixels,
|
|||||||
mju_error("Texture not found: %lu", tex_id);
|
mju_error("Texture not found: %lu", tex_id);
|
||||||
}
|
}
|
||||||
texture = iter->second;
|
texture = iter->second;
|
||||||
|
|
||||||
|
if (pixels == nullptr) {
|
||||||
|
// A nullptr implies that the user wants to destroy the texture.
|
||||||
|
engine->destroy(texture);
|
||||||
|
textures_.erase(tex_id);
|
||||||
|
return 0;
|
||||||
|
} else if (texture->getWidth() != width || texture->getHeight() != height) {
|
||||||
|
// Recreate the texture if the dimensions have changed.
|
||||||
|
engine->destroy(texture);
|
||||||
|
texture = filament::Texture::Builder()
|
||||||
|
.width(width)
|
||||||
|
.height(height)
|
||||||
|
.levels(1)
|
||||||
|
.format(internal_format)
|
||||||
|
.sampler(filament::Texture::Sampler::SAMPLER_2D)
|
||||||
|
.build(*engine);
|
||||||
|
textures_[tex_id] = texture;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a copy of the image to pass it to filament as we don't know the
|
// Create a copy of the image to pass it to filament as we don't know the
|
||||||
|
|||||||
Reference in New Issue
Block a user