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

#include <OpenGLVertexArray.h>

Inheritance diagram for Elevate::OpenGLVertexArray:
Elevate::VertexArray

Public Member Functions

 OpenGLVertexArray ()
 
 ~OpenGLVertexArray ()
 
virtual void Bind () const override
 
virtual void Unbind () const override
 
virtual void AddVertexBuffer (const std::shared_ptr< VertexBuffer > &vertexBuffer) override
 
virtual void SetIndexBuffer (const std::shared_ptr< IndexBuffer > &indexBuffer) override
 
void LinkAttribute (uint32_t layout, uint32_t size, uint32_t type, bool normalized, uint32_t stride, const void *offset) const
 
- Public Member Functions inherited from Elevate::VertexArray
virtual ~VertexArray ()=default
 
virtual void ClearVertexBuffers ()
 
void SetSingleVertexBuffer (const std::shared_ptr< VertexBuffer > &vertexBuffer)
 
const std::vector< std::shared_ptr< VertexBuffer > > & GetVertexBuffers () const
 
const std::shared_ptr< IndexBufferGetIndexBuffer () const
 

Additional Inherited Members

- Static Public Member Functions inherited from Elevate::VertexArray
static VertexArrayCreate ()
 

Detailed Description

Definition at line 7 of file OpenGLVertexArray.h.

Constructor & Destructor Documentation

◆ OpenGLVertexArray()

Elevate::OpenGLVertexArray::OpenGLVertexArray ( )

Definition at line 13 of file OpenGLVertexArray.cpp.

14{
15#ifdef EE_SUPPORTS_DSA
16 GLCheck(glCreateVertexArrays(1, &m_RendererID));
17#else
18 GLCheck(glGenVertexArrays(1, &m_RendererID));
19#endif
20}
#define GLCheck(x)
Definition GLDebug.h:11

◆ ~OpenGLVertexArray()

Elevate::OpenGLVertexArray::~OpenGLVertexArray ( )

Definition at line 22 of file OpenGLVertexArray.cpp.

23{
25 {
26 GLCheck(glDeleteVertexArrays(1, &m_RendererID));
27 }
28}

Member Function Documentation

◆ AddVertexBuffer()

void Elevate::OpenGLVertexArray::AddVertexBuffer ( const std::shared_ptr< VertexBuffer > &  vertexBuffer)
overridevirtual

Reimplemented from Elevate::VertexArray.

Definition at line 40 of file OpenGLVertexArray.cpp.

41{
42 VertexArray::AddVertexBuffer(vertexBuffer);
43
44 EE_CORE_ASSERT(vertexBuffer->GetLayout().GetElements().size(), "Vertex buffer layout is empty, assertion failed");
45
46 Bind(); // bind VAO
47 vertexBuffer->Bind(); // bind VBO
48
49 uint32_t index = 0;
50 const auto& layout = vertexBuffer->GetLayout();
51
52 EE_CORE_TRACE("Adding Vertex Buffer :");
53 for (const auto& element : layout)
54 {
55 // TODO REMOVES THE LOGS FROM HERE
56 EE_CORE_TRACE(" -> Attrib {} : {} | Count={} | Type={} | Stride={} | Offset={}",
57 element.Name.c_str(), index, element.Count, GetDataAPIType(element.Type), layout.GetStride(), element.Offset);
58
60 index,
61 element.Count, GetDataAPIType(element.Type),
62 element.Normalized,
63 layout.GetStride(),
64 (const void*)(uintptr_t)element.Offset
65 );
66
67 index++;
68 }
69}
virtual void Bind() const override
void LinkAttribute(uint32_t layout, uint32_t size, uint32_t type, bool normalized, uint32_t stride, const void *offset) const
virtual void AddVertexBuffer(const std::shared_ptr< VertexBuffer > &vertexBuffer)
uint32_t GetDataAPIType(EngineDataType type)
Definition Data.h:125

◆ Bind()

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

Implements Elevate::VertexArray.

Definition at line 30 of file OpenGLVertexArray.cpp.

31{
32 GLCheck(glBindVertexArray(m_RendererID));
33}

◆ LinkAttribute()

void Elevate::OpenGLVertexArray::LinkAttribute ( uint32_t  layout,
uint32_t  size,
uint32_t  type,
bool  normalized,
uint32_t  stride,
const void *  offset 
) const

Definition at line 78 of file OpenGLVertexArray.cpp.

79{
80 GLCheck(glEnableVertexAttribArray(layout));
81 GLCheck(glVertexAttribPointer(layout, size, type, normalized ? GL_TRUE : GL_FALSE, stride, offset));
82}

◆ SetIndexBuffer()

void Elevate::OpenGLVertexArray::SetIndexBuffer ( const std::shared_ptr< IndexBuffer > &  indexBuffer)
overridevirtual

Reimplemented from Elevate::VertexArray.

Definition at line 71 of file OpenGLVertexArray.cpp.

72{
73 VertexArray::SetIndexBuffer(indexBuffer);
74 Bind();
75 indexBuffer->Bind();
76}
virtual void SetIndexBuffer(const std::shared_ptr< IndexBuffer > &indexBuffer)

◆ Unbind()

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

Implements Elevate::VertexArray.

Definition at line 35 of file OpenGLVertexArray.cpp.

36{
37 GLCheck(glBindVertexArray(0));
38}

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