diff options
author | chai <chaifix@163.com> | 2019-08-02 20:51:00 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-02 20:51:00 +0800 |
commit | bad78945ceba425f6a80e3b8dca2414d592970eb (patch) | |
tree | 8bf7540766349c534bf9e5746b24fd7507ba034e /source/modules/asura-core/graphics/gpu_buffer.cpp | |
parent | 99b90496765df21c5f377f42b9ed073ccb34c1fd (diff) |
*修改文件名格式
Diffstat (limited to 'source/modules/asura-core/graphics/gpu_buffer.cpp')
-rw-r--r-- | source/modules/asura-core/graphics/gpu_buffer.cpp | 151 |
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 |