summaryrefslogtreecommitdiff
path: root/engine/src/renderer/opengl
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/renderer/opengl')
-rw-r--r--engine/src/renderer/opengl/graphics_mesh.rs18
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)]