diff options
| author | HampusM <hampus@hampusmat.com> | 2025-11-07 13:57:49 +0100 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2025-11-07 13:57:49 +0100 |
| commit | dfb6b4e45065c618fdd2df7424fd66c439cd1841 (patch) | |
| tree | 04fe2cc64d0370921790b852ef7553157a06b41a /engine/src/renderer/opengl | |
| parent | c85039da1d8c65cad4cd661b08e4acba706e32ee (diff) | |
Diffstat (limited to 'engine/src/renderer/opengl')
| -rw-r--r-- | engine/src/renderer/opengl/graphics_mesh.rs | 18 |
1 files changed, 14 insertions, 4 deletions
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<RendererVertex>, + vertex_buffer: GlBuffer<RendererVertex>, pub index_buffer: Option<GlBuffer<u32>>, 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)] |
