Vesper 0.5.1
Vesper is short form for the Latin word for "Bat", as Vesper is designed to be small, lightweight, and easily handle things like particles and flocking behaviors in accordance with the nature of bats. \n It is meant to be a particle simulation, VFX editor, and CAN be used secondarily as a small game engine.
GitHub | Vesper Updates | Creator
Loading...
Searching...
No Matches
Vesper::OpenGLVertexArray Class Reference

#include <OpenGLVertexArray.h>

Inheritance diagram for Vesper::OpenGLVertexArray:
Vesper::VertexArray

Public Member Functions

 OpenGLVertexArray ()
 ~OpenGLVertexArray ()
void Bind () const override
void Unbind () const override
void AddVertexBuffer (const Ref< VertexBuffer > &vertexBuffer) override
 Adds a vertex buffer to the vertex array.
void SetIndexBuffer (const Ref< IndexBuffer > &indexBuffer) override
 Sets the index buffer for the vertex array.
const std::vector< Ref< VertexBuffer > > & GetVertexBuffers () override
const Ref< IndexBuffer > & GetIndexBuffer () const override
Public Member Functions inherited from Vesper::VertexArray
virtual ~VertexArray ()

Private Attributes

uint32_t m_RendererID
uint32_t m_VertexBufferIndex = 0
std::vector< Ref< VertexBuffer > > m_VertexBuffers
Ref< IndexBufferm_IndexBuffer

Additional Inherited Members

Static Public Member Functions inherited from Vesper::VertexArray
static Ref< VertexArrayCreate ()

Constructor & Destructor Documentation

◆ OpenGLVertexArray()

Vesper::OpenGLVertexArray::OpenGLVertexArray ( )
31 {
33
34 glCreateVertexArrays(1, &m_RendererID);
35 }
#define VZ_PROFILE_FUNCTION()
Definition Instrumentor.h:240
uint32_t m_RendererID
Definition OpenGLVertexArray.h:21

References m_RendererID.

◆ ~OpenGLVertexArray()

Vesper::OpenGLVertexArray::~OpenGLVertexArray ( )
38 {
40
41 glDeleteVertexArrays(1, &m_RendererID);
42 }

References m_RendererID.

Member Function Documentation

◆ AddVertexBuffer()

void Vesper::OpenGLVertexArray::AddVertexBuffer ( const Ref< VertexBuffer > & vertexBuffer)
overridevirtual

Adds a vertex buffer to the vertex array.

Implements Vesper::VertexArray.

59 {
61
62 VZ_CORE_ASSERT(vertexBuffer->GetLayout().GetElements().size(), "Vertex Buffer has no layout!");
63 glBindVertexArray(m_RendererID);
64 vertexBuffer->Bind();
65
66
67 uint32_t index = 0;
68 const auto& layout = vertexBuffer->GetLayout();
69 for (const auto& element : layout)
70 {
71 VZ_PROFILE_SCOPE("VertexBufferElement");
72 glEnableVertexAttribArray(index);
73 glVertexAttribPointer(index, element.GetComponentCount(),
75 element.Normalized ? GL_TRUE : GL_FALSE,
76 layout.GetStride(), (const void*)element.Offset);
77 index++;
78 }
79 m_VertexBuffers.push_back(vertexBuffer);
80 }
#define VZ_CORE_ASSERT(x,...)
Definition Asserts.h:20
#define VZ_PROFILE_SCOPE(name)
Definition Instrumentor.h:239
std::vector< Ref< VertexBuffer > > m_VertexBuffers
Definition OpenGLVertexArray.h:23
static GLenum ShaderDataTypeToOpenGLBaseType(ShaderDataType type)
Definition OpenGLVertexArray.cpp:9

References m_RendererID.

◆ Bind()

void Vesper::OpenGLVertexArray::Bind ( ) const
overridevirtual

Implements Vesper::VertexArray.

45 {
47
48 glBindVertexArray(m_RendererID);
49 }

References m_RendererID.

◆ GetIndexBuffer()

const Ref< IndexBuffer > & Vesper::OpenGLVertexArray::GetIndexBuffer ( ) const
inlineoverridevirtual

Implements Vesper::VertexArray.

18{ return m_IndexBuffer; }
Ref< IndexBuffer > m_IndexBuffer
Definition OpenGLVertexArray.h:24

◆ GetVertexBuffers()

const std::vector< Ref< VertexBuffer > > & Vesper::OpenGLVertexArray::GetVertexBuffers ( )
inlineoverridevirtual

Implements Vesper::VertexArray.

17{ return m_VertexBuffers; }

◆ SetIndexBuffer()

void Vesper::OpenGLVertexArray::SetIndexBuffer ( const Ref< IndexBuffer > & indexBuffer)
overridevirtual

Sets the index buffer for the vertex array.

Implements Vesper::VertexArray.

83 {
85
86 glBindVertexArray(m_RendererID);
87 indexBuffer->Bind();
88
89 m_IndexBuffer = indexBuffer;
90 }

References m_RendererID.

◆ Unbind()

void Vesper::OpenGLVertexArray::Unbind ( ) const
overridevirtual

Implements Vesper::VertexArray.

52 {
54
55 glBindVertexArray(0);
56 }

Member Data Documentation

◆ m_IndexBuffer

Ref<IndexBuffer> Vesper::OpenGLVertexArray::m_IndexBuffer
private

◆ m_RendererID

uint32_t Vesper::OpenGLVertexArray::m_RendererID
private

◆ m_VertexBufferIndex

uint32_t Vesper::OpenGLVertexArray::m_VertexBufferIndex = 0
private

◆ m_VertexBuffers

std::vector<Ref<VertexBuffer> > Vesper::OpenGLVertexArray::m_VertexBuffers
private

The documentation for this class was generated from the following files: