ULRE/inc/hgl/graph/SceneTreeToRenderList.h

64 lines
1.8 KiB
C
Raw Normal View History

#ifndef HGL_GRAPH_SCENE_TREE_TO_RENDER_LIST_INCLUDE
#define HGL_GRAPH_SCENE_TREE_TO_RENDER_LIST_INCLUDE
#include<hgl/graph/RenderList.h>
namespace hgl
{
namespace graph
{
class SceneTreeToRenderList
{
using PipelineSets=Sets<Pipeline *>;
using MaterialSets=Sets<Material *>;
using MatInstanceSets=Sets<MaterialInstance *>;
protected:
GPUDevice *device;
protected:
Camera * camera;
CameraMatrix * camera_matrix;
Frustum frustum;
protected:
SceneNodeList * scene_node_list; ///<<3C><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>б<EFBFBD>
PipelineSets pipeline_sets; ///<<3C><><EFBFBD>ߺϼ<DFBA>
MaterialSets material_sets; ///<<3C><><EFBFBD>ʺϼ<CABA>
MatInstanceSets mat_instance_sets; ///<<3C><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ϼ<EFBFBD>
RenderList * render_list;
protected:
virtual uint32 CameraLength(SceneNode *,SceneNode *); ///<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȽϺ<C8BD><CFBA><EFBFBD>
virtual bool InFrustum(const SceneNode *,void *); ///<ƽ<><C6BD>ͷ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>
virtual bool Begin();
virtual bool Expend(SceneNode *);
virtual bool End();
public:
SceneTreeToRenderList(GPUDevice *d)
{
device=d;
camera=nullptr;
camera_matrix=nullptr;
scene_node_list=nullptr;
render_list=nullptr;
}
virtual ~SceneTreeToRenderList();
virtual bool Expend(RenderList *,Camera *,SceneNode *);
};//class SceneTreeToRenderList
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_SCENE_TREE_TO_RENDER_LIST_INCLUDE