BeginFrame/EndFrame for SwapchainModule/RenderFramework

This commit is contained in:
hyzboy 2024-11-11 01:49:48 +08:00
parent 9f37373631
commit b775ffa920
5 changed files with 41 additions and 13 deletions

View File

@ -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(); ///<主循环

View File

@ -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
/** /**
* *
*/ */

View File

@ -30,7 +30,9 @@ public:
virtual ~SwapchainModule(); virtual ~SwapchainModule();
bool Init() override; bool Init() override;
void Swap();
bool BeginFrame();
void EndFrame();
public: public:

View File

@ -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()

View File

@ -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