summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/gpu_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-core/graphics/gpu_buffer.h')
-rw-r--r--source/modules/asura-core/graphics/gpu_buffer.h150
1 files changed, 74 insertions, 76 deletions
diff --git a/source/modules/asura-core/graphics/gpu_buffer.h b/source/modules/asura-core/graphics/gpu_buffer.h
index 09c5476..3153904 100644
--- a/source/modules/asura-core/graphics/gpu_buffer.h
+++ b/source/modules/asura-core/graphics/gpu_buffer.h
@@ -7,91 +7,89 @@
#include "gfx_device.h"
-namespace AsuraEngine
+namespace_begin(AsuraEngine)
+namespace_begin(Graphics)
+
+enum BufferType
+{
+ BUFFER_TYPE_VERTEX, ///< 㻺壬position\tangent\normal\color\texcoord(n)
+ BUFFER_TYPE_INDEX, ///<
+};
+
+enum BufferUsage
+{
+ BUFFER_USAGE_STREAM, ///< ޸һΣʹô
+ BUFFER_USAGE_DYNAMIC, ///< ޸һΣʹ
+ BUFFER_USAGE_STATIC, ///< ޸ĺʹ
+};
+
+enum BufferDataType
+{
+ BUFFER_DATA_TYPE_INT,
+ BUFFER_DATA_TYPE_FLOAT,
+ BUFFER_DATA_TYPE_UNSIGNED_BYTE,
+};
+
+///
+/// VRAM壬ֶ㻺vboebo֣ÿζڴԴϴݡframeworkrenderers
+///
+///
+ASURA_ABSTRACT class GPUBuffer
{
- namespace Graphics
- {
-
- enum BufferType
- {
- BUFFER_TYPE_VERTEX, ///< 㻺壬position\tangent\normal\color\texcoord(n)
- BUFFER_TYPE_INDEX, ///<
- };
-
- enum BufferUsage
- {
- BUFFER_USAGE_STREAM, ///< ޸һΣʹô
- BUFFER_USAGE_DYNAMIC, ///< ޸һΣʹ
- BUFFER_USAGE_STATIC, ///< ޸ĺʹ
- };
-
- enum BufferDataType
- {
- BUFFER_DATA_TYPE_INT,
- BUFFER_DATA_TYPE_FLOAT,
- BUFFER_DATA_TYPE_UNSIGNED_BYTE,
- };
-
- ///
- /// VRAM壬ֶ㻺vboebo֣ÿζڴԴϴݡframeworkrenderers
- ///
- ///
- ASURA_ABSTRACT class GPUBuffer
- {
- public:
-
- GPUBuffer(BufferType type, BufferUsage usage, BufferDataType datatype, size_t size);
- virtual ~GPUBuffer();
-
- static size_t GetDataTypeSize(GLenum datatype);
-
- bool Fill(const void* data, size_t size, uint offset = 0) ASURA_THROW(Exception);
-
- void Bind();
- void UnBind();
-
- uint GetBufferSize();
- uint GetBufferCount();
- GLenum GetDataType();
- size_t GetDataTypeSize();
-
- private:
-
- GLenum ConvertBufferType(BufferType type);
- GLenum ConvertBufferUsage(BufferUsage type);
- GLenum ConvertBufferDataType(BufferDataType type);
-
- GLenum m_Target;
- GLuint m_Buffer;
- ///
- /// openglԴ滺岢ûж͵ҪֻglVertexAttribPointerʱָ
- /// drawcall ʱݸʼַʹbufferȡඥݣԲͬ
- /// ԱһbufferСΪ˱ֽӿڵļ࣬ڳʼbufferʱָ
- /// ͣڱ͵һ£Բͬͷͬbuffer
- ///
- GLenum m_DataType;
- GLuint m_Usage;
- uint m_Size;
+public:
+
+ GPUBuffer(BufferType type, BufferUsage usage, BufferDataType datatype, size_t size);
+ virtual ~GPUBuffer();
+
+ static size_t GetDataTypeSize(GLenum datatype);
+
+ bool Fill(const void* data, size_t size, uint offset = 0) ASURA_THROW(Exception);
+
+ void Bind();
+ void UnBind();
+
+ uint GetBufferSize();
+ uint GetBufferCount();
+ GLenum GetDataType();
+ size_t GetDataTypeSize();
+
+private:
+
+ GLenum ConvertBufferType(BufferType type);
+ GLenum ConvertBufferUsage(BufferUsage type);
+ GLenum ConvertBufferDataType(BufferDataType type);
+
+ GLenum m_Target;
+ GLuint m_Buffer;
+
+ /// openglԴ滺岢ûж͵ҪֻglVertexAttribPointerʱָdrawcall ʱݸ
+ /// ʼַʹbufferȡඥݣԲͬͿԱһbufferСΪ˱
+ /// ӿڵļ࣬ڳʼbufferʱָͣڱ͵һ£Բͬ
+ /// ͷͬbuffer
+
+ GLenum m_DataType;
+ GLuint m_Usage;
+ uint m_Size;
#if ASURA_DEBUG
- byte* m_Data;
+ byte* m_Data;
#endif
- luaxport:
+luaxport:
- LUAX_DECL_ABSTRACT_FACTORY(GPUBuffer);
+ LUAX_DECL_ABSTRACT_FACTORY(GPUBuffer);
- LUAX_DECL_ENUM(BufferType, 1);
- LUAX_DECL_ENUM(BufferUsage, 1);
- LUAX_DECL_ENUM(BufferDataType, 2);
+ LUAX_DECL_ENUM(BufferType, 1);
+ LUAX_DECL_ENUM(BufferUsage, 1);
+ LUAX_DECL_ENUM(BufferDataType, 2);
- LUAX_DECL_METHOD(_Fill);
- LUAX_DECL_METHOD(_GetSize);
- LUAX_DECL_METHOD(_GetCount);
+ LUAX_DECL_METHOD(_Fill);
+ LUAX_DECL_METHOD(_GetSize);
+ LUAX_DECL_METHOD(_GetCount);
- };
+};
- }
-}
+namespace_end
+namespace_end
#endif \ No newline at end of file