diff --git a/inc/hgl/graph/RenderList.h b/inc/hgl/graph/RenderList.h index 572154a9..e2bc838d 100644 --- a/inc/hgl/graph/RenderList.h +++ b/inc/hgl/graph/RenderList.h @@ -13,7 +13,6 @@ namespace hgl { namespace graph { - using MVPArrayBuffer=GPUArrayBuffer; using MaterialSets=SortedSets; /** @@ -22,13 +21,13 @@ namespace hgl */ class RenderList { + protected: + GPUDevice * device; RenderCmdBuffer *cmd_buf; private: - CameraInfo camera_info; - RenderNodeList render_node_list; ///<场景节点列表 MaterialSets material_sets; ///<材质合集 @@ -36,7 +35,6 @@ namespace hgl private: - MVPArrayBuffer *mvp_array; List ri_list; VkDescriptorSet ds_list[DESCRIPTOR_SET_TYPE_COUNT]; @@ -68,6 +66,29 @@ namespace hgl virtual bool Render(RenderCmdBuffer *); };//class RenderList + + class RenderList2D:public RenderList + { + }; + + class RenderList3D:public RenderList + { + protected: + + CameraInfo camera_info; + GPUArrayBuffer *mvp_array; + + protected: + + virtual bool Begin() override; + virtual bool Expend(SceneNode *) override; + virtual void End() override; + + public: + + RenderList3D(); + virtual ~RenderList3D() override; + }; }//namespace graph }//namespace hgl #endif//HGL_GRAPH_RENDER_LIST_INCLUDE diff --git a/src/SceneGraph/RenderList.cpp b/src/SceneGraph/RenderList.cpp index cdd5bef8..6d1953cb 100644 --- a/src/SceneGraph/RenderList.cpp +++ b/src/SceneGraph/RenderList.cpp @@ -80,11 +80,7 @@ namespace hgl { device =dev; cmd_buf =nullptr; - - hgl_zero(camera_info); - mvp_array =new MVPArrayBuffer(device,VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT); - ubo_offset =0; ubo_align =0; @@ -95,13 +91,11 @@ namespace hgl RenderList::~RenderList() { - delete mvp_array; } bool RenderList::Begin() { render_node_list.ClearData(); - mvp_array->Clear(); ri_list.ClearData(); material_sets.ClearData(); @@ -252,7 +246,7 @@ namespace hgl cmd_buf->BindDescriptorSets(ri->GetPipelineLayout(),first_set,ds_list,ds_count,&ubo_offset,1); } else - { + { cmd_buf->BindDescriptorSets(ri->GetPipelineLayout(),first_set,ds_list,ds_count,nullptr,0); } diff --git a/src/SceneGraph/RenderList3D.cpp b/src/SceneGraph/RenderList3D.cpp new file mode 100644 index 00000000..3e6922aa --- /dev/null +++ b/src/SceneGraph/RenderList3D.cpp @@ -0,0 +1,37 @@ +#include + +namespace hgl +{ + namespace graph + { + RenderList3D::RenderList3D() + { + hgl_zero(camera_info); + + mvp_array =new GPUArrayBuffer(device,VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,MVPMatrixBytes); + } + + RenderList3D::~RenderList3D() + { + delete mvp_array; + } + + bool RenderList3D::Begin() + { + if(!RenderList::Begin()) + return(false); + + mvp_array->Clear(); + + return(true); + } + + bool RenderList3D::Expend(SceneNode *) + { + } + + void RenderList3D::End() + { + } + }//namespace graph +}//namespace hgl