feat: initial DX12 foundation framework
This commit is contained in:
72
EngineTest/Test.h
Normal file
72
EngineTest/Test.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @file Test.h
|
||||
* @brief 测试基类与计时工具定义。
|
||||
*/
|
||||
#pragma once
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include "Id.h"
|
||||
|
||||
|
||||
#define TEST_ENTITY_COMPONENTS 0
|
||||
#define TEST_WINDOW_COMPONENTS 0
|
||||
#define TEST_RENDERER 1
|
||||
|
||||
class Test
|
||||
{
|
||||
public:
|
||||
virtual bool initialize() = 0;
|
||||
virtual void run() = 0;
|
||||
virtual bool shutdown() = 0;
|
||||
};
|
||||
|
||||
#if _WIN64
|
||||
#include <Windows.h>
|
||||
class time_it
|
||||
{
|
||||
public:
|
||||
using clock = std::chrono::high_resolution_clock;
|
||||
using time_stamp = std::chrono::steady_clock::time_point;
|
||||
|
||||
constexpr float dt_avg() const { return _dt_avg * 1e-3f; }
|
||||
void begin()
|
||||
{
|
||||
_start = clock::now();
|
||||
}
|
||||
|
||||
void end()
|
||||
{
|
||||
|
||||
auto dt = clock::now() - _start;
|
||||
_msg_avg += ((float)std::chrono::duration_cast<std::chrono::milliseconds>(dt).count() - _msg_avg) / (float)_counter;
|
||||
++_counter;
|
||||
_dt_avg = _msg_avg;
|
||||
|
||||
if (std::chrono::duration_cast<std::chrono::seconds>(clock::now() - _seconds).count() >= 1)
|
||||
{
|
||||
OutputDebugStringA("Avg. frame (ms): ");
|
||||
OutputDebugStringA(std::to_string(_msg_avg).c_str());
|
||||
OutputDebugStringA((" " + std::to_string(_counter)).c_str());
|
||||
OutputDebugStringA(" fps");
|
||||
OutputDebugStringA("\n");
|
||||
_msg_avg = 0.f;
|
||||
_counter = 1;
|
||||
_seconds = clock::now();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private:
|
||||
float _dt_avg{ 16.7f };
|
||||
float _msg_avg{ 0.f };
|
||||
int _counter{ 1 };
|
||||
time_stamp _start;
|
||||
time_stamp _seconds{ clock::now() };
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user