8#include <glm/mat4x4.hpp>
20 glCreateVertexArrays(1, &
m_id);
48 glDeleteVertexArrays(1, &this->m_id);
52 this->m_vbo = std::move(v.m_vbo);
63 glDeleteVertexArrays(1, &this->m_id);
67 this->m_vbo = std::move(v.m_vbo);
79 glDeleteVertexArrays(1, &
m_id);
94 const unsigned int vi,
95 const int vertex_size,
97 const unsigned int ei,
115 void VertexArray::erase(
const unsigned int vi,
const int vertex_count,
const unsigned int ei,
const int index_count)
117 m_vbo.
erase(vi, vertex_count, ei, index_count);
127 glBindVertexArray(
m_id);
132 glBindVertexArray(0);
thread_local const float vertices[]
Video.cpp galaxy.
thread_local const unsigned int indices[]
Abstraction for OpenGL vertex array objects.
VertexArray()
Constructor.
void bind() const
Bind this vertex array.
~VertexArray()
Destructor.
VertexBuffer m_vbo
Vertex buffer.
VertexBuffer & vbo() noexcept
Get vertex buffer.
void buffer(std::span< Vertex > vertices, std::span< unsigned int > indices)
Create vertex buffer.
void sub_buffer(const unsigned int vi, const int vertex_size, const std::span< Vertex > vertices, const unsigned int ei, const int index_size, std::span< unsigned int > indices)
Sub-buffer vertex buffer.
int count() const noexcept
Get the index count.
void sub_buffer_indices(const unsigned int ei, const int index_size, std::span< unsigned int > indices) const
Sub-buffer element/index buffer.
VertexArray & operator=(VertexArray &&) noexcept
Move assignment operator.
void erase(const unsigned int vi, const int vertex_count, const unsigned int ei, const int index_count)
Erase a specfic segment of data.
void unbind() const
Unbind this vertex array.
unsigned int m_id
VAO object.
unsigned int id() const noexcept
Get vertex array handle.
void * offset() noexcept
Gets index offset.
void clear()
Clear buffer data.
void reserve(const int vertex_count, const int index_count)
Create vertex buffer without uploading.
void sub_buffer_vertices(const unsigned int vi, const int vertex_size, const std::span< Vertex > vertices) const
Sub-buffer vertex buffer.
Abstraction for OpenGL vertex buffer objects.
void buffer(std::span< Vertex > vertices, std::span< unsigned int > indices)
Create vertex buffer.
int count() const noexcept
Get the index count.
void sub_buffer_indices(const unsigned int ei, const int index_size, std::span< unsigned int > indices) const
Sub-buffer element/index buffer.
void sub_buffer_vertices(const unsigned int vi, const int vertex_size, const std::span< Vertex > vertices) const
Sub-buffer vertex buffer.
void sub_buffer(const unsigned int vi, const int vertex_size, const std::span< Vertex > vertices, const unsigned int ei, const int index_size, std::span< unsigned int > indices) const
Sub-buffer vertex buffer.
void clear() const
Clear buffer data.
void erase(const unsigned int vi, const int vertex_count, const unsigned int ei, const int index_count) const
Erase a specfic segment of data.
void * offset() noexcept
Gets index offset.
void reserve(const int vertex_count, const int index_count)
Create vertex buffer without uploading.
unsigned int id() const noexcept
Get OpenGL handle.
@ INDEX_POINT
Renderable uniform data index.
@ POSITION_POINT
Position data.
@ VERTEX_BUFFER_POINT
Normal VBO.
Represents a single vertex point.