BeginFrame/EndFrame for SwapchainModule/RenderFramework
This commit is contained in:
parent
9f37373631
commit
b775ffa920
@ -97,8 +97,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual void Update(const double delta_time){}
|
virtual void Update(const double delta_time){}
|
||||||
|
|
||||||
virtual void BeginFrame(){}; ///<开始当前帧
|
virtual void BeginFrame(); ///<开始当前帧
|
||||||
virtual void EndFrame(){}; ///<当前帧结束
|
virtual void EndFrame(); ///<当前帧结束
|
||||||
|
|
||||||
virtual void MainLoop(); ///<主循环
|
virtual void MainLoop(); ///<主循环
|
||||||
|
|
||||||
|
@ -8,6 +8,13 @@
|
|||||||
#include<hgl/graph/VKQueue.h>
|
#include<hgl/graph/VKQueue.h>
|
||||||
#include<hgl/graph/VKPipeline.h>
|
#include<hgl/graph/VKPipeline.h>
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
工作:
|
||||||
|
|
||||||
|
1.RT支持多FBO,同交换链一样
|
||||||
|
2.RT内包含CommandBuffer
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 渲染目标
|
* 渲染目标
|
||||||
*/
|
*/
|
||||||
|
@ -30,7 +30,9 @@ public:
|
|||||||
virtual ~SwapchainModule();
|
virtual ~SwapchainModule();
|
||||||
|
|
||||||
bool Init() override;
|
bool Init() override;
|
||||||
void Swap();
|
|
||||||
|
bool BeginFrame();
|
||||||
|
void EndFrame();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -31,13 +31,27 @@ RenderFramework::~RenderFramework()
|
|||||||
void RenderFramework::StartTime()
|
void RenderFramework::StartTime()
|
||||||
{
|
{
|
||||||
last_time=cur_time=GetDoubleTime();
|
last_time=cur_time=GetDoubleTime();
|
||||||
frame_count++;
|
}
|
||||||
|
|
||||||
|
void RenderFramework::BeginFrame()
|
||||||
|
{
|
||||||
|
cur_time=GetDoubleTime();
|
||||||
|
|
||||||
|
swapchain_module->BeginFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderFramework::EndFrame()
|
||||||
|
{
|
||||||
|
swapchain_module->EndFrame();
|
||||||
|
|
||||||
|
device->WaitIdle();
|
||||||
|
|
||||||
|
last_time=cur_time;
|
||||||
|
++frame_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderFramework::MainLoop()
|
void RenderFramework::MainLoop()
|
||||||
{
|
{
|
||||||
cur_time=GetDoubleTime();
|
|
||||||
|
|
||||||
const double delta_time=cur_time-last_time;
|
const double delta_time=cur_time-last_time;
|
||||||
|
|
||||||
for(auto rm:module_list)
|
for(auto rm:module_list)
|
||||||
@ -61,10 +75,6 @@ void RenderFramework::MainLoop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
EndFrame();
|
EndFrame();
|
||||||
|
|
||||||
swapchain_module->Swap();
|
|
||||||
last_time=cur_time;
|
|
||||||
++frame_count;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderFramework::Init()
|
bool RenderFramework::Init()
|
||||||
|
@ -235,14 +235,23 @@ void SwapchainModule::OnResize(const VkExtent2D &extent)
|
|||||||
CreateSwapchainRenderTarget();
|
CreateSwapchainRenderTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwapchainModule::Swap()
|
bool SwapchainModule::BeginFrame()
|
||||||
{
|
{
|
||||||
int index=swapchain_rt->AcquireNextImage();
|
int index=swapchain_rt->AcquireNextImage();
|
||||||
|
|
||||||
if(index<0||index>=swapchain->image_count)
|
if(index<0||index>=swapchain->image_count)
|
||||||
return;
|
return(false);
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SwapchainModule::EndFrame()
|
||||||
|
{
|
||||||
|
int index=swapchain_rt->GetCurrentFrameIndices();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
swapchain_rt->Submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user