diff options
| author | HampusM <hampus@hampusmat.com> | 2026-04-17 17:25:31 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-04-17 17:25:31 +0200 |
| commit | 92a432415eaeb09aa5ad16304bcbba33e11ee222 (patch) | |
| tree | 092618b3e9dadc9c81c38b00d0ea5ddf4e4389c1 /engine/src/renderer/opengl | |
| parent | 50fa4f2527bf86ff4864e966b7c3fbed50fab527 (diff) | |
Diffstat (limited to 'engine/src/renderer/opengl')
| -rw-r--r-- | engine/src/renderer/opengl/graphics_mesh.rs | 21 |
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, + } +} |
