summaryrefslogtreecommitdiff
path: root/engine/src/renderer/vertex_buffers.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-10-13 22:34:23 +0200
committerHampusM <hampus@hampusmat.com>2023-10-13 22:34:23 +0200
commit25b5ca97c5e5597570360c37d7452662e0118a00 (patch)
treebe724d8a454faf955b6cdc59203b94a4a6ddeee0 /engine/src/renderer/vertex_buffers.rs
parent4da06868266c12622207e2e61f92aee93c24aaf8 (diff)
refactor(engine): make vertex buffer wrapper hold single buffer
Diffstat (limited to 'engine/src/renderer/vertex_buffers.rs')
-rw-r--r--engine/src/renderer/vertex_buffers.rs87
1 files changed, 0 insertions, 87 deletions
diff --git a/engine/src/renderer/vertex_buffers.rs b/engine/src/renderer/vertex_buffers.rs
deleted file mode 100644
index e7cba91..0000000
--- a/engine/src/renderer/vertex_buffers.rs
+++ /dev/null
@@ -1,87 +0,0 @@
-use std::mem::size_of_val;
-
-use crate::vertex::Vertex;
-
-#[derive(Debug)]
-pub struct VertexBuffers<const CNT: usize>
-{
- buffers: [gl::types::GLuint; CNT],
-}
-
-impl<const CNT: usize> VertexBuffers<CNT>
-{
- pub fn new() -> Self
- {
- let mut buffers = [gl::types::GLuint::default(); CNT];
-
- unsafe {
- #[allow(clippy::cast_possible_wrap, clippy::cast_possible_truncation)]
- gl::GenBuffers(CNT as gl::types::GLsizei, buffers.as_mut_ptr());
- };
-
- Self { buffers }
- }
-
- pub fn store(
- &self,
- buffer_index: usize,
- vertices: &[Vertex],
- usage: BufferUsage,
- ) -> Option<()>
- {
- let buffer = *self.buffers.get(buffer_index)?;
-
- unsafe {
- gl::BindBuffer(gl::ARRAY_BUFFER, buffer);
- }
-
- unsafe {
- #[allow(clippy::cast_possible_wrap)]
- gl::BufferData(
- gl::ARRAY_BUFFER,
- size_of_val(vertices) as gl::types::GLsizeiptr,
- vertices.as_ptr().cast(),
- usage.into_gl(),
- );
- }
-
- Some(())
- }
-}
-
-impl<const CNT: usize> Drop for VertexBuffers<CNT>
-{
- fn drop(&mut self)
- {
- #[allow(clippy::cast_possible_wrap, clippy::cast_possible_truncation)]
- unsafe {
- gl::DeleteBuffers(CNT as gl::types::GLsizei, self.buffers.as_ptr());
- }
- }
-}
-
-#[derive(Debug)]
-#[allow(dead_code)]
-pub enum BufferUsage
-{
- /// The buffer data is set only once and used by the GPU at most a few times.
- Stream,
-
- /// The buffer data is set only once and used many times.
- Static,
-
- /// The buffer data is changed a lot and used many times.
- Dynamic,
-}
-
-impl BufferUsage
-{
- fn into_gl(self) -> gl::types::GLenum
- {
- match self {
- Self::Stream => gl::STREAM_DRAW,
- Self::Static => gl::STATIC_DRAW,
- Self::Dynamic => gl::DYNAMIC_DRAW,
- }
- }
-}