Elevate Engine 1
Loading...
Searching...
No Matches
Elevate::OpenGLVertexBuffer Class Reference

#include <OpenGLBuffer.h>

Inheritance diagram for Elevate::OpenGLVertexBuffer:
Elevate::VertexBuffer

Public Member Functions

 OpenGLVertexBuffer (const void *vertices, uint32_t size)
 
virtual ~OpenGLVertexBuffer ()
 
virtual void Bind () const override
 
virtual void Unbind () const override
 
virtual void SetLayout (const BufferLayout &layout) override
 
virtual const BufferLayoutGetLayout () const override
 
virtual void SetData (const void *newData, uint32_t size) override
 
virtual void Resize (uint32_t size) override
 
- Public Member Functions inherited from Elevate::VertexBuffer
 VertexBuffer (const void *vertices, uint32_t size)
 
virtual ~VertexBuffer ()=default
 
uint32_t GetSize ()
 

Additional Inherited Members

- Static Public Member Functions inherited from Elevate::VertexBuffer
static VertexBufferCreate (const void *vertices, const uint32_t size)
 
- Protected Member Functions inherited from Elevate::VertexBuffer
void SetSize (uint32_t newSize)
 

Detailed Description

Definition at line 7 of file OpenGLBuffer.h.

Constructor & Destructor Documentation

◆ OpenGLVertexBuffer()

Elevate::OpenGLVertexBuffer::OpenGLVertexBuffer ( const void *  vertices,
uint32_t  size 
)

Definition at line 35 of file OpenGLBuffer.cpp.

36 : VertexBuffer(vertices, size)
37 {
38 GLCheck(CreateBuffers(1, &m_rendererID));
39 SetData(vertices, size);
40 }
#define GLCheck(x)
Definition GLDebug.h:11
virtual void SetData(const void *newData, uint32_t size) override
VertexBuffer(const void *vertices, uint32_t size)
Definition Buffer.h:77
void CreateBuffers(int32_t n, uint32_t *ids)

◆ ~OpenGLVertexBuffer()

Elevate::OpenGLVertexBuffer::~OpenGLVertexBuffer ( )
virtual

Definition at line 42 of file OpenGLBuffer.cpp.

43 {
44 // Check if the OpenGl context is still active before performing actions
46 {
47 GLCheck(glDeleteBuffers(1, &m_rendererID));
48 }
49 }

Member Function Documentation

◆ Bind()

void Elevate::OpenGLVertexBuffer::Bind ( ) const
overridevirtual

Implements Elevate::VertexBuffer.

Definition at line 51 of file OpenGLBuffer.cpp.

52 {
53 GLCheck(glBindBuffer(GL_ARRAY_BUFFER, m_rendererID));
54 }

◆ GetLayout()

virtual const BufferLayout & Elevate::OpenGLVertexBuffer::GetLayout ( ) const
inlineoverridevirtual

Implements Elevate::VertexBuffer.

Definition at line 17 of file OpenGLBuffer.h.

17{ return m_layout; }

◆ Resize()

void Elevate::OpenGLVertexBuffer::Resize ( uint32_t  size)
overridevirtual

Implements Elevate::VertexBuffer.

Definition at line 79 of file OpenGLBuffer.cpp.

80 {
81 if (m_rendererID != 0 && data)
82 {
83 GLCheck(NamedBufferData(m_rendererID, GL_ARRAY_BUFFER, newSize, data, GL_DYNAMIC_DRAW));
84 SetSize(newSize);
85 }
86 else
87 {
88 EE_CORE_ERROR("ERROR : (OpenGLVertexBuffer::Resize) You must initialize the VertexBuffer before resizing it.");
89 }
90 }
void SetSize(uint32_t newSize)
Definition Buffer.h:95
void NamedBufferData(uint32_t buffer, uint32_t target, size_t size, const void *data, uint32_t usage)

◆ SetData()

void Elevate::OpenGLVertexBuffer::SetData ( const void *  newData,
uint32_t  size 
)
overridevirtual

Implements Elevate::VertexBuffer.

Definition at line 61 of file OpenGLBuffer.cpp.

62 {
63 if (m_rendererID != 0)
64 {
65 data = newData;
66 SetSize(size);
67
68 if (newData)
69 {
70 GLCheck(NamedBufferData(m_rendererID, GL_ARRAY_BUFFER, size, data, GL_DYNAMIC_DRAW));
71 }
72 }
73 else
74 {
75 EE_CORE_ERROR("ERROR : (OpenGLVertexBuffer::SetData) Buffer is not initialized yet.");
76 }
77 }

◆ SetLayout()

virtual void Elevate::OpenGLVertexBuffer::SetLayout ( const BufferLayout layout)
inlineoverridevirtual

Implements Elevate::VertexBuffer.

Definition at line 16 of file OpenGLBuffer.h.

16{ m_layout = layout; }

◆ Unbind()

void Elevate::OpenGLVertexBuffer::Unbind ( ) const
overridevirtual

Implements Elevate::VertexBuffer.

Definition at line 56 of file OpenGLBuffer.cpp.

57 {
58 GLCheck(glBindBuffer(GL_ARRAY_BUFFER, 0));
59 }

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