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 MaterialSets =Sets<Material *>;
using MatInstanceSets=Sets<MaterialInstance *>;
using MatInstSets =Sets<MaterialInstance *>;
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

View File

@ -4,6 +4,15 @@ 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