sculpto
Public Member Functions | List of all members
scl::gl_vertex_buffer Class Reference

#include <gl_buffer.h>

Inheritance diagram for scl::gl_vertex_buffer:
scl::vertex_buffer

Public Member Functions

u32 GetCount () const override
 
render_primitive::handle GetHandle () const override
 
 gl_vertex_buffer (u32 Count, const vertex_layout &VertexLayout)
 
 gl_vertex_buffer (const void *Vertices, u32 Count, const vertex_layout &VertexLayout)
 
 ~gl_vertex_buffer ()
 
void Bind () const override
 
void Unbind () const override
 
void Update (const void *Vertices, u32 Count) override
 
void Free () override
 
- Public Member Functions inherited from scl::vertex_buffer
vertex_layout GetVertexLayout () const
 
 vertex_buffer (const vertex_layout &VertexLayout)
 
virtual ~vertex_buffer ()=default
 
virtual void Bind () const =0
 
virtual void Unbind () const =0
 
virtual void Update (const void *Vertices, u32 Count)=0
 
virtual void Free ()=0
 
virtual u32 GetCount () const =0
 

Additional Inherited Members

- Static Public Member Functions inherited from scl::vertex_buffer
static shared< vertex_bufferCreate (u32 Count, const vertex_layout &VertexLayout)
 
static shared< vertex_bufferCreate (const void *Vertices, u32 Count, const vertex_layout &VertexLayout)
 
- Protected Attributes inherited from scl::vertex_buffer
vertex_layout VertexLayout {}
 

Detailed Description

Vertex bufer interface.

Definition at line 83 of file gl_buffer.h.

Constructor & Destructor Documentation

◆ gl_vertex_buffer() [1/2]

scl::gl_vertex_buffer::gl_vertex_buffer ( u32  Count,
const vertex_layout VertexLayout 
)
  • Empty vertex buffer constructor.
Parameters
Count- vertices in buffer count.
VertexLayout- layout of vertices in buffer.
Returns
constant buffer pointer.

Definition at line 76 of file gl_buffer.cpp.

76 :
78{
79 this->VerticesCount = Count;
80
81 glGenBuffers(1, &Id);
82 glBindBuffer(GL_ARRAY_BUFFER, Id);
83 glBufferData(GL_ARRAY_BUFFER, Count, nullptr, GL_DYNAMIC_DRAW);
84 glBindBuffer(GL_ARRAY_BUFFER, 0);
85
86 SCL_CORE_SUCCES("OpenGL Vertex buffer with id {} and {} verices created.", Id, Count);
87}
vertex_layout VertexLayout
Definition: buffer.h:103
vertex_buffer(const vertex_layout &VertexLayout)
Definition: buffer.cpp:38
#define SCL_CORE_SUCCES(...)
Definition: log.h:42

◆ gl_vertex_buffer() [2/2]

scl::gl_vertex_buffer::gl_vertex_buffer ( const void *  Vertices,
u32  Count,
const vertex_layout VertexLayout 
)
  • Vertex buffer filled with data constructor.
Parameters
Vertices- buffer data pointer.
Count- vertices in buffer count.
VertexLayout- layout of vertices in buffer.

Definition at line 89 of file gl_buffer.cpp.

89 :
91{
92 this->VerticesCount = Count;
93
94 glCreateBuffers(1, &Id);
95 glBindBuffer(GL_ARRAY_BUFFER, Id);
96 glBufferData(GL_ARRAY_BUFFER, (u64)Count * VertexLayout.GetSize(), Vertices, GL_STATIC_DRAW);
97 glBindBuffer(GL_ARRAY_BUFFER, 0);
98
99 SCL_CORE_SUCCES("OpenGL Vertex buffer with id {} and {} verices created.", Id, Count);
100}
u32 GetSize() const
Definition: vertex.h:46
uint64_t u64
Definition: math_common.h:23

◆ ~gl_vertex_buffer()

scl::gl_vertex_buffer::~gl_vertex_buffer ( )

Vertex buffer default destructor.

Definition at line 102 of file gl_buffer.cpp.

103{
104 Free();
105}
void Free() override
Definition: gl_buffer.cpp:129

Member Function Documentation

◆ Bind()

void scl::gl_vertex_buffer::Bind ( ) const
overridevirtual
  • Bind buffer to current render stage function.
Parameters
None.
Returns
None.

Implements scl::vertex_buffer.

Definition at line 107 of file gl_buffer.cpp.

108{
109 if (Id != 0) glBindBuffer(GL_ARRAY_BUFFER, Id);
110}

◆ Free()

void scl::gl_vertex_buffer::Free ( )
overridevirtual
  • Clear buffer from GPU memory function.
Parameters
None.
Returns
None.

Implements scl::vertex_buffer.

Definition at line 129 of file gl_buffer.cpp.

130{
131 if (Id != 0)
132 {
133 glDeleteBuffers(1, &Id);
134
135 SCL_CORE_INFO("OpenGL Vertex buffer with id {} freed.", Id);
136 Id = 0, VerticesCount = 0;
137 }
138}
#define SCL_CORE_INFO(...)
Definition: log.h:41

◆ GetCount()

u32 scl::gl_vertex_buffer::GetCount ( ) const
inlineoverridevirtual

Vertex buffer data getter/setter functions.

Vertex buffer vertices count getter function.

Implements scl::vertex_buffer.

Definition at line 91 of file gl_buffer.h.

91{ return VerticesCount; }

◆ GetHandle()

render_primitive::handle scl::gl_vertex_buffer::GetHandle ( ) const
inlineoverride

Backend api render primitive hadnle getter function.

Definition at line 95 of file gl_buffer.h.

95{ return Id; }

◆ Unbind()

void scl::gl_vertex_buffer::Unbind ( ) const
overridevirtual
  • Unbind buffer from current render stage function.
Parameters
None.
Returns
None.

Implements scl::vertex_buffer.

Definition at line 112 of file gl_buffer.cpp.

113{
114 glBindBuffer(GL_ARRAY_BUFFER, 0);
115}

◆ Update()

void scl::gl_vertex_buffer::Update ( const void *  Vertices,
u32  Count 
)
overridevirtual
  • Update buffer data function.
Parameters
Vertices- verices array.
Count- length of vertices array.
Returns
None.

Implements scl::vertex_buffer.

Definition at line 117 of file gl_buffer.cpp.

118{
119 if (Id != 0)
120 {
121 SCL_CORE_ASSERT(Count == this->VerticesCount, "Vertices count can't be changed.");
122
123 glBindBuffer(GL_ARRAY_BUFFER, Id);
124 glBufferSubData(GL_ARRAY_BUFFER, 0, (u64)Count * VertexLayout.GetSize(), Vertices);
125 glBindBuffer(GL_ARRAY_BUFFER, 0);
126 }
127}
#define SCL_CORE_ASSERT(expr,...)
Definition: assert.h:69

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