#define GLFW_INCLUDE_NONE #include "OpenGLBuffer.h" #include #include namespace XCEngine { namespace RHI { OpenGLBuffer::OpenGLBuffer() : m_buffer(0) , m_size(0) , m_isIndexBuffer(false) { } OpenGLBuffer::~OpenGLBuffer() { Shutdown(); } bool OpenGLBuffer::InitializeVertexBuffer(const void* data, size_t size) { glGenBuffers(1, &m_buffer); glBindBuffer(GL_ARRAY_BUFFER, m_buffer); glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW); m_size = size; m_isIndexBuffer = false; return true; } bool OpenGLBuffer::InitializeIndexBuffer(const void* data, size_t size) { glGenBuffers(1, &m_buffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_buffer); glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, data, GL_STATIC_DRAW); m_size = size; m_isIndexBuffer = true; return true; } void OpenGLBuffer::Shutdown() { if (m_buffer) { glDeleteBuffers(1, &m_buffer); m_buffer = 0; } } void OpenGLBuffer::Bind() const { if (m_isIndexBuffer) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_buffer); } else { glBindBuffer(GL_ARRAY_BUFFER, m_buffer); } } void OpenGLBuffer::Unbind() const { if (m_isIndexBuffer) { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); } else { glBindBuffer(GL_ARRAY_BUFFER, 0); } } } // namespace RHI } // namespace XCEngine