moved codes of about camera to CameraAppFramework.

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-03-02 20:33:44 +08:00
parent b4dccf7814
commit 84d0dc99c8
3 changed files with 34 additions and 39 deletions

@ -1 +1 @@
Subproject commit 4074a6f01ffff144ff77814a9dd0387b63419a03 Subproject commit 861d1668cb6d8f730c89158933a133ba2c8ad426

View File

@ -61,16 +61,11 @@ protected:
protected: protected:
ViewportInfo vp_info; ViewportInfo vp_info;
Camera * camera =nullptr;
CameraInfo camera_info;
DeviceBuffer * ubo_camera_info =nullptr;
public: public:
virtual ~VulkanApplicationFramework() virtual ~VulkanApplicationFramework()
{ {
SAFE_CLEAR(camera);
win->Unjoin(this); win->Unjoin(this);
SAFE_CLEAR(db); SAFE_CLEAR(db);
@ -129,43 +124,14 @@ public:
win->Join(this); win->Join(this);
{
camera=new Camera;
camera->pos=Vector3f(10,10,10);
vp_info.Set(w,h); vp_info.Set(w,h);
RefreshCameraInfo(&camera_info,&vp_info,camera);
ubo_camera_info=db->CreateUBO(sizeof(CameraInfo),&camera_info);
}
return(true); return(true);
} }
const CameraInfo &GetCameraInfo()
{
return camera_info;
}
DeviceBuffer *GetCameraInfoBuffer()
{
return ubo_camera_info;
}
bool BindCameraUBO(MaterialInstance *mi)
{
return mi->BindUBO(DescriptorSetType::Global,"g_camera",ubo_camera_info);
}
virtual void Resize(int w,int h) virtual void Resize(int w,int h)
{ {
vp_info.Set(w,h); vp_info.Set(w,h);
RefreshCameraInfo(&camera_info,&vp_info,camera);
ubo_camera_info->Write(&camera_info);
} }
void SetClearColor(const Color4f &cc) void SetClearColor(const Color4f &cc)
@ -453,6 +419,10 @@ class CameraAppFramework:public VulkanApplicationFramework
protected: protected:
Camera * camera =nullptr;
DeviceBuffer * ubo_camera_info =nullptr;
FirstPersonCameraControl *camera_control=nullptr; FirstPersonCameraControl *camera_control=nullptr;
CameraKeyboardControl * ckc=nullptr; CameraKeyboardControl * ckc=nullptr;
@ -466,6 +436,7 @@ public:
{ {
SAFE_CLEAR(ckc); SAFE_CLEAR(ckc);
SAFE_CLEAR(cmc); SAFE_CLEAR(cmc);
SAFE_CLEAR(camera);
} }
virtual bool Init(int w,int h) virtual bool Init(int w,int h)
@ -488,6 +459,14 @@ public:
win->Join(ckc); win->Join(ckc);
win->Join(cmc); win->Join(cmc);
camera=new Camera;
camera->pos=Vector3f(10,10,10);
RefreshCameraInfo(&camera_control->GetCameraInfo(),&vp_info,camera);
ubo_camera_info=db->CreateUBO(sizeof(CameraInfo),&camera_control->GetCameraInfo());
} }
void Resize(int w,int h)override void Resize(int w,int h)override
@ -496,7 +475,22 @@ public:
camera_control->Refresh(); camera_control->Refresh();
ubo_camera_info->Write(&camera_info); ubo_camera_info->Write(&camera_control->GetCameraInfo());
}
const CameraInfo &GetCameraInfo()
{
return camera_control->GetCameraInfo();
}
DeviceBuffer *GetCameraInfoBuffer()
{
return ubo_camera_info;
}
bool BindCameraUBO(MaterialInstance *mi)
{
return mi->BindUBO(DescriptorSetType::Global,"g_camera",ubo_camera_info);
} }
virtual void BuildCommandBuffer(uint32_t index)=0; virtual void BuildCommandBuffer(uint32_t index)=0;
@ -505,7 +499,7 @@ public:
{ {
camera_control->Refresh(); //更新相机矩阵 camera_control->Refresh(); //更新相机矩阵
ubo_camera_info->Write(&camera->info); //写入缓冲区 ubo_camera_info->Write(&camera_control->GetCameraInfo()); //写入缓冲区
const uint32_t index=AcquireNextImage(); const uint32_t index=AcquireNextImage();

View File

@ -1,4 +1,5 @@
add_subdirectory(Util) add_subdirectory(Util)
add_subdirectory(ShaderGen)
add_subdirectory(SceneGraph) add_subdirectory(SceneGraph)
#add_subdirectory(Tools) #add_subdirectory(Tools)
add_subdirectory(GUI) add_subdirectory(GUI)