Skip to content

Commit

Permalink
Working on opengl buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
tomheeleynz committed Nov 14, 2022
1 parent 1d90fec commit 974fe04
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
45 changes: 45 additions & 0 deletions Arcane/src/Arcane/Platform/OpenGL/OpenGLBuffer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#include "OpenGLBuffer.h"

#include <glad/glad.h>

namespace Arcane
{
////////////////////////////////////////////////////////
//// Vertex Buffer
////////////////////////////////////////////////////////
OpenGLVertexBuffer::OpenGLVertexBuffer(void* data, uint32_t size)
{
glGenBuffers(1, &m_VBO);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}

void OpenGLVertexBuffer::AddIndexBuffer(IndexBuffer* _indexBuffer)
{
m_IndexBuffer = _indexBuffer;
}

IndexBuffer* OpenGLVertexBuffer::GetIndexBuffer()
{
return m_IndexBuffer;
}

////////////////////////////////////////////////////////
//// Index Buffer
////////////////////////////////////////////////////////
OpenGLIndexBuffer::OpenGLIndexBuffer(void* data, uint32_t count)
{
m_Count = count;

glGenBuffers(1, &m_EBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(uint32_t) * count, data, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}

uint32_t OpenGLIndexBuffer::GetCount()
{
return m_Count;
}
}
35 changes: 35 additions & 0 deletions Arcane/src/Arcane/Platform/OpenGL/OpenGLBuffer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once
#include "Arcane/Renderer/Buffer.h"

namespace Arcane
{
////////////////////////////////////////////////////////
//// Vertex Buffer
////////////////////////////////////////////////////////
class OpenGLVertexBuffer : public VertexBuffer
{
public:
OpenGLVertexBuffer(void* data, uint32_t size);

void AddIndexBuffer(IndexBuffer* _indexBuffer) override;
IndexBuffer* GetIndexBuffer() override;
private:
IndexBuffer* m_IndexBuffer;
uint32_t m_VBO;
};

////////////////////////////////////////////////////////
//// Index Buffer
////////////////////////////////////////////////////////
class OpenGLIndexBuffer : public IndexBuffer
{
public:
OpenGLIndexBuffer(void* data, uint32_t count);

uint32_t GetCount();
private:
uint32_t m_EBO;
uint32_t m_Count;
};

}

0 comments on commit 974fe04

Please sign in to comment.