Implement custom rendering framerate for RenderTask
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include "Engine/Renderer/Renderer.h"
|
||||
#include "Engine/Render2D/Render2D.h"
|
||||
#include "Engine/Engine/Engine.h"
|
||||
#include "Engine/Engine/Time.h"
|
||||
#include "Engine/Profiler/Profiler.h"
|
||||
#include "Engine/Renderer/RenderList.h"
|
||||
#include "Engine/Threading/Threading.h"
|
||||
@@ -71,9 +72,20 @@ RenderTask::~RenderTask()
|
||||
|
||||
bool RenderTask::CanDraw() const
|
||||
{
|
||||
if (SwapChain && SwapChain->GetWindow() && !SwapChain->GetWindow()->IsVisible() && !SwapChain->GetWindow()->GetSettings().ShowAfterFirstPaint)
|
||||
if (!Enabled)
|
||||
return false;
|
||||
return Enabled;
|
||||
|
||||
const Window* window = SwapChain ? SwapChain->GetWindow() : nullptr;
|
||||
if (window && !window->IsVisible() && !window->GetSettings().ShowAfterFirstPaint)
|
||||
return false;
|
||||
|
||||
if (LastUsedFrame > 0 && RenderFPS > ZeroTolerance)
|
||||
{
|
||||
if (Time::Draw.UnscaledTime.GetTotalSeconds() < _lastFrameTime + (1.0f / RenderFPS))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void RenderTask::OnDraw()
|
||||
@@ -82,6 +94,9 @@ void RenderTask::OnDraw()
|
||||
OnBegin(context);
|
||||
OnRender(context);
|
||||
OnEnd(context);
|
||||
|
||||
if (RenderFPS > ZeroTolerance)
|
||||
_lastFrameTime = Time::Draw.UnscaledTime.GetTotalSeconds();
|
||||
}
|
||||
|
||||
void RenderTask::OnBegin(GPUContext* context)
|
||||
|
||||
Reference in New Issue
Block a user