支持新的CameraControl,并实现自动绑定,现BillboardTest已可正常渲染。只是鼠标键盘输入尚未接入
This commit is contained in:
@@ -48,7 +48,8 @@ namespace hgl
|
||||
graph::Scene * GetScene (){return scene;}
|
||||
graph::SceneNode * GetSceneRoot (){return scene->GetRootNode();}
|
||||
graph::Renderer * GetRenderer (){return renderer;}
|
||||
graph::Camera * GetCamera (){return renderer->GetCurCamera();}
|
||||
graph::Camera * GetCamera (){return renderer->GetCamera();}
|
||||
graph::CameraControl * GetCameraControl (){return render_framework->GetDefaultCameraControl();}
|
||||
|
||||
public:
|
||||
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#include<hgl/graph/module/SwapchainModule.h>
|
||||
#include<hgl/graph/module/GraphModuleManager.h>
|
||||
#include<hgl/graph/RenderList.h>
|
||||
#include<hgl/graph/CameraControl.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
||||
@@ -52,9 +53,10 @@ protected:
|
||||
|
||||
protected: //RenderContext,未来合并成一个RenderContext结构
|
||||
|
||||
Scene * default_scene =nullptr;
|
||||
Camera * default_camera =nullptr;
|
||||
Renderer * default_renderer=nullptr;
|
||||
Scene * default_scene =nullptr;
|
||||
Camera * default_camera =nullptr;
|
||||
CameraControl * default_camera_control =nullptr;
|
||||
Renderer * default_renderer =nullptr;
|
||||
|
||||
void CreateDefaultRenderer();
|
||||
|
||||
@@ -83,6 +85,7 @@ public:
|
||||
|
||||
Scene * GetDefaultScene (){return default_scene;}
|
||||
Camera * GetDefaultCamera (){return default_camera;}
|
||||
CameraControl * GetDefaultCameraControl (){return default_camera_control;}
|
||||
Renderer * GetDefaultRenderer (){return default_renderer;}
|
||||
|
||||
public:
|
||||
|
@@ -29,12 +29,16 @@ namespace hgl
|
||||
|
||||
virtual bool ExpendNode(SceneNode *);
|
||||
|
||||
public:
|
||||
|
||||
const CameraInfo *GetCameraInfo()const{return camera_info;}
|
||||
|
||||
public:
|
||||
|
||||
RenderList(VulkanDevice *);
|
||||
virtual ~RenderList()=default;
|
||||
|
||||
virtual void SetCamera(CameraInfo *ci){camera_info=ci;} ///<设置相机信息
|
||||
virtual void SetCameraInfo(CameraInfo *ci){camera_info=ci;} ///<设置相机信息
|
||||
virtual bool Expend(SceneNode *); ///<展开场景树到渲染列表
|
||||
|
||||
bool IsEmpty()const{return !renderable_count;} ///<是否是空的
|
||||
|
@@ -16,7 +16,7 @@ namespace hgl::graph
|
||||
|
||||
IRenderTarget * render_target;
|
||||
RenderList * render_list;
|
||||
Camera * camera;
|
||||
CameraInfo * camera_info;
|
||||
|
||||
public:
|
||||
|
||||
@@ -24,16 +24,16 @@ namespace hgl::graph
|
||||
|
||||
IRenderTarget * GetRenderTarget ()const{return render_target;}
|
||||
RenderList * GetRenderList ()const{return render_list;}
|
||||
Camera * GetCamera ()const{return camera;}
|
||||
CameraInfo * GetCameraInfo ()const{return camera_info;}
|
||||
|
||||
public:
|
||||
|
||||
RenderTask(const RenderTaskName &tn,IRenderTarget *rt=nullptr,Camera *c=nullptr);
|
||||
RenderTask(const RenderTaskName &tn,IRenderTarget *rt=nullptr,CameraInfo *ci=nullptr);
|
||||
|
||||
virtual ~RenderTask();
|
||||
|
||||
bool SetRenderTarget(IRenderTarget *rt);
|
||||
void SetCamera(Camera *c){camera=c;}
|
||||
bool SetRenderTarget(IRenderTarget *);
|
||||
void SetCameraInfo(CameraInfo *);
|
||||
|
||||
bool RebuildRenderList(SceneNode *);
|
||||
|
||||
|
@@ -2,16 +2,16 @@
|
||||
|
||||
#include<hgl/graph/RenderTask.h>
|
||||
#include<hgl/graph/VKRenderTarget.h>
|
||||
#include<hgl/graph/CameraControl.h>
|
||||
#include<hgl/type/Map.h>
|
||||
|
||||
namespace hgl::graph
|
||||
{
|
||||
class Scene;
|
||||
class CameraControl;
|
||||
|
||||
using RenderTaskNameMap=Map<RenderTaskName,RenderTask *>;
|
||||
|
||||
using UBOCameraInfo=DeviceBufferMap<CameraInfo>;
|
||||
|
||||
/**
|
||||
* 渲染器
|
||||
*/
|
||||
@@ -20,9 +20,7 @@ namespace hgl::graph
|
||||
IRenderTarget *render_target;
|
||||
Scene *scene;
|
||||
|
||||
Camera *camera;
|
||||
|
||||
UBOCameraInfo *ubo_camera_info;
|
||||
CameraControl *camera_control;
|
||||
|
||||
//RenderTaskNameMap static_render_task_list; ///<静态渲染任务列表
|
||||
//RenderTaskNameMap dynamic_render_task_list; ///<动态渲染任务列表
|
||||
@@ -40,7 +38,7 @@ namespace hgl::graph
|
||||
const VkExtent2D &GetExtent ()const{return render_target->GetExtent();} ///<取得当前渲染器画面尺寸
|
||||
|
||||
Scene * GetScene ()const{return scene;} ///<获取场景世界
|
||||
Camera * GetCurCamera ()const{return camera;} ///<获取当前相机
|
||||
Camera * GetCamera ()const{return camera_control->GetCamera();} ///<获取当前相机
|
||||
|
||||
public:
|
||||
|
||||
@@ -48,8 +46,8 @@ namespace hgl::graph
|
||||
virtual ~Renderer();
|
||||
|
||||
bool SetRenderTarget(IRenderTarget *);
|
||||
void SetCurScene(Scene *);
|
||||
void SetCurCamera(Camera *);
|
||||
void SetScene(Scene *);
|
||||
void SetCameraControl(CameraControl *);
|
||||
|
||||
void SetClearColor(const Color4f &c){clear_color=c;}
|
||||
|
||||
|
@@ -75,7 +75,7 @@ public:
|
||||
delete dev_buf;
|
||||
}
|
||||
|
||||
operator DeviceBuffer *(){return dev_buf;}
|
||||
DeviceBuffer *GetDeviceBuffer(){return dev_buf;}
|
||||
|
||||
T *data(){return &data_map;}
|
||||
|
||||
@@ -84,6 +84,6 @@ public:
|
||||
if(dev_buf)
|
||||
dev_buf->Write(&data_map,sizeof(T));
|
||||
}
|
||||
};
|
||||
};//template<typename T> class DeviceBufferMap
|
||||
|
||||
VK_NAMESPACE_END
|
||||
|
@@ -43,6 +43,12 @@ public:
|
||||
return ubo_map.Add(name,buf);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool AddUBO(const AnsiString &name,DeviceBufferMap<T> *dbm)
|
||||
{
|
||||
return AddUBO(name,dbm->GetDeviceBuffer());
|
||||
}
|
||||
|
||||
DeviceBuffer *GetUBO(const AnsiString &name)
|
||||
{
|
||||
if(name.IsEmpty())return(nullptr);
|
||||
@@ -65,6 +71,12 @@ public:
|
||||
return ssbo_map.Add(name,buf);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool AddSSBO(const AnsiString &name,DeviceBufferMap<T> *dbm)
|
||||
{
|
||||
return AddSSBO(name,dbm->GetDeviceBuffer());
|
||||
}
|
||||
|
||||
DeviceBuffer *GetSSBO(const AnsiString &name)
|
||||
{
|
||||
if(name.IsEmpty())return(nullptr);
|
||||
|
@@ -73,7 +73,7 @@ public: // Command Buffer
|
||||
|
||||
public:
|
||||
|
||||
virtual const ViewportInfo *GetViewportInfo ()const
|
||||
virtual ViewportInfo * GetViewportInfo ()
|
||||
{
|
||||
return ubo_vp_info->data();
|
||||
}
|
||||
|
Reference in New Issue
Block a user