ULRE/inc/hgl/graph/Renderer.h

60 lines
1.9 KiB
C
Raw Normal View History

2025-05-28 02:27:59 +08:00
#pragma once
#include<hgl/graph/RenderTask.h>
#include<hgl/graph/VKRenderTarget.h>
2025-05-28 02:27:59 +08:00
#include<hgl/type/Map.h>
namespace hgl::graph
{
class Scene;
2025-05-28 02:27:59 +08:00
using RenderTaskNameMap=Map<RenderTaskName,RenderTask *>;
using UBOCameraInfo=DeviceBufferMap<CameraInfo>;
2025-05-28 02:27:59 +08:00
/**
*
*/
class Renderer
{
2025-05-30 00:32:45 +08:00
IRenderTarget *render_target;
Scene *scene;
2025-05-28 02:27:59 +08:00
2025-05-30 00:32:45 +08:00
Camera *camera;
UBOCameraInfo *ubo_camera_info;
2025-05-30 00:32:45 +08:00
//RenderTaskNameMap static_render_task_list; ///<静态渲染任务列表
//RenderTaskNameMap dynamic_render_task_list; ///<动态渲染任务列表
RenderTask *render_task; ///<当前渲染任务
Color4f clear_color; ///<清屏颜色
2025-05-30 00:32:45 +08:00
bool build_frame=false;
2025-05-28 02:27:59 +08:00
public:
RenderPass *GetRenderPass (){return render_target->GetRenderPass();} ///<取得当前渲染器RenderPass
const VkExtent2D &GetExtent ()const{return render_target->GetExtent();} ///<取得当前渲染器画面尺寸
Scene * GetScene ()const{return scene;} ///<获取场景世界
Camera * GetCurCamera ()const{return camera;} ///<获取当前相机
2025-05-30 00:32:45 +08:00
public:
Renderer(IRenderTarget *);
virtual ~Renderer();
bool SetRenderTarget(IRenderTarget *);
void SetCurScene(Scene *);
2025-05-30 00:32:45 +08:00
void SetCurCamera(Camera *);
2025-05-28 02:27:59 +08:00
void SetClearColor(const Color4f &c){clear_color=c;}
bool RenderFrame(); ///<重新重成这一帧的CommandList
bool Submit(); ///<提交CommandList到GPU
2025-05-28 02:27:59 +08:00
};//class Renderer
}//namespace hgl::graph