merged codes into RenderList they from SceneTreeToRenderList.

This commit is contained in:
2021-06-19 20:31:07 +08:00
parent 22e37512f6
commit 3bb74b99cc
6 changed files with 204 additions and 285 deletions

View File

@@ -13,20 +13,31 @@ namespace hgl
{
namespace graph
{
using MVPArrayBuffer=GPUArrayBuffer<MVPMatrix>;
using MaterialSets=Sets<Material *>;
/**
* 渲染对象列表<br>
* 已经展开的渲染对象列表产生mvp用UBO/SSBO等数据最终创建RenderCommandBuffer
*/
class RenderList
{
GPUDevice * device;
RenderCmdBuffer *cmd_buf;
private:
Camera *camera;
CameraInfo camera_info;
RenderNodeList render_node_list; ///<场景节点列表
MaterialSets material_sets; ///<材质合集
GPUBuffer *mvp_buffer;
List<RenderableInstance *> *ri_list;
RenderNodeComparator render_node_comparator;
private:
MVPArrayBuffer *mvp_array;
List<RenderableInstance *> ri_list;
VkDescriptorSet ds_list[(size_t)DescriptorSetsType::RANGE_SIZE];
DescriptorSets *renderable_desc_sets;
@@ -34,6 +45,12 @@ namespace hgl
uint32_t ubo_offset;
uint32_t ubo_align;
protected:
virtual bool Begin();
virtual bool Expend(SceneNode *);
virtual void End();
private:
Pipeline * last_pipeline;
@@ -50,10 +67,12 @@ namespace hgl
public:
RenderList();
virtual ~RenderList()=default;
RenderList(GPUDevice *);
virtual ~RenderList();
bool Render(RenderCmdBuffer *);
virtual bool Expend(const CameraInfo &,SceneNode *);
virtual bool Render(RenderCmdBuffer *);
};//class RenderList
}//namespace graph
}//namespace hgl