diff options
author | chai <chaifix@163.com> | 2019-04-10 09:03:57 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-04-10 09:03:57 +0800 |
commit | b5b43bac50ad58949e70bcd1a34b1e6c4765fd51 (patch) | |
tree | 32e8655bf48ca059d818501c8d95fc92ae97b318 /source/modules/asura-core/graphics/gpu_buffer.h | |
parent | 200f710983fd54b23437cb78d5a03c90b5a47523 (diff) |
*misc
Diffstat (limited to 'source/modules/asura-core/graphics/gpu_buffer.h')
-rw-r--r-- | source/modules/asura-core/graphics/gpu_buffer.h | 39 |
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 |