ULRE/inc/hgl/graph/RenderList.h

49 lines
1.2 KiB
C
Raw Normal View History

2019-05-25 00:50:04 +08:00
#ifndef HGL_GRAPH_RENDER_LIST_INCLUDE
#define HGL_GRAPH_RENDER_LIST_INCLUDE
#include<hgl/graph/VK.h>
2019-05-25 00:50:04 +08:00
#include<hgl/graph/Camera.h>
#include<hgl/graph/SceneNode.h>
2019-05-25 01:06:33 +08:00
#include<hgl/type/Color4f.h>
2019-05-25 00:50:04 +08:00
namespace hgl
{
namespace graph
{
class RenderList
{
RenderCmdBuffer *cmd_buf;
2019-05-25 00:50:04 +08:00
private:
List<SceneNode *> scene_node_list;
2019-05-25 00:50:04 +08:00
2020-10-21 12:47:06 +08:00
PushConstant * last_pc;
Pipeline * last_pipeline;
MaterialInstance * last_mat_inst;
RenderableInstance *last_ri;
2019-05-25 00:50:04 +08:00
2020-10-21 12:47:06 +08:00
void Render(SceneNode *,RenderableInstance *);
void Render(SceneNode *,List<RenderableInstance *> &);
2019-05-25 00:50:04 +08:00
public:
RenderList()
{
cmd_buf=nullptr;
last_pc=nullptr;
2019-05-25 00:50:04 +08:00
last_pipeline=nullptr;
last_mat_inst=nullptr;
last_ri=nullptr;
2019-05-25 00:50:04 +08:00
}
~RenderList()=default;
void Add (SceneNode *node) {if(node)scene_node_list.Add(node);}
void Clear () {scene_node_list.ClearData();}
2019-05-25 00:50:04 +08:00
bool Render (RenderCmdBuffer *);
2019-05-25 00:50:04 +08:00
};//class RenderList
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_RENDER_LIST_INCLUDE