From da15630ac9131e579e0c24fd741a9b3482bdb59e Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 31 May 2021 18:02:20 +0800 Subject: [PATCH] cleaned SceneTreeToRenderList --- inc/hgl/graph/SceneTreeToRenderList.h | 24 +++------ src/SceneGraph/SceneTreeToRenderList.cpp | 66 +++++++++++++----------- 2 files changed, 44 insertions(+), 46 deletions(-) diff --git a/inc/hgl/graph/SceneTreeToRenderList.h b/inc/hgl/graph/SceneTreeToRenderList.h index 533e0ea1..c0522cf9 100644 --- a/inc/hgl/graph/SceneTreeToRenderList.h +++ b/inc/hgl/graph/SceneTreeToRenderList.h @@ -16,9 +16,9 @@ namespace hgl class SceneTreeToRenderList { - using PipelineSets=Sets; - using MaterialSets=Sets; - using MatInstanceSets=Sets; + using PipelineSets =Sets; + using MaterialSets =Sets; + using MatInstSets =Sets; protected: @@ -26,8 +26,7 @@ namespace hgl protected: - Camera * camera; - CameraInfo * camera_info; + CameraInfo camera_info; ///<相机信息 Frustum frustum; protected: @@ -36,7 +35,7 @@ namespace hgl PipelineSets pipeline_sets; ///<管线合集 MaterialSets material_sets; ///<材质合集 - MatInstanceSets mat_instance_sets; ///<材质实例合集 + MatInstSets mat_inst_sets; ///<材质实例合集 RenderList * render_list; @@ -52,19 +51,10 @@ namespace hgl public: - SceneTreeToRenderList(GPUDevice *d) - { - device=d; - camera=nullptr; - camera_info=nullptr; - - scene_node_list=nullptr; - render_list=nullptr; - } - + SceneTreeToRenderList(GPUDevice *d); virtual ~SceneTreeToRenderList(); - virtual bool Expend(RenderList *,Camera *,SceneNode *); + virtual bool Expend(RenderList *,const CameraInfo &,SceneNode *); };//class SceneTreeToRenderList }//namespace graph }//namespace hgl diff --git a/src/SceneGraph/SceneTreeToRenderList.cpp b/src/SceneGraph/SceneTreeToRenderList.cpp index 5acb1ad2..1f5c60be 100644 --- a/src/SceneGraph/SceneTreeToRenderList.cpp +++ b/src/SceneGraph/SceneTreeToRenderList.cpp @@ -3,7 +3,16 @@ namespace hgl { namespace graph - { + { + SceneTreeToRenderList::SceneTreeToRenderList(GPUDevice *d) + { + device=d; + hgl_zero(camera_info); + + scene_node_list=nullptr; + render_list=nullptr; + } + SceneTreeToRenderList::~SceneTreeToRenderList() { SAFE_CLEAR(scene_node_list); @@ -11,17 +20,17 @@ namespace hgl float SceneTreeToRenderList::CameraLength(SceneNode *obj_one,SceneNode *obj_two) { - if(!camera||!obj_one||!obj_two) + if(!obj_one||!obj_two) return(0); - return( length_squared(obj_one->GetCenter(),camera->pos)- - length_squared(obj_two->GetCenter(),camera->pos)); + return( length_squared(obj_one->GetCenter(),camera_info.pos)- + length_squared(obj_two->GetCenter(),camera_info.pos)); } - //bool SceneTreeToRenderList::InFrustum(const SceneNode *,void *) - //{ - // return(true); - //} + bool SceneTreeToRenderList::InFrustum(const SceneNode *,void *) + { + return(true); + } //bool SceneTreeToRenderList::Begin() //{ @@ -37,14 +46,15 @@ namespace hgl // return(true); //} - ///** - //* 理论上讲,我们需要按以下顺序排序 - //* - //* for(material) - //* for(pipeline) - //* for(material_instance) - //* for(vbo) - //*/ + /** + * 理论上讲,我们需要按以下顺序排序 + * + * for(material) + * for(pipeline) + * for(material_instance) + * for(vbo) + * for(distance) + */ //bool SceneTreeToRenderList::End() //{ @@ -63,22 +73,20 @@ namespace hgl // return(true); //} - //bool SceneTreeToRenderList::Expend(RenderList *rl,Camera *c,SceneNode *sn) - //{ - // if(!device)return(false); - // if(!rl||!c||sn)return(false); + bool SceneTreeToRenderList::Expend(RenderList *rl,const CameraInfo &ci,SceneNode *sn) + { + if(!device)return(false); + if(!rl||sn)return(false); - // camera=c; - // camera->Refresh(); - // camera_info=&(camera->matrix); + camera_info=ci; - // //Frustum f; + //Frustum f; - // render_list=rl; + render_list=rl; - // Begin(); - // Expend(sn); - // End(); - //} + Begin(); + Expend(sn); + End(); + } }//namespace graph }//namespace hgl