summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/graphics/gpu_buffer.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-04-10 09:03:57 +0800
committerchai <chaifix@163.com>2019-04-10 09:03:57 +0800
commitb5b43bac50ad58949e70bcd1a34b1e6c4765fd51 (patch)
tree32e8655bf48ca059d818501c8d95fc92ae97b318 /source/modules/asura-core/graphics/gpu_buffer.h
parent200f710983fd54b23437cb78d5a03c90b5a47523 (diff)
*misc
Diffstat (limited to 'source/modules/asura-core/graphics/gpu_buffer.h')
-rw-r--r--source/modules/asura-core/graphics/gpu_buffer.h39
1 files changed, 30 insertions, 9 deletions
diff --git a/source/modules/asura-core/graphics/gpu_buffer.h b/source/modules/asura-core/graphics/gpu_buffer.h
index c79ed4b..f2e83fc 100644
--- a/source/modules/asura-core/graphics/gpu_buffer.h
+++ b/source/modules/asura-core/graphics/gpu_buffer.h
@@ -14,7 +14,7 @@ namespace AsuraEngine
enum BufferType
{
- BUFFER_TYPE_VERTEX, ///< 㻺
+ BUFFER_TYPE_VERTEX, ///< 㻺壬position\tangent\normal\color\texcoord(n)
BUFFER_TYPE_INDEX, ///<
};
@@ -25,16 +25,22 @@ namespace AsuraEngine
BUFFER_USAGE_STATIC, ///< ޸ĺʹ
};
+ enum BufferDataType
+ {
+ BUFFER_DATA_TYPE_INT,
+ BUFFER_DATA_TYPE_FLOAT,
+ BUFFER_DATA_TYPE_UNSIGNED_BYTE,
+ };
+
///
- /// GPU壬ֶ㻺֣ÿζڴԴϴݡ
+ /// GPU壬ֶ㻺vboebo֣ÿζڴԴϴݡ
///
- class GPUBuffer
- : AEScripting::Portable<GPUBuffer>
+ ASURA_ABSTRACT class GPUBuffer : public AEScripting::Object
{
public:
- GPUBuffer(BufferType type, BufferUsage usage, size_t size);
- ~GPUBuffer();
+ GPUBuffer(BufferType type, BufferUsage usage, BufferDataType datatype, size_t size);
+ virtual ~GPUBuffer();
///
/// ʼ\»棬ûgpu bufferԴΪdzʼΪǸ¡
@@ -49,24 +55,39 @@ namespace AsuraEngine
uint GetBufferSize();
+ GLenum GetDataType();
+
private:
//----------------------------------------------------------------------------//
- LUAX_DECL_FACTORY(GPUBuffer);
+ LUAX_DECL_ABSTRACT_FACTORY(GPUBuffer);
LUAX_DECL_ENUM(BufferType, 1);
LUAX_DECL_ENUM(BufferUsage, 1);
+ LUAX_DECL_ENUM(BufferDataType, 2);
- LUAX_DECL_METHOD(_New);
LUAX_DECL_METHOD(_Fill);
LUAX_DECL_METHOD(_GetSize);
+ LUAX_DECL_METHOD(_GetCount);
//----------------------------------------------------------------------------//
+ GLenum ConvertBufferType(BufferType type);
+ GLenum ConvertBufferUsage(BufferUsage type);
+ GLenum ConvertBufferDataType(BufferDataType type);
+ size_t GetDataTypeSize();
+
GLenum mTarget;
GLuint mBuffer;
- GLuint mUsage;
+ ///
+ /// openglԴ滺岢ûж͵ҪֻglVertexAttribPointerʱָ
+ /// drawcall ʱݸʼַʹbufferȡඥݣԲͬ
+ /// ԱһbufferСΪ˱ֽӿڵļ࣬ڳʼbufferʱָ
+ /// ͣڱ͵һ£Բͬͷͬbuffer
+ ///
+ GLenum mDataType;
+ GLuint mUsage;
uint mSize;
#if ASURA_DEBUG