[OK] AutoInstance 范例完成迁移并测试成功。新结构下不再需要自己管理RenderList/SceneRoot。接下来请迁移其它范例。
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include<hgl/graph/VKRenderResource.h>
|
||||
#include<hgl/graph/mtl/MaterialLibrary.h>
|
||||
#include<hgl/graph/Renderer.h>
|
||||
#include<hgl/graph/Scene.h>
|
||||
#include<hgl/Time.h>
|
||||
//#include<iostream>
|
||||
|
||||
@@ -22,8 +23,6 @@ namespace hgl
|
||||
class WorkObject:public TickObject
|
||||
{
|
||||
graph::RenderFramework *render_framework=nullptr;
|
||||
graph::IRenderTarget *cur_render_target=nullptr;
|
||||
graph::RenderPass *render_pass=nullptr;
|
||||
|
||||
bool destroy_flag=false;
|
||||
bool render_dirty=true;
|
||||
@@ -44,7 +43,12 @@ namespace hgl
|
||||
graph::VulkanDevAttr * GetDevAttr (){return render_framework->GetDevAttr();}
|
||||
graph::TextureManager * GetTextureManager (){return render_framework->GetTextureManager();}
|
||||
|
||||
const VkExtent2D & GetExtent2D (){return cur_render_target->GetExtent();}
|
||||
const VkExtent2D & GetExtent (){return renderer->GetExtent();}
|
||||
|
||||
graph::Scene * GetScene (){return scene;}
|
||||
graph::SceneNode * GetSceneRoot (){return scene->GetRootNode();}
|
||||
|
||||
graph::Renderer * GetRenderer (){return renderer;}
|
||||
|
||||
public:
|
||||
|
||||
@@ -56,19 +60,17 @@ namespace hgl
|
||||
|
||||
public:
|
||||
|
||||
WorkObject(graph::RenderFramework *,graph::IRenderTarget *rt=nullptr);
|
||||
WorkObject(graph::RenderFramework *,graph::Renderer *r=nullptr);
|
||||
virtual ~WorkObject()=default;
|
||||
|
||||
virtual bool Init()=0;
|
||||
|
||||
virtual void OnRenderTargetSwitch(graph::RenderFramework *rf,graph::IRenderTarget *rt);
|
||||
virtual void OnRendererChange(graph::RenderFramework *rf,graph::Renderer *r);
|
||||
|
||||
virtual void OnResize(const VkExtent2D &){}
|
||||
|
||||
virtual void Tick(double){}
|
||||
|
||||
virtual void Render(double delta_time,graph::RenderCmdBuffer *cmd)=0;
|
||||
|
||||
virtual void Render(double delta_time);
|
||||
|
||||
public:
|
||||
@@ -76,7 +78,7 @@ namespace hgl
|
||||
template<typename ...ARGS>
|
||||
graph::Pipeline *CreatePipeline(ARGS...args)
|
||||
{
|
||||
return render_pass->CreatePipeline(args...);
|
||||
return renderer->GetRenderPass()->CreatePipeline(args...);
|
||||
}
|
||||
|
||||
graph::MaterialInstance *CreateMaterialInstance(const AnsiString &mi_name,const graph::mtl::MaterialCreateInfo *mci,const graph::VILConfig *vil_cfg=nullptr)
|
||||
|
@@ -55,6 +55,8 @@ protected:
|
||||
Scene * default_scene =nullptr;
|
||||
Renderer * default_renderer=nullptr;
|
||||
|
||||
void CreateDefaultRenderer();
|
||||
|
||||
public:
|
||||
|
||||
Window * GetWindow ()const{return win;}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include<hgl/graph/RenderTask.h>
|
||||
#include<hgl/graph/VKRenderTarget.h>
|
||||
#include<hgl/type/Map.h>
|
||||
|
||||
namespace hgl::graph
|
||||
@@ -15,7 +16,7 @@ namespace hgl::graph
|
||||
class Renderer
|
||||
{
|
||||
IRenderTarget *render_target;
|
||||
Scene *world;
|
||||
Scene *scene;
|
||||
|
||||
Camera *camera;
|
||||
|
||||
@@ -24,23 +25,31 @@ namespace hgl::graph
|
||||
|
||||
RenderTask *render_task; ///<当前渲染任务
|
||||
|
||||
protected:
|
||||
|
||||
Color4f clear_color; ///<清屏颜色
|
||||
|
||||
bool build_frame=false;
|
||||
|
||||
public:
|
||||
|
||||
Scene *GetScene () const { return world; } ///<获取场景世界
|
||||
Camera * GetCurCamera () const { return camera; } ///<获取当前相机
|
||||
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;} ///<获取当前相机
|
||||
|
||||
public:
|
||||
|
||||
Renderer(IRenderTarget *);
|
||||
virtual ~Renderer();
|
||||
|
||||
void SetCurWorld(Scene *);
|
||||
void SetRenderTarget(IRenderTarget *);
|
||||
void SetCurScene(Scene *);
|
||||
void SetCurCamera(Camera *);
|
||||
|
||||
bool RenderFrame(RenderCmdBuffer *);
|
||||
void SetClearColor(const Color4f &c){clear_color=c;}
|
||||
|
||||
bool RenderFrame(); ///<重新重成这一帧的CommandList
|
||||
bool Submit(); ///<提交CommandList到GPU
|
||||
};//class Renderer
|
||||
}//namespace hgl::graph
|
||||
|
Reference in New Issue
Block a user