feat: initial DX12 foundation framework

This commit is contained in:
SpecialX
2026-03-19 18:27:49 +08:00
commit 60f73b525d
70 changed files with 8993 additions and 0 deletions

72
EngineTest/Test.h Normal file
View 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