summaryrefslogtreecommitdiff
path: root/engine/src/renderer/opengl/graphics_mesh.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-04-17 17:25:31 +0200
committerHampusM <hampus@hampusmat.com>2026-04-17 17:25:31 +0200
commit92a432415eaeb09aa5ad16304bcbba33e11ee222 (patch)
tree092618b3e9dadc9c81c38b00d0ea5ddf4e4389c1 /engine/src/renderer/opengl/graphics_mesh.rs
parent50fa4f2527bf86ff4864e966b7c3fbed50fab527 (diff)
feat(engine): add mesh usage option to renderer::Command::CreateMeshHEADmaster
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,
+ }
+}