165    [[nodiscard]] 
constexpr auto id() const -> uint32_t { 
return m_id; }
 
 
  205    glGenVertexArrays(1, &
m_id);
 
 
  210    glDeleteVertexArrays(1, &
m_id);
 
 
  215    glBindVertexArray(
m_id);
 
 
  220    glBindVertexArray(0);
 
 
  225    m_vertex_buffers.push_back(std::move(vbo));
 
  226    glBindVertexArray(m_id);
 
  233    for (
const auto& [name, element_count, offset, type] : vbo_ref.
layout().get_attributes()) {
 
  234        glEnableVertexAttribArray(attrib_index);
 
  235        glVertexAttribPointer(
 
  240            static_cast<int32_t
>(vbo_ref.
layout().stride()),
 
  241            reinterpret_cast<const void*
>(offset)); 
 
  244    return std::prev(m_vertex_buffers.end());
 
 
  251    glBindVertexArray(
m_id);
 
  254    for (
const auto& [name, element_count, offset, type] : 
m_instanced_vbo->layout().get_attributes()) {
 
  256        glVertexAttribPointer(
 
  262            reinterpret_cast<const void*
>(offset)); 
 
 
  271    glBindVertexArray(
m_id);
 
 
Element Buffer Object (EBO) wrapper.
 
void bind() const
Bind the index buffer object.
 
Vertex Array Object (VAO) wrapper.
 
constexpr auto instanced_data() -> std::optional< vertex_buffer_inst > &
Get the instance buffer object.
 
index_buffer m_index_buffer
 
void bind() const
Bind the vertex array object.
 
void set_index_buffer(index_buffer &&ibo)
Set the index buffer object.
 
constexpr auto id() const -> uint32_t
Get the vertex array object id.
 
static void unbind()
Unbind the vertex array object.
 
constexpr auto buffers_data() -> std::list< vertex_buffer > &
Get the vertex buffer object at the specified index.
 
auto operator=(vertex_array &&other) noexcept -> vertex_array &
Move assignment operator.
 
vertex_array(const vertex_array &)=delete
 
std::optional< vertex_buffer_inst > m_instanced_vbo
 
vertex_array() noexcept
Construct a new vertex array object.
 
void set_instance_buffer(vertex_buffer_inst &&vbo)
Set the instance buffer object.
 
std::list< vertex_buffer > m_vertex_buffers
 
auto operator=(const vertex_array &) -> vertex_array &=delete
 
constexpr auto index_data() -> index_buffer &
Get the index buffer object.
 
auto add_vertex_buffer(vertex_buffer &&vbo) -> vertex_array::iterator_t
Add a vertex buffer to the vertex array object.
 
vertex_array(vertex_array &&other) noexcept
Construct a new vertex array object from another one.
 
void clear_instance_buffer()
Clear the instance buffer object.
 
std::list< vertex_buffer >::iterator iterator_t
Iterator type returned from add_vertex_buffer.
 
A vertex buffer object for instanced rendering.
 
Vertex Buffer Object (VBO) wrapper.
 
constexpr auto layout() const -> const vertex_buffer_layout &
 
void bind() const
Bind the vertex buffer object.
 
Element Buffer Object (EBO) wrapper.
 
static constexpr auto component_count(u_type type) -> std::uint16_t
Get the number of components in the shader data type, useful for vector types.
 
static constexpr auto to_opengl_underlying_type(u_type type) -> std::uint32_t
Obtains the OpenGL type of the underlying type of the shader data type.
 
Vertex Buffer Object (VBO) wrapper.
 
Vertex buffer object for instanced rendering.