summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/gpu_buffer.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-02 20:51:00 +0800
committerchai <chaifix@163.com>2019-08-02 20:51:00 +0800
commitbad78945ceba425f6a80e3b8dca2414d592970eb (patch)
tree8bf7540766349c534bf9e5746b24fd7507ba034e /source/modules/asura-core/graphics/gpu_buffer.cpp
parent99b90496765df21c5f377f42b9ed073ccb34c1fd (diff)
*修改文件名格式
Diffstat (limited to 'source/modules/asura-core/graphics/gpu_buffer.cpp')
-rw-r--r--source/modules/asura-core/graphics/gpu_buffer.cpp151
1 files changed, 0 insertions, 151 deletions
diff --git a/source/modules/asura-core/graphics/gpu_buffer.cpp b/source/modules/asura-core/graphics/gpu_buffer.cpp
deleted file mode 100644
index 4271b70..0000000
--- a/source/modules/asura-core/graphics/gpu_buffer.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "gpu_buffer.h"
-
-namespace_begin(AsuraEngine)
-namespace_begin(Graphics)
-
-GPUBuffer::GPUBuffer(BufferType type, BufferUsage usage, BufferDataType dataType, size_t size)
- : m_Target(GL_ZERO)
- , m_Buffer(GL_ZERO)
- , m_Size(0)
-#if ASURA_DEBUG
- , m_Data(nullptr)
-#endif
-{
- m_Target = ConvertBufferType(type);
- m_Usage = ConvertBufferUsage(usage);
- m_DataType = ConvertBufferDataType(dataType);
- m_Size = size;
-}
-
-GPUBuffer::~GPUBuffer()
-{
-#if ASURA_DEBUG
- if (m_Data)
- free(m_Data);
-#endif
- glDeleteBuffers(1, &m_Buffer);
-}
-
-GLenum GPUBuffer::ConvertBufferType(BufferType type)
-{
- switch (type)
- {
- case BUFFER_TYPE_VERTEX:
- return GL_ARRAY_BUFFER;
- case BUFFER_TYPE_INDEX:
- return GL_ELEMENT_ARRAY_BUFFER;
- }
-}
-
-GLenum GPUBuffer::ConvertBufferUsage(BufferUsage usage)
-{
- switch (usage)
- {
- case BUFFER_USAGE_STREAM:
- return GL_STREAM_DRAW;
- case BUFFER_USAGE_DYNAMIC:
- return GL_DYNAMIC_DRAW;
- case BUFFER_USAGE_STATIC:
- return GL_STATIC_DRAW;
- }
-}
-
-GLenum GPUBuffer::ConvertBufferDataType(BufferDataType type)
-{
- switch (type)
- {
- case BUFFER_DATA_TYPE_INT:
- return GL_INT;
- case BUFFER_DATA_TYPE_FLOAT:
- return GL_FLOAT;
- case BUFFER_DATA_TYPE_UNSIGNED_BYTE:
- return GL_UNSIGNED_BYTE;
- }
-}
-
-bool GPUBuffer::Fill(const void * data, size_t size, uint offset)
-{
- if (data == nullptr)
- return false;
- if (m_Buffer == 0)
- {
- g_Device.WipeError();
- glGenBuffers(1, &m_Buffer);
- if (m_Buffer == 0)
- throw Exception("OpenGL glGenBuffers failed.");
- glBindBuffer(m_Target, m_Buffer);
- glBufferData(m_Target, m_Size, NULL, m_Usage);
- if (g_Device.HasError())
- {
- glBindBuffer(m_Target, 0);
- throw Exception("OpenGL glBufferData failed. Errorcode=%d.", g_Device.GetError());
- }
-#if ASURA_DEBUG
- m_Data = (byte*)malloc(size);
- memset(m_Data, 0, size);
-#endif
- }
- else
- glBindBuffer(m_Target, m_Buffer);
- glBufferSubData(m_Target, offset, size, data);
- if (g_Device.HasError())
- {
- glBindBuffer(m_Target, 0);
- throw Exception("OpenGL glBufferSubData failed. Errorcode=%d.", g_Device.GetError());
- }
- glBindBuffer(m_Target, 0);
-#if ASURA_DEBUG
- memcpy(m_Data + offset, data, size);
-#endif
- return true;
-}
-
-void GPUBuffer::Bind()
-{
- glBindBuffer(m_Target, m_Buffer);
-}
-
-void GPUBuffer::UnBind()
-{
- glBindBuffer(m_Target, 0);
-}
-
-uint GPUBuffer::GetBufferSize()
-{
- return m_Size;
-}
-
-GLenum GPUBuffer::GetDataType()
-{
- return m_DataType;
-}
-
-size_t GPUBuffer::GetDataTypeSize()
-{
- //https://blog.csdn.net/nklinux/article/details/16919017
- switch (m_DataType)
- {
- case GL_UNSIGNED_BYTE:
- return sizeof(GLbyte);
- case GL_FLOAT :
- return sizeof(GLfloat);
- case GL_INT:
- return sizeof(GLint);
- }
-}
-
-size_t GPUBuffer::GetDataTypeSize(GLenum datatype)
-{
- switch (datatype)
- {
- case GL_UNSIGNED_BYTE:
- return sizeof(GLbyte);
- case GL_FLOAT:
- return sizeof(GLfloat);
- case GL_INT:
- return sizeof(GLint);
- }
-}
-
-namespace_end
-namespace_end \ No newline at end of file