From d31afd1c451f3e4b4921df769b68f76276105b6d Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 23 Mar 2019 02:06:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A7=E7=9A=84VertexBuffe?= =?UTF-8?q?rObject=E7=B1=BB=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/hgl/graph/VertexBufferObject.h | 58 ++---------------------------- src/RenderDriver/CMakeLists.txt | 4 ++- 2 files changed, 5 insertions(+), 57 deletions(-) diff --git a/inc/hgl/graph/VertexBufferObject.h b/inc/hgl/graph/VertexBufferObject.h index b5793884..ac32a6af 100644 --- a/inc/hgl/graph/VertexBufferObject.h +++ b/inc/hgl/graph/VertexBufferObject.h @@ -1,65 +1,11 @@ #ifndef HGL_GRAPH_VERTEX_BUFFER_OBJECT_INCLUDE #define HGL_GRAPH_VERTEX_BUFFER_OBJECT_INCLUDE -#include +#include namespace hgl { namespace graph { - /** - * 顶点缓冲区对象,对应OpenGL的VBO管理 - */ - class VertexBufferObject:public BufferObject - { - protected: - - - GLenum data_type; ///<单个数据类型 (GL_BYTE,GL_UNSIGNED_SHORT,GL_FLOAT等) - uint data_bytes; ///<单个数据字节数 (GL_BYTE为1,GL_UNSIGNED_SHORT为2GL_FLOAT为4等) - uint data_comp; ///<数据成员数 (1/2/3/4,如2D纹理坐标用2,3D坐标/法线用3) - - GLsizeiptr data_count; ///<数据数量 - GLsizeiptr total_bytes; ///<数据总字节数 - - public: - - VertexBufferObject(const GLuint index, - const GLenum &buf_type, - const GLenum &dsup, - const uint &dt,const uint &dbytes,const uint &dcm, - const GLsizeiptr &count) - { - buffer_index=index; - buffer_type=buf_type; - user_pattern=dsup; - - data_type=dt; - data_bytes=dbytes; - data_comp=dcm; - - data_count=count; - total_bytes=data_bytes*data_comp*data_count; - } - - virtual ~VertexBufferObject()=default; - - public: - - - GLenum GetDataType ()const {return data_type;} ///<取得数据类型 - uint GetComponent ()const {return data_comp;} ///<取数每一组数据中的数据数量 - uint GetStride ()const {return data_comp*data_bytes;} ///<取得每一组数据字节数 - - GLsizeiptr GetCount ()const {return data_count;} ///<取得数据数量 - - - public: - - virtual void Update()=0; ///<向缓冲区提交所有数据 - virtual void Change(const GLsizeiptr start,const GLsizeiptr size)=0; ///<向缓冲区提交部分数据 - virtual void Change(const GLsizeiptr start,const GLsizeiptr size,const void *)=0; ///<向缓冲区提交部分数据 - };//class VertexBufferObject - /** * 创建一个VBO对象 * @param buf_type 缓冲区类型(GL_ARRAY_BUFFER,GL_ELEMENT_ARRAY_BUFFER等) @@ -71,7 +17,7 @@ namespace hgl */ VertexBufferObject *CreateVBO( const GLenum &buf_type, const GLenum &dsup, - const uint &data_type,const uint &data_bytes,const uint &data_comp, + const uint &data_type,const uint &data_bytes,const uint &data_comp, const GLsizeiptr &size); }//namespace graph }//namespace hgl diff --git a/src/RenderDriver/CMakeLists.txt b/src/RenderDriver/CMakeLists.txt index 5cfd006a..793faa36 100644 --- a/src/RenderDriver/CMakeLists.txt +++ b/src/RenderDriver/CMakeLists.txt @@ -3,6 +3,8 @@ SET(GRAPH_SRC_FILES OpenGLDebug.cpp OpenGLExt.cpp GLSL.cpp Shader.cpp + BufferData.cpp + BufferObject.cpp VertexArray.cpp VertexBuffer.cpp VertexBufferObject.cpp @@ -11,7 +13,7 @@ SET(GRAPH_SRC_FILES OpenGLDebug.cpp Texture1DDSA.cpp Texture2D.cpp Texture2DDSA.cpp) - + source_group("Headers" FILES ${GRAPH_INC_FILES}) source_group("Sources" FILES ${GRAPH_SRC_FILES})