cleaned SceneTreeToRenderList

This commit is contained in:
hyzboy 2021-05-31 18:02:20 +08:00
parent 3ef3456d54
commit da15630ac9
2 changed files with 44 additions and 46 deletions

View File

@ -18,7 +18,7 @@ namespace hgl
{ {
using PipelineSets =Sets<Pipeline *>; using PipelineSets =Sets<Pipeline *>;
using MaterialSets =Sets<Material *>; using MaterialSets =Sets<Material *>;
using MatInstanceSets=Sets<MaterialInstance *>; using MatInstSets =Sets<MaterialInstance *>;
protected: protected:
@ -26,8 +26,7 @@ namespace hgl
protected: protected:
Camera * camera; CameraInfo camera_info; ///<相机信息
CameraInfo * camera_info;
Frustum frustum; Frustum frustum;
protected: protected:
@ -36,7 +35,7 @@ namespace hgl
PipelineSets pipeline_sets; ///<管线合集 PipelineSets pipeline_sets; ///<管线合集
MaterialSets material_sets; ///<材质合集 MaterialSets material_sets; ///<材质合集
MatInstanceSets mat_instance_sets; ///<材质实例合集 MatInstSets mat_inst_sets; ///<材质实例合集
RenderList * render_list; RenderList * render_list;
@ -52,19 +51,10 @@ namespace hgl
public: public:
SceneTreeToRenderList(GPUDevice *d) SceneTreeToRenderList(GPUDevice *d);
{
device=d;
camera=nullptr;
camera_info=nullptr;
scene_node_list=nullptr;
render_list=nullptr;
}
virtual ~SceneTreeToRenderList(); virtual ~SceneTreeToRenderList();
virtual bool Expend(RenderList *,Camera *,SceneNode *); virtual bool Expend(RenderList *,const CameraInfo &,SceneNode *);
};//class SceneTreeToRenderList };//class SceneTreeToRenderList
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl

View File

@ -4,6 +4,15 @@ namespace hgl
{ {
namespace graph namespace graph
{ {
SceneTreeToRenderList::SceneTreeToRenderList(GPUDevice *d)
{
device=d;
hgl_zero(camera_info);
scene_node_list=nullptr;
render_list=nullptr;
}
SceneTreeToRenderList::~SceneTreeToRenderList() SceneTreeToRenderList::~SceneTreeToRenderList()
{ {
SAFE_CLEAR(scene_node_list); SAFE_CLEAR(scene_node_list);
@ -11,17 +20,17 @@ namespace hgl
float SceneTreeToRenderList::CameraLength(SceneNode *obj_one,SceneNode *obj_two) float SceneTreeToRenderList::CameraLength(SceneNode *obj_one,SceneNode *obj_two)
{ {
if(!camera||!obj_one||!obj_two) if(!obj_one||!obj_two)
return(0); return(0);
return( length_squared(obj_one->GetCenter(),camera->pos)- return( length_squared(obj_one->GetCenter(),camera_info.pos)-
length_squared(obj_two->GetCenter(),camera->pos)); length_squared(obj_two->GetCenter(),camera_info.pos));
} }
//bool SceneTreeToRenderList::InFrustum(const SceneNode *,void *) bool SceneTreeToRenderList::InFrustum(const SceneNode *,void *)
//{ {
// return(true); return(true);
//} }
//bool SceneTreeToRenderList::Begin() //bool SceneTreeToRenderList::Begin()
//{ //{
@ -37,14 +46,15 @@ namespace hgl
// return(true); // return(true);
//} //}
///** /**
//* 理论上讲,我们需要按以下顺序排序 *
//* *
//* for(material) * for(material)
//* for(pipeline) * for(pipeline)
//* for(material_instance) * for(material_instance)
//* for(vbo) * for(vbo)
//*/ * for(distance)
*/
//bool SceneTreeToRenderList::End() //bool SceneTreeToRenderList::End()
//{ //{
@ -63,22 +73,20 @@ namespace hgl
// return(true); // return(true);
//} //}
//bool SceneTreeToRenderList::Expend(RenderList *rl,Camera *c,SceneNode *sn) bool SceneTreeToRenderList::Expend(RenderList *rl,const CameraInfo &ci,SceneNode *sn)
//{ {
// if(!device)return(false); if(!device)return(false);
// if(!rl||!c||sn)return(false); if(!rl||sn)return(false);
// camera=c; camera_info=ci;
// camera->Refresh();
// camera_info=&(camera->matrix);
// //Frustum f; //Frustum f;
// render_list=rl; render_list=rl;
// Begin(); Begin();
// Expend(sn); Expend(sn);
// End(); End();
//} }
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl