Zen 0.3.0
Loading...
Searching...
No Matches
ZEN_OpenGLBuffer.cpp
1#include <zen/platform/OpenGL/ZEN_OpenGLBuffer.h>
2
3namespace Zen {
4 // Vertex Buffer
5 OpenGLVertexBuffer::OpenGLVertexBuffer(float *vertices, uint32_t size) {
6 glCreateBuffers(1, &m_rendererID);
7 glBindBuffer(GL_ARRAY_BUFFER, m_rendererID);
8 glBufferData(GL_ARRAY_BUFFER, size, vertices, GL_STATIC_DRAW);
9 }
10
11 OpenGLVertexBuffer::~OpenGLVertexBuffer() { glDeleteBuffers(1, &m_rendererID); }
12
13 void OpenGLVertexBuffer::bind() const { glBindBuffer(GL_ARRAY_BUFFER, m_rendererID); }
14 void OpenGLVertexBuffer::unbind() const { glBindBuffer(GL_ARRAY_BUFFER, 0); }
15
16 void OpenGLVertexBuffer::setData(const void *data, uint32_t size) {
17 glBindBuffer(GL_ARRAY_BUFFER, m_rendererID);
18 glBufferSubData(GL_ARRAY_BUFFER, 0, size, data);
19 }
20
21 // Index Buffer
22 OpenGLIndexBuffer::OpenGLIndexBuffer(uint32_t *indices, uint32_t count) : m_count(count) {
23 glCreateBuffers(1, &m_rendererID);
24 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_rendererID);
25 glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(uint32_t), indices, GL_STATIC_DRAW);
26 }
27
28 OpenGLIndexBuffer::~OpenGLIndexBuffer() { glDeleteBuffers(1, &m_rendererID); }
29
30 void OpenGLIndexBuffer::bind() const { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_rendererID); }
31 void OpenGLIndexBuffer::unbind() const { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); }
32
33 uint32_t OpenGLIndexBuffer::getCount() const {
34 // ZEN_LOG_INFO("Index count: {}", m_count);
35 return m_count;
36 }
37
38 void OpenGLIndexBuffer::setCount(uint32_t count) { m_count = count; }
39} // namespace Zen