diff --git a/example/Vulkan/DrawText.cpp b/example/Vulkan/DrawText.cpp index 7efb9ec8..d2be04a6 100644 --- a/example/Vulkan/DrawText.cpp +++ b/example/Vulkan/DrawText.cpp @@ -32,8 +32,8 @@ private: vulkan::Pipeline * pipeline =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; - vulkan::VertexBuffer * tex_coord_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr; private: diff --git a/example/Vulkan/FragCoordTest.cpp b/example/Vulkan/FragCoordTest.cpp index a810136a..0391be1d 100644 --- a/example/Vulkan/FragCoordTest.cpp +++ b/example/Vulkan/FragCoordTest.cpp @@ -36,7 +36,7 @@ private: vulkan::Pipeline * pipeline =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; public: diff --git a/example/Vulkan/HQFilterTexture.cpp b/example/Vulkan/HQFilterTexture.cpp index 25d0d0d6..ee1e6d96 100644 --- a/example/Vulkan/HQFilterTexture.cpp +++ b/example/Vulkan/HQFilterTexture.cpp @@ -69,8 +69,8 @@ private: vulkan::Sampler * sampler_linear =nullptr; vulkan::Sampler * sampler_nearest =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; - vulkan::VertexBuffer * tex_coord_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr; vulkan::IndexBuffer * index_buffer =nullptr; SceneNode render_root; diff --git a/example/Vulkan/LoadStaticMesh.cpp b/example/Vulkan/LoadStaticMesh.cpp index b5170c9d..fb595339 100644 --- a/example/Vulkan/LoadStaticMesh.cpp +++ b/example/Vulkan/LoadStaticMesh.cpp @@ -36,7 +36,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const if(vertex_binding==-1) return(nullptr); - vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->position); + vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->position); render_obj=mtl->CreateRenderable(); render_obj->Set(vertex_binding,vbo); @@ -47,7 +47,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const if(normal_binding!=-1) { - vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->normal); + vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->normal); render_obj->Set(normal_binding,vbo); } @@ -56,7 +56,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const if(tagent_binding!=-1) { - vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->tangent); + vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->tangent); render_obj->Set(tagent_binding,vbo); } @@ -65,7 +65,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const if(bitagent_binding!=-1) { - vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->bitangent); + vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->bitangent); render_obj->Set(bitagent_binding,vbo); } diff --git a/example/Vulkan/RectanglePrimitive.cpp b/example/Vulkan/RectanglePrimitive.cpp index ec771eea..c5bb59db 100644 --- a/example/Vulkan/RectanglePrimitive.cpp +++ b/example/Vulkan/RectanglePrimitive.cpp @@ -45,8 +45,8 @@ private: vulkan::Pipeline * pipeline =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; - vulkan::VertexBuffer * tex_coord_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr; private: diff --git a/example/Vulkan/first_triangle.cpp b/example/Vulkan/first_triangle.cpp index 076ba59d..7d5deecf 100644 --- a/example/Vulkan/first_triangle.cpp +++ b/example/Vulkan/first_triangle.cpp @@ -42,8 +42,8 @@ private: vulkan::Pipeline * pipeline =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; - vulkan::VertexBuffer * color_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * color_buffer =nullptr; public: diff --git a/example/Vulkan/indices_rect.cpp b/example/Vulkan/indices_rect.cpp index 7f4e7c7e..058c106c 100644 --- a/example/Vulkan/indices_rect.cpp +++ b/example/Vulkan/indices_rect.cpp @@ -47,7 +47,7 @@ private: vulkan::Pipeline * pipeline =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; vulkan::IndexBuffer * index_buffer =nullptr; public: diff --git a/example/Vulkan/texture_rect.cpp b/example/Vulkan/texture_rect.cpp index 180d1bdb..feea2bf1 100644 --- a/example/Vulkan/texture_rect.cpp +++ b/example/Vulkan/texture_rect.cpp @@ -57,8 +57,8 @@ private: vulkan::Pipeline * pipeline =nullptr; - vulkan::VertexBuffer * vertex_buffer =nullptr; - vulkan::VertexBuffer * tex_coord_buffer =nullptr; + vulkan::VertexAttribBuffer * vertex_buffer =nullptr; + vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr; vulkan::IndexBuffer * index_buffer =nullptr; public: diff --git a/inc/hgl/graph/RenderableCreater.h b/inc/hgl/graph/RenderableCreater.h index c108b132..26350a51 100644 --- a/inc/hgl/graph/RenderableCreater.h +++ b/inc/hgl/graph/RenderableCreater.h @@ -2,7 +2,7 @@ #define HGL_GRAPH_RENDERABLE_CREATER_INCLUDE #include -#include +#include namespace hgl { namespace graph @@ -19,6 +19,8 @@ namespace hgl #undef VAN_DEFINE }//namespace VertexAttribName + #define VAN VertexAttribName + /** * 可渲染对象创建器 */ @@ -37,10 +39,10 @@ namespace hgl uint32 vertices_number; - VertexBufferCreater * vb_vertex; - vulkan::IndexBuffer * ibo; + VertexAttribBufferCreater * vabc_vertex; + vulkan::IndexBuffer * ibo; - Map vb_map; + MapObject vabc_maps; public: @@ -49,13 +51,25 @@ namespace hgl virtual bool Init(const uint32 count); - virtual VertexBufferCreater * Bind(const AnsiString &name); + virtual VertexAttribBufferCreater * CreateVAB(const AnsiString &name); + + #define PreDefineCreateVAB(name) \ + virtual VertexAttribBufferCreater * Create##name##Buffer(){return CreateVAB(VAN::name));} + + PreDefineCreateVAB(Vertex) + PreDefineCreateVAB(Normal) + PreDefineCreateVAB(Color) + PreDefineCreateVAB(Tangent) + PreDefineCreateVAB(Bitangent) + PreDefineCreateVAB(TexCoord) + + #undef PreDefineCreateVAB uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); virtual vulkan::Renderable * Finish(); - };//class GeometryCreater + };//class RenderableCreater }//namespace graph }//namespace hgl #endif//HGL_GRAPH_RENDERABLE_CREATER_INCLUDE diff --git a/inc/hgl/graph/SceneDB.h b/inc/hgl/graph/SceneDB.h index 1fcbf643..c5fca0ff 100644 --- a/inc/hgl/graph/SceneDB.h +++ b/inc/hgl/graph/SceneDB.h @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include namespace hgl @@ -26,7 +26,7 @@ namespace hgl using SamplerID =int; using TextureID =int; - class VertexBufferCreater; + class VertexAttribBufferCreater; /** * 场景DB,用于管理场景内所需的所有数据 @@ -64,9 +64,9 @@ namespace hgl public: //Create - vulkan::VertexBuffer *CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); - vulkan::VertexBuffer *CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);} - vulkan::VertexBuffer *CreateVBO(const VertexBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} + vulkan::VertexAttribBuffer *CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); + vulkan::VertexAttribBuffer *CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);} + vulkan::VertexAttribBuffer *CreateVBO(const VertexAttribBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} #define SCENE_DB_CREATE_FUNC(name) vulkan::Buffer *Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); \ vulkan::Buffer *Create##name(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); diff --git a/inc/hgl/graph/VertexBuffer.h b/inc/hgl/graph/VertexAttribBuffer.h similarity index 95% rename from inc/hgl/graph/VertexBuffer.h rename to inc/hgl/graph/VertexAttribBuffer.h index 05853032..71c684a7 100644 --- a/inc/hgl/graph/VertexBuffer.h +++ b/inc/hgl/graph/VertexAttribBuffer.h @@ -1,11 +1,11 @@ -#ifndef HGL_GRAPH_VERTEX_BUFFER_INCLUDE -#define HGL_GRAPH_VERTEX_BUFFER_INCLUDE +#ifndef HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE +#define HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE #include #include #include #include -#include +#include #include namespace hgl { @@ -14,7 +14,7 @@ namespace hgl /** * 顶点属性数据实际模板 */ - template class VertexBufferBase:public VertexBufferCreater + template class VertexAttribBufferBase:public VertexAttribBufferCreater { protected: @@ -25,7 +25,7 @@ namespace hgl public: - VertexBufferBase(uint32_t _size,const T *_data=nullptr):VertexBufferCreater(_size,C,sizeof(T)) + VertexAttribBufferBase(uint32_t _size,const T *_data=nullptr):VertexAttribBufferCreater(_size,C,sizeof(T)) { mem_type=(T *)GetData(); access=0; @@ -35,7 +35,7 @@ namespace hgl memcpy(mem_type,_data,total_bytes); } - virtual ~VertexBufferBase()=default; + virtual ~VertexAttribBufferBase()=default; void BufferData(const T *ptr) { @@ -53,7 +53,7 @@ namespace hgl { if(!mem_type||offset>=count) { - LOG_HINT(OS_TEXT("VertexBuffer::Get() out,offset:")+OSString::valueOf(offset)); + LOG_HINT(OS_TEXT("VertexAttribBuffer::Get() out,offset:")+OSString::valueOf(offset)); return(nullptr); } @@ -69,7 +69,7 @@ namespace hgl { if(access) { - LOG_HINT(OS_TEXT("VertexBuffer::Begin() access!=0,offset:")+OSString::valueOf(offset)); + LOG_HINT(OS_TEXT("VertexAttribBuffer::Begin() access!=0,offset:")+OSString::valueOf(offset)); return(nullptr); } @@ -99,7 +99,7 @@ namespace hgl { if(!this->access||this->access+C*number>this->mem_end) { - LOG_HINT(OS_TEXT("VertexBuffer::Write(const T *,number) out,number:")+OSString::valueOf(number)); + LOG_HINT(OS_TEXT("VertexAttribBuffer::Write(const T *,number) out,number:")+OSString::valueOf(number)); return(false); } @@ -109,16 +109,16 @@ namespace hgl return(true); } - };//class VertexBuffer + };//class VertexAttribBuffer /** * 一元数据缓冲区 */ - template class VertexBuffer1:public VertexBufferBase + template class VertexBuffer1:public VertexAttribBufferBase { public: - using VertexBufferBase::VertexBufferBase; + using VertexAttribBufferBase::VertexAttribBufferBase; virtual ~VertexBuffer1()=default; VkFormat GetDataType()const override; @@ -197,11 +197,11 @@ namespace hgl /** * 二元数据缓冲区 */ - template class VertexBuffer2:public VertexBufferBase + template class VertexBuffer2:public VertexAttribBufferBase { public: - using VertexBufferBase::VertexBufferBase; + using VertexAttribBufferBase::VertexAttribBufferBase; virtual ~VertexBuffer2()=default; VkFormat GetDataType()const override; @@ -486,11 +486,11 @@ namespace hgl /** * 三元数据缓冲区 */ - template class VertexBuffer3:public VertexBufferBase + template class VertexBuffer3:public VertexAttribBufferBase { public: - using VertexBufferBase::VertexBufferBase; + using VertexAttribBufferBase::VertexAttribBufferBase; virtual ~VertexBuffer3()=default; VkFormat GetDataType()const override; @@ -748,11 +748,11 @@ namespace hgl /** * 四元数据缓冲区 */ - template class VertexBuffer4:public VertexBufferBase + template class VertexBuffer4:public VertexAttribBufferBase { public: - using VertexBufferBase::VertexBufferBase; + using VertexAttribBufferBase::VertexAttribBufferBase; virtual ~VertexBuffer4()=default; VkFormat GetDataType()const override; @@ -1135,7 +1135,7 @@ namespace hgl * @param vecsize vec数量 * @param vertex_count 顶点数量 */ - VertexBufferCreater *CreateVB(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count); + VertexAttribBufferCreater *CreateVABCreater(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count); }//namespace graph }//namespace hgl -#endif//HGL_GRAPH_VERTEX_BUFFER_INCLUDE +#endif//HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE diff --git a/inc/hgl/graph/VertexBufferCreater.h b/inc/hgl/graph/VertexAttribBufferCreater.h similarity index 79% rename from inc/hgl/graph/VertexBufferCreater.h rename to inc/hgl/graph/VertexAttribBufferCreater.h index f8561a23..27c9960d 100644 --- a/inc/hgl/graph/VertexBufferCreater.h +++ b/inc/hgl/graph/VertexAttribBufferCreater.h @@ -1,12 +1,15 @@ -#ifndef HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE -#define HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE +#ifndef HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE +#define HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE #include namespace hgl { namespace graph { - class VertexBufferCreater + /** + * 顶点属性缓冲区创建者 + */ + class VertexAttribBufferCreater ///顶点属性缓冲区创建者 { void *mem_data; ///<内存中的数据 @@ -23,13 +26,13 @@ namespace hgl public: - VertexBufferCreater(uint32_t c,uint32_t dc,uint32_t cs):count(c),dc_num(dc),comp_stride(cs),stride(dc*cs),total_bytes(dc*cs*c) + VertexAttribBufferCreater(uint32_t c,uint32_t dc,uint32_t cs):count(c),dc_num(dc),comp_stride(cs),stride(dc*cs),total_bytes(dc*cs*c) { mem_data = hgl_malloc(total_bytes); //在很多情况下,hgl_malloc分配的内存是对齐的,这样有效率上的提升 mem_end = ((char *)mem_data) + total_bytes; } - virtual ~VertexBufferCreater() + virtual ~VertexAttribBufferCreater() { if(mem_data) hgl_free(mem_data); @@ -42,7 +45,7 @@ namespace hgl const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数 void * GetData ()const{return mem_data;} ///<取得数据指针 const uint32_t GetTotalBytes ()const{return total_bytes; } ///<取得数据字节数 - };//class VertexBufferCreater + };//class VertexAttribBufferCreater }//namespace graph }//namespace hgl -#endif//HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE +#endif//HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE diff --git a/inc/hgl/graph/vulkan/VK.h b/inc/hgl/graph/vulkan/VK.h index 478c3db2..2986f142 100644 --- a/inc/hgl/graph/vulkan/VK.h +++ b/inc/hgl/graph/vulkan/VK.h @@ -36,7 +36,7 @@ class Sampler; class Memory; class Buffer; struct BufferData; -class VertexBuffer; +class VertexAttribBuffer; class IndexBuffer; class CommandBuffer; diff --git a/inc/hgl/graph/vulkan/VKBuffer.h b/inc/hgl/graph/vulkan/VKBuffer.h index 65eb4952..e2b41d5c 100644 --- a/inc/hgl/graph/vulkan/VKBuffer.h +++ b/inc/hgl/graph/vulkan/VKBuffer.h @@ -21,7 +21,7 @@ protected: private: friend class Device; - friend class VertexBuffer; + friend class VertexAttribBuffer; friend class IndexBuffer; Buffer(VkDevice d,const BufferData &b) @@ -46,7 +46,7 @@ public: bool Write(const void *ptr) {return buf.memory->Write(ptr);} };//class Buffer -class VertexBuffer:public Buffer +class VertexAttribBuffer:public Buffer { VkFormat format; ///<数据格式 uint32_t stride; ///<单个数据字节数 @@ -56,7 +56,7 @@ private: friend class Device; - VertexBuffer(VkDevice d,const BufferData &vb,VkFormat fmt,uint32_t _stride,uint32_t _count):Buffer(d,vb) + VertexAttribBuffer(VkDevice d,const BufferData &vb,VkFormat fmt,uint32_t _stride,uint32_t _count):Buffer(d,vb) { format=fmt; stride=_stride; @@ -65,7 +65,7 @@ private: public: - ~VertexBuffer()=default; + ~VertexAttribBuffer()=default; const VkFormat GetFormat()const { return format; } const uint32_t GetStride()const { return stride; } @@ -75,7 +75,7 @@ public: { return Buffer::Map(start*stride,size*stride); } -};//class VertexBuffer:public Buffer +};//class VertexAttribBuffer:public Buffer class IndexBuffer:public Buffer { diff --git a/inc/hgl/graph/vulkan/VKDevice.h b/inc/hgl/graph/vulkan/VKDevice.h index 397fdf29..ce0b5560 100644 --- a/inc/hgl/graph/vulkan/VKDevice.h +++ b/inc/hgl/graph/vulkan/VKDevice.h @@ -9,7 +9,7 @@ #include #include #include -#include +#include namespace hgl { @@ -87,9 +87,9 @@ public: //Buffer相关 Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);} - VertexBuffer * CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); - VertexBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);} - VertexBuffer * CreateVBO(const VertexBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} + VertexAttribBuffer * CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); + VertexAttribBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);} + VertexAttribBuffer * CreateVBO(const VertexAttribBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); IndexBuffer * CreateIBO16(uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);} diff --git a/inc/hgl/graph/vulkan/VKRenderable.h b/inc/hgl/graph/vulkan/VKRenderable.h index b6632f81..7a98ac5b 100644 --- a/inc/hgl/graph/vulkan/VKRenderable.h +++ b/inc/hgl/graph/vulkan/VKRenderable.h @@ -47,8 +47,8 @@ public: void SetBoundingBox(const AABB &aabb){BoundingBox=aabb;} const AABB &GetBoundingBox()const {return BoundingBox;} - bool Set(const int stage_input_binding, VertexBuffer *vb,VkDeviceSize offset=0); - bool Set(const AnsiString &name, VertexBuffer *vb,VkDeviceSize offset=0); + bool Set(const int stage_input_binding, VertexAttribBuffer *vb,VkDeviceSize offset=0); + bool Set(const AnsiString &name, VertexAttribBuffer *vb,VkDeviceSize offset=0); bool Set(IndexBuffer *ib,VkDeviceSize offset=0) { diff --git a/src/RenderDevice/Vulkan/VKBuffer.cpp b/src/RenderDevice/Vulkan/VKBuffer.cpp index b2620b4b..5529f15f 100644 --- a/src/RenderDevice/Vulkan/VKBuffer.cpp +++ b/src/RenderDevice/Vulkan/VKBuffer.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include VK_NAMESPACE_BEGIN @@ -9,7 +9,7 @@ Buffer::~Buffer() vkDestroyBuffer(device,buf.buffer,nullptr); } -VertexBufferCreater *CreateVB(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count) +VertexAttribBufferCreater *CreateVABCreater(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count) { if(base_type==spirv_cross::SPIRType::SByte) { diff --git a/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp b/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp index e4fc4906..8d6c7069 100644 --- a/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceBuffer.cpp @@ -44,7 +44,7 @@ bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceS return(false); } -VertexBuffer *Device::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode) +VertexAttribBuffer *Device::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode) { const uint32_t stride=GetStrideByFormat(format); @@ -61,7 +61,7 @@ VertexBuffer *Device::CreateVBO(VkFormat format,uint32_t count,const void *data, if(!CreateBuffer(&buf,VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,size,data,sharing_mode)) return(nullptr); - return(new VertexBuffer(attr->device,buf,format,stride,count)); + return(new VertexAttribBuffer(attr->device,buf,format,stride,count)); } IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode) diff --git a/src/RenderDevice/Vulkan/VKRenderable.cpp b/src/RenderDevice/Vulkan/VKRenderable.cpp index e26430d0..5a8177f4 100644 --- a/src/RenderDevice/Vulkan/VKRenderable.cpp +++ b/src/RenderDevice/Vulkan/VKRenderable.cpp @@ -20,7 +20,7 @@ Renderable::~Renderable() delete[] buf_list; } -bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSize offset) +bool Renderable::Set(const int stage_input_binding,VertexAttribBuffer *vbo,VkDeviceSize offset) { if(stage_input_binding<0||stage_input_binding>=buf_count||!vbo)return(false); @@ -38,7 +38,7 @@ bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSiz return(true); } -bool Renderable::Set(const AnsiString &name,VertexBuffer *vbo,VkDeviceSize offset) +bool Renderable::Set(const AnsiString &name,VertexAttribBuffer *vbo,VkDeviceSize offset) { return Set(vertex_sm->GetStageInputBinding(name),vbo,offset); } diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 2f72361d..8e50e28a 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -12,8 +12,8 @@ SOURCE_GROUP("Material" FILES ${SG_MATERIAL_HEADER} SOURCE_GROUP("Material\\Shader" FILES ${SHADER_RESOURCE_FILES}) -SET(SG_VERTEX_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/VertexBufferCreater.h - ${ROOT_INCLUDE_PATH}/hgl/graph/VertexBuffer.h) +SET(SG_VERTEX_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/VertexAttribBufferCreater.h + ${ROOT_INCLUDE_PATH}/hgl/graph/VertexAttribBuffer.h) SOURCE_GROUP("VertexBuffer" FILES ${SG_VERTEX_SOURCE}) diff --git a/src/SceneGraph/InlineGeometry.cpp b/src/SceneGraph/InlineGeometry.cpp index c405f617..e48639f5 100644 --- a/src/SceneGraph/InlineGeometry.cpp +++ b/src/SceneGraph/InlineGeometry.cpp @@ -2,7 +2,7 @@ // GL to VK: swap Y/Z of position/normal/tangent/index #include -#include +#include #include #include #include @@ -103,7 +103,7 @@ namespace hgl private: - void Finish(int binding,VertexBufferCreater *vb) + void Finish(int binding,VertexAttribBufferCreater *vb) { render_obj->Set(binding,db->CreateVBO(vb)); delete vb; diff --git a/src/SceneGraph/RenderList.cpp b/src/SceneGraph/RenderList.cpp index de6d42c5..40ee8b56 100644 --- a/src/SceneGraph/RenderList.cpp +++ b/src/SceneGraph/RenderList.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/SceneGraph/RenderableCreater.cpp b/src/SceneGraph/RenderableCreater.cpp index 5c39b1a9..2e5c21dd 100644 --- a/src/SceneGraph/RenderableCreater.cpp +++ b/src/SceneGraph/RenderableCreater.cpp @@ -13,7 +13,7 @@ namespace hgl render_obj =nullptr; vertices_number =0; - vb_vertex =nullptr; + vabc_vertex =nullptr; ibo =nullptr; } @@ -33,25 +33,25 @@ namespace hgl return(true); } - VertexBufferCreater *RenderableCreater::Bind(const AnsiString &name) + VertexAttribBufferCreater *RenderableCreater::CreateVAB(const AnsiString &name) { if(!vsm)return(false); - VertexBufferCreater *vb; + VertexAttribBufferCreater *vabc; - if(vb_map.Get(name,vb)) - return vb; + if(vabc_maps.Get(name,vabc)) + return vabc; const vulkan::ShaderStage *ss=vsm->GetStageInput(name); if(!ss) return(nullptr); - vb=CreateVB(ss->base_type,ss->component,vertices_number); + vabc=hgl::graph::CreateVABCreater(ss->base_type,ss->component,vertices_number); - vb_map.Add(name,vb); + vabc_maps.Add(name,vabc); - return vb; + return vabc; } uint16 *RenderableCreater::CreateIBO16(uint count,const uint16 *data) @@ -74,7 +74,7 @@ namespace hgl { const uint si_count=vsm->GetStageInputCount(); - if(vb_map.GetCount()!=si_count) + if(vabc_maps.GetCount()!=si_count) return(nullptr); diff --git a/src/SceneGraph/SceneDB.cpp b/src/SceneGraph/SceneDB.cpp index 780dc4a6..dd22cb7a 100644 --- a/src/SceneGraph/SceneDB.cpp +++ b/src/SceneGraph/SceneDB.cpp @@ -6,9 +6,9 @@ namespace hgl { namespace graph { - vulkan::VertexBuffer *SceneDB::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode) + vulkan::VertexAttribBuffer *SceneDB::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode) { - vulkan::VertexBuffer *vb=device->CreateVBO(format,count,data,sharing_mode); + vulkan::VertexAttribBuffer *vb=device->CreateVBO(format,count,data,sharing_mode); if(!vb) return(nullptr);