ULRE/inc/hgl/graph/RenderList.h

60 lines
1.4 KiB
C++

#ifndef HGL_GRAPH_RENDER_LIST_INCLUDE
#define HGL_GRAPH_RENDER_LIST_INCLUDE
#include<hgl/graph/VK.h>
#include<hgl/graph/Camera.h>
#include<hgl/graph/SceneNode.h>
#include<hgl/graph/VKArrayBuffer.h>
#include<hgl/graph/MVPMatrix.h>
#include<hgl/type/Color4f.h>
#include<hgl/type/Sets.h>
namespace hgl
{
namespace graph
{
using SceneNodeList=List<SceneNode *>;
using MVPArrayBuffer=GPUArrayBuffer<MVPMatrix>;
using MVPOffsetBuffer=List<uint32_t>;
class RenderList
{
GPUDevice *device;
RenderCmdBuffer *cmd_buf;
private:
Camera *camera;
SceneNodeList scene_node_list;
MVPArrayBuffer *mvp_array;
MVPOffsetBuffer mvp_offset;
private:
Pipeline * last_pipeline;
RenderableInstance *last_ri;
void Render(SceneNode *,RenderableInstance *);
void Render(SceneNode *,List<RenderableInstance *> &);
private:
friend class GPUDevice;
RenderList(GPUDevice *);
public:
virtual ~RenderList();
void Begin ();
void Add (SceneNode *);
void End (CameraMatrix *);
bool Render (RenderCmdBuffer *);
};//class RenderList
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_RENDER_LIST_INCLUDE