增加SceneDB

This commit is contained in:
hyzboy 2019-05-25 17:46:31 +08:00
parent c6700d60a7
commit 687e7669a9
7 changed files with 61 additions and 31 deletions

View File

@ -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<MaterialID, Material> rm_material; ///<材质合集
// IDResManage<PipelineID, Pipeline> rm_pipeline; ///<管线合集
// IDResManage<DescriptorSetsID, DescriptorSets> rm_desc_sets; ///<描述符合集
// IDResManage<RenderableID, Renderable> 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:

46
inc/hgl/graph/SceneDB.h Normal file
View File

@ -0,0 +1,46 @@
#ifndef HGL_GRAPH_SCENE_DATABASE_INCLUDE
#define HGL_GRAPH_SCENE_DATABASE_INCLUDE
#include<hgl/graph/vulkan/VK.h>
#include<hgl/type/ResManage.h>
namespace hgl
{
namespace graph
{
using MaterialID =int;
using PipelineID =int;
using DescriptorSetsID =int;
using RenderableID =int;
using BufferID =int;
/**
* DB
*/
class SceneDB
{
IDResManage<MaterialID, vulkan::Material> rm_material; ///<材质合集
IDResManage<PipelineID, vulkan::Pipeline> rm_pipeline; ///<管线合集
IDResManage<DescriptorSetsID, vulkan::DescriptorSets> rm_desc_sets; ///<描述符合集
IDResManage<RenderableID, vulkan::Renderable> rm_renderables; ///<可渲染对象合集
IDResManage<BufferID, vulkan::Buffer> 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

View File

@ -1,4 +1,4 @@
#ifndef HGL_RES_MANAGE_CPP
#ifndef HGL_RES_MANAGE_CPP
#define HGL_RES_MANAGE_CPP
#include<hgl/type/ResManage.h>
@ -26,7 +26,7 @@ namespace hgl
}
template<typename F,typename T>
void ResManage<F,T>::ClearZero()
void ResManage<F,T>::ClearFree()
{
int n=items.GetCount();

View File

@ -23,7 +23,7 @@ namespace hgl
{
protected:
typedef RefFlagData<F,T> ResItem;
using ResItem=RefFlagData<F,T> ;
_Map<F,T *,ResItem> 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();} ///<取得数据数量

View File

@ -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)

View File

@ -0,0 +1,8 @@
#include<hgl/graph/SceneDB.h>
namespace hgl
{
namespace graph
{
}//namespace graph
}//namespace hgl

View File

@ -50,7 +50,7 @@ namespace hgl
sub++;
}
}