From 92a432415eaeb09aa5ad16304bcbba33e11ee222 Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 17 Apr 2026 17:25:31 +0200 Subject: feat(engine): add mesh usage option to renderer::Command::CreateMesh --- engine/src/renderer/opengl/graphics_mesh.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 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 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 { + 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, + } +} -- cgit v1.2.3-18-g5258