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:
ViewportInfo vp_info;
Camera * camera =nullptr;
CameraInfo camera_info;
DeviceBuffer * ubo_camera_info =nullptr;
public:
virtual ~VulkanApplicationFramework()
{
SAFE_CLEAR(camera);
win->Unjoin(this);
SAFE_CLEAR(db);
@ -129,43 +124,14 @@ public:
win->Join(this);
{
camera=new Camera;
camera->pos=Vector3f(10,10,10);
vp_info.Set(w,h);
RefreshCameraInfo(&camera_info,&vp_info,camera);
ubo_camera_info=db->CreateUBO(sizeof(CameraInfo),&camera_info);
}
vp_info.Set(w,h);
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)
{
vp_info.Set(w,h);
RefreshCameraInfo(&camera_info,&vp_info,camera);
ubo_camera_info->Write(&camera_info);
}
void SetClearColor(const Color4f &cc)
@ -453,6 +419,10 @@ class CameraAppFramework:public VulkanApplicationFramework
protected:
Camera * camera =nullptr;
DeviceBuffer * ubo_camera_info =nullptr;
FirstPersonCameraControl *camera_control=nullptr;
CameraKeyboardControl * ckc=nullptr;
@ -466,6 +436,7 @@ public:
{
SAFE_CLEAR(ckc);
SAFE_CLEAR(cmc);
SAFE_CLEAR(camera);
}
virtual bool Init(int w,int h)
@ -488,6 +459,14 @@ public:
win->Join(ckc);
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
@ -496,16 +475,31 @@ public:
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 Draw()override
{
camera_control->Refresh(); //更新相机矩阵
camera_control->Refresh(); //更新相机矩阵
ubo_camera_info->Write(&camera->info); //写入缓冲区
ubo_camera_info->Write(&camera_control->GetCameraInfo()); //写入缓冲区
const uint32_t index=AcquireNextImage();

View File

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