diff --git a/example/Vulkan/Geometry2D.cpp b/example/Vulkan/Geometry2D.cpp index da7c1827..fda3087f 100644 --- a/example/Vulkan/Geometry2D.cpp +++ b/example/Vulkan/Geometry2D.cpp @@ -22,32 +22,6 @@ struct WorldConfig Matrix4f mvp; }world; -VK_NAMESPACE_BEGIN -//using MaterialID=int; -//using PipelineID=int; -//using DescriptorSetsID=int; -//using RenderableID=int; -// -///** -// * 场景DB,用于管理场景内所需的所有数据 -// */ -//class SceneDatabase -//{ -// IDResManage rm_material; ///<材质合集 -// IDResManage rm_pipeline; ///<管线合集 -// IDResManage rm_desc_sets; ///<描述符合集 -// IDResManage rm_renderable; ///<可渲染对象合集 -// -//public: -// -// MaterialID Add(Material * mtl ){return rm_material.Add(mtl);} -// PipelineID Add(Pipeline * p ){return rm_pipeline.Add(p);} -// DescriptorSetsID Add(DescriptorSets *ds ){return rm_desc_sets.Add(ds);} -// RenderableID Add(Renderable * r ){return rm_renderable.Add(r);} -//};//class SceneDatabase - -VK_NAMESPACE_END - class TestApp:public VulkanApplicationFramework { private: diff --git a/inc/hgl/graph/SceneDB.h b/inc/hgl/graph/SceneDB.h new file mode 100644 index 00000000..c48582ba --- /dev/null +++ b/inc/hgl/graph/SceneDB.h @@ -0,0 +1,46 @@ +#ifndef HGL_GRAPH_SCENE_DATABASE_INCLUDE +#define HGL_GRAPH_SCENE_DATABASE_INCLUDE + +#include +#include +namespace hgl +{ + namespace graph + { + using MaterialID =int; + using PipelineID =int; + using DescriptorSetsID =int; + using RenderableID =int; + using BufferID =int; + + /** + * 场景DB,用于管理场景内所需的所有数据 + */ + class SceneDB + { + IDResManage rm_material; ///<材质合集 + IDResManage rm_pipeline; ///<管线合集 + IDResManage rm_desc_sets; ///<描述符合集 + IDResManage rm_renderables; ///<可渲染对象合集 + IDResManage rm_buffers; ///<顶点缓冲区集合 + + public: + + SceneDB()=default; + virtual ~SceneDB()=default; + + MaterialID Add(vulkan::Material * mtl ){return rm_material.Add(mtl);} + PipelineID Add(vulkan::Pipeline * p ){return rm_pipeline.Add(p);} + DescriptorSetsID Add(vulkan::DescriptorSets *ds ){return rm_desc_sets.Add(ds);} + RenderableID Add(vulkan::Renderable * r ){return rm_renderables.Add(r);} + BufferID Add(vulkan::Buffer * buf ){return rm_buffers.Add(buf);} + + vulkan::Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);} + vulkan::Pipeline * GetPipeline (const PipelineID &id){return rm_pipeline.Get(id);} + vulkan::DescriptorSets *GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);} + vulkan::Renderable * GetRenderable (const RenderableID &id){return rm_renderables.Get(id);} + vulkan::Buffer * GetBuffer (const BufferID &id){return rm_buffers.Get(id);} + };//class SceneDB + }//namespace graph +}//namespace hgl +#endif//HGL_GRAPH_SCENE_DATABASE_INCLUDE diff --git a/inc/hgl/type/ResManage.cpp b/inc/hgl/type/ResManage.cpp index a72eb810..a6c4f185 100644 --- a/inc/hgl/type/ResManage.cpp +++ b/inc/hgl/type/ResManage.cpp @@ -1,4 +1,4 @@ -#ifndef HGL_RES_MANAGE_CPP +#ifndef HGL_RES_MANAGE_CPP #define HGL_RES_MANAGE_CPP #include @@ -26,7 +26,7 @@ namespace hgl } template - void ResManage::ClearZero() + void ResManage::ClearFree() { int n=items.GetCount(); diff --git a/inc/hgl/type/ResManage.h b/inc/hgl/type/ResManage.h index a7aa827d..a101c8d7 100644 --- a/inc/hgl/type/ResManage.h +++ b/inc/hgl/type/ResManage.h @@ -23,7 +23,7 @@ namespace hgl { protected: - typedef RefFlagData ResItem; + using ResItem=RefFlagData ; _Map items; @@ -38,7 +38,7 @@ namespace hgl virtual ~ResManage(); virtual void Clear(); ///<清除所有数据 - virtual void ClearZero(); ///<清除所有没有用到的数据 + virtual void ClearFree(); ///<清除所有没有用到的数据 const int GetCount()const{return items.GetCount();} ///<取得数据数量 diff --git a/src/SceneGraph/CMakeLists.txt b/src/SceneGraph/CMakeLists.txt index 49461734..cb93304d 100644 --- a/src/SceneGraph/CMakeLists.txt +++ b/src/SceneGraph/CMakeLists.txt @@ -1,6 +1,7 @@ SET(SCENE_GRAPH_HEADER ${ROOT_INCLUDE_PATH}/hgl/graph/AABox.h ${ROOT_INCLUDE_PATH}/hgl/graph/Camera.h ${ROOT_INCLUDE_PATH}/hgl/graph/Light.h + ${ROOT_INCLUDE_PATH}/hgl/graph/SceneDB.h ${ROOT_INCLUDE_PATH}/hgl/graph/SceneNode.h ${ROOT_INCLUDE_PATH}/hgl/graph/SceneOrient.h ${ROOT_INCLUDE_PATH}/hgl/graph/RenderableNode.h @@ -11,6 +12,7 @@ SET(SCENE_GRAPH_SOURCE AABox.cpp Camera.cpp RenderList.cpp + SceneDB.cpp SceneNode.cpp SceneOrient.cpp InlineGeometry.cpp) diff --git a/src/SceneGraph/SceneDB.cpp b/src/SceneGraph/SceneDB.cpp new file mode 100644 index 00000000..ee82e03f --- /dev/null +++ b/src/SceneGraph/SceneDB.cpp @@ -0,0 +1,8 @@ +#include + +namespace hgl +{ + namespace graph + { + }//namespace graph +}//namespace hgl diff --git a/src/SceneGraph/SceneNode.cpp b/src/SceneGraph/SceneNode.cpp index 729966dc..12470322 100644 --- a/src/SceneGraph/SceneNode.cpp +++ b/src/SceneGraph/SceneNode.cpp @@ -50,7 +50,7 @@ namespace hgl sub++; } - + }