summaryrefslogtreecommitdiff
path: root/engine/src/renderer/opengl/graphics_mesh.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/renderer/opengl/graphics_mesh.rs')
-rw-r--r--engine/src/renderer/opengl/graphics_mesh.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/engine/src/renderer/opengl/graphics_mesh.rs b/engine/src/renderer/opengl/graphics_mesh.rs
index 7c7412c..3cf9181 100644
--- a/engine/src/renderer/opengl/graphics_mesh.rs
+++ b/engine/src/renderer/opengl/graphics_mesh.rs
@@ -9,6 +9,7 @@ use opengl_bindings::vertex_array::{
};
use crate::mesh::{Mesh, VertexAttrType};
+use crate::renderer::MeshUsage;
use crate::shader::VertexDescription as ShaderVertexDescription;
#[derive(Debug)]
@@ -27,18 +28,17 @@ impl GraphicsMesh
pub fn new(
current_context: &GlCurrentContextWithFns<'_>,
mesh: &Mesh,
+ mesh_usage: MeshUsage,
vertex_desc: &ShaderVertexDescription,
) -> Result<Self, Error>
{
+ let buffer_usage = mesh_usage_to_gl_buffer_usage(mesh_usage);
+
let vertex_arr = GlVertexArray::new(current_context);
let vertex_buffer = GlBuffer::new(current_context);
vertex_buffer
- .store(
- current_context,
- mesh.vertex_buf().as_bytes(),
- GlBufferUsage::Static,
- )
+ .store(current_context, mesh.vertex_buf().as_bytes(), buffer_usage)
.map_err(Error::StoreVerticesFailed)?;
let vertex_buf_binding_index = 0;
@@ -115,7 +115,7 @@ impl GraphicsMesh
let index_buffer = GlBuffer::new(current_context);
index_buffer
- .store(current_context, indices, GlBufferUsage::Static)
+ .store(current_context, indices, buffer_usage)
.map_err(Error::StoreIndicesFailed)?;
vertex_arr.bind_element_buffer(current_context, &index_buffer);
@@ -163,3 +163,12 @@ pub enum Error
#[error("Failed to store indices in index buffer")]
StoreIndicesFailed(#[source] opengl_bindings::buffer::Error),
}
+
+fn mesh_usage_to_gl_buffer_usage(mesh_usage: MeshUsage) -> GlBufferUsage
+{
+ match mesh_usage {
+ MeshUsage::Stream => GlBufferUsage::Stream,
+ MeshUsage::Static => GlBufferUsage::Static,
+ MeshUsage::Dynamic => GlBufferUsage::Dynamic,
+ }
+}