V2 working
This commit is contained in:
36
apps/RenderCadenceCompositor/render/RenderCadenceClock.h
Normal file
36
apps/RenderCadenceCompositor/render/RenderCadenceClock.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
|
||||
class RenderCadenceClock
|
||||
{
|
||||
public:
|
||||
using Clock = std::chrono::steady_clock;
|
||||
using Duration = Clock::duration;
|
||||
using TimePoint = Clock::time_point;
|
||||
|
||||
struct Tick
|
||||
{
|
||||
bool due = false;
|
||||
uint64_t skippedFrames = 0;
|
||||
Duration sleepFor = Duration::zero();
|
||||
};
|
||||
|
||||
explicit RenderCadenceClock(double frameDurationMilliseconds = 1000.0 / 60.0);
|
||||
|
||||
void Reset(TimePoint now = Clock::now());
|
||||
Tick Poll(TimePoint now = Clock::now());
|
||||
void MarkRendered(TimePoint now = Clock::now());
|
||||
|
||||
Duration FrameDuration() const { return mFrameDuration; }
|
||||
TimePoint NextRenderTime() const { return mNextRenderTime; }
|
||||
uint64_t OverrunCount() const { return mOverrunCount; }
|
||||
uint64_t SkippedFrameCount() const { return mSkippedFrameCount; }
|
||||
|
||||
private:
|
||||
Duration mFrameDuration;
|
||||
TimePoint mNextRenderTime = Clock::now();
|
||||
uint64_t mOverrunCount = 0;
|
||||
uint64_t mSkippedFrameCount = 0;
|
||||
};
|
||||
Reference in New Issue
Block a user