mirror of
https://gitcode.com/gh_mirrors/es/esp32-opencv.git
synced 2025-08-26 02:10:21 +08:00
initial commit
This commit is contained in:
@ -0,0 +1,76 @@
|
||||
#pragma once
|
||||
|
||||
#include <wrl.h>
|
||||
|
||||
// Helper class for basic timing.
|
||||
ref class BasicTimer sealed
|
||||
{
|
||||
public:
|
||||
// Initializes internal timer values.
|
||||
BasicTimer()
|
||||
{
|
||||
if (!QueryPerformanceFrequency(&m_frequency))
|
||||
{
|
||||
throw ref new Platform::FailureException();
|
||||
}
|
||||
Reset();
|
||||
}
|
||||
|
||||
// Reset the timer to initial values.
|
||||
void Reset()
|
||||
{
|
||||
Update();
|
||||
m_startTime = m_currentTime;
|
||||
m_total = 0.0f;
|
||||
m_delta = 1.0f / 60.0f;
|
||||
}
|
||||
|
||||
// Update the timer's internal values.
|
||||
void Update()
|
||||
{
|
||||
if (!QueryPerformanceCounter(&m_currentTime))
|
||||
{
|
||||
throw ref new Platform::FailureException();
|
||||
}
|
||||
|
||||
m_total = static_cast<float>(
|
||||
static_cast<double>(m_currentTime.QuadPart - m_startTime.QuadPart) /
|
||||
static_cast<double>(m_frequency.QuadPart)
|
||||
);
|
||||
|
||||
if (m_lastTime.QuadPart == m_startTime.QuadPart)
|
||||
{
|
||||
// If the timer was just reset, report a time delta equivalent to 60Hz frame time.
|
||||
m_delta = 1.0f / 60.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_delta = static_cast<float>(
|
||||
static_cast<double>(m_currentTime.QuadPart - m_lastTime.QuadPart) /
|
||||
static_cast<double>(m_frequency.QuadPart)
|
||||
);
|
||||
}
|
||||
|
||||
m_lastTime = m_currentTime;
|
||||
}
|
||||
|
||||
// Duration in seconds between the last call to Reset() and the last call to Update().
|
||||
property float Total
|
||||
{
|
||||
float get() { return m_total; }
|
||||
}
|
||||
|
||||
// Duration in seconds between the previous two calls to Update().
|
||||
property float Delta
|
||||
{
|
||||
float get() { return m_delta; }
|
||||
}
|
||||
|
||||
private:
|
||||
LARGE_INTEGER m_frequency;
|
||||
LARGE_INTEGER m_currentTime;
|
||||
LARGE_INTEGER m_startTime;
|
||||
LARGE_INTEGER m_lastTime;
|
||||
float m_total;
|
||||
float m_delta;
|
||||
};
|
Reference in New Issue
Block a user