summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-07-10 16:33:23 +0200
committerHampusM <hampus@hampusmat.com>2026-07-10 16:33:23 +0200
commitc275adc57454051aa915bb7f470ff9dac3427dd6 (patch)
tree43a932d76c64b0f884cf0c10b23ef776c817b050 /engine
parentd68adea2554981da9dee593bf8a4b9455ca4d636 (diff)
feat(engine): add RemoveTexture rendering command
Diffstat (limited to 'engine')
-rw-r--r--engine/src/rendering.rs1
-rw-r--r--engine/src/rendering/backend/opengl.rs15
2 files changed, 16 insertions, 0 deletions
diff --git a/engine/src/rendering.rs b/engine/src/rendering.rs
index 94c619f..8ce48fc 100644
--- a/engine/src/rendering.rs
+++ b/engine/src/rendering.rs
@@ -238,6 +238,7 @@ pub enum Command
ActivateShader(ObjectId),
SetShaderBinding(ShaderBindingLocation, ShaderBindingValue),
CreateTexture(ObjectId, AssetOrValue<Texture>),
+ RemoveTexture(ObjectId),
CreateMesh
{
obj_id: ObjectId,
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs
index 0323f29..2394acf 100644
--- a/engine/src/rendering/backend/opengl.rs
+++ b/engine/src/rendering/backend/opengl.rs
@@ -708,6 +708,21 @@ fn handle_commands(
tracing::error!("Failed to create texture object: {err}");
}
}
+ Command::RemoveTexture(texture_object_id) => {
+ let Some(texture_object) =
+ object_store.remove(&texture_object_id).flatten()
+ else {
+ tracing::error!(
+ object_id=?texture_object_id,
+ "Object store does not contain a texture object with this ID"
+ );
+ continue;
+ };
+
+ let gl_texture = GlTexture::from_raw(texture_object.as_raw());
+
+ gl_texture.delete(gl_context);
+ }
Command::CreateMesh {
obj_id: mesh_object_id,
mesh,