From dfb6b4e45065c618fdd2df7424fd66c439cd1841 Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 7 Nov 2025 13:57:49 +0100 Subject: feat(engine): make renderer command-based --- engine/src/renderer/opengl/graphics_mesh.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'engine/src/renderer/opengl') diff --git a/engine/src/renderer/opengl/graphics_mesh.rs b/engine/src/renderer/opengl/graphics_mesh.rs index 9b929c0..dc839a8 100644 --- a/engine/src/renderer/opengl/graphics_mesh.rs +++ b/engine/src/renderer/opengl/graphics_mesh.rs @@ -1,9 +1,9 @@ +use opengl_bindings::CurrentContextWithFns as GlCurrentContextWithFns; use opengl_bindings::buffer::{Buffer as GlBuffer, Usage as GlBufferUsage}; use opengl_bindings::vertex_array::{ DataType as GlVertexArrayDataType, VertexArray as GlVertexArray, }; -use opengl_bindings::CurrentContextWithFns as GlCurrentContextWithFns; use crate::mesh::Mesh; use crate::renderer::opengl::vertex::{ @@ -15,7 +15,7 @@ use crate::renderer::opengl::vertex::{ pub struct GraphicsMesh { /// Vertex and index buffer has to live as long as the vertex array - _vertex_buffer: GlBuffer, + vertex_buffer: GlBuffer, pub index_buffer: Option>, pub element_cnt: u32, pub vertex_arr: GlVertexArray, @@ -86,7 +86,7 @@ impl GraphicsMesh vertex_arr.bind_element_buffer(current_context, &index_buffer); return Ok(Self { - _vertex_buffer: vertex_buffer, + vertex_buffer: vertex_buffer, index_buffer: Some(index_buffer), element_cnt: indices .len() @@ -97,7 +97,7 @@ impl GraphicsMesh } Ok(Self { - _vertex_buffer: vertex_buffer, + vertex_buffer: vertex_buffer, index_buffer: None, element_cnt: mesh .vertices() @@ -107,6 +107,16 @@ impl GraphicsMesh vertex_arr, }) } + + pub fn destroy(&mut self, curr_gl_ctx: &GlCurrentContextWithFns<'_>) + { + self.vertex_arr.delete(curr_gl_ctx); + self.vertex_buffer.delete(curr_gl_ctx); + + if let Some(index_buffer) = &self.index_buffer { + index_buffer.delete(curr_gl_ctx); + } + } } #[derive(Debug, thiserror::Error)] -- cgit v1.2.3-18-g5258