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

View File

@@ -0,0 +1,80 @@
/**
* @file MathTypes.h
* @brief 数学常量与 DirectX 数学类型别名集合。
* @details
* 统一定义引擎常用数学基础元素:
* - 常量pi、two_pi、epsilon
* - 向量/矩阵别名v2/v3/v4、m3x3/m4x4 等;
* - 与 Win64 下 DirectXMath 类型的映射与对齐变体。
*/
#pragma once
#include "CommonHeader.h"
namespace XEngine::math {
//constexpr long double pi = 3.141592653589793238462643383279L;
/**
* @brief 圆周率常量。
*/
constexpr float pi = 3.1415927f;
/**
* @brief 两倍圆周率常量。
*/
constexpr float two_pi = 6.2831853f;
/**
* @brief 浮点比较容差常量。
*/
constexpr float epsilon = 1e-5f;
#if defined(_WIN64)
/**
* @brief DirectXMath 向量类型别名。
* @details
* - 无 A 后缀类型使用常规布局;
* - A 后缀类型要求 16 字节对齐,适合 SIMD 对齐访问场景。
*/
using v2 = DirectX::XMFLOAT2;
using v2a = DirectX::XMFLOAT2A;
using v3 = DirectX::XMFLOAT3;
using v3a = DirectX::XMFLOAT3A;
using v4 = DirectX::XMFLOAT4;
using v4a = DirectX::XMFLOAT4A;
/**
* @brief DirectXMath 整型向量别名。
*/
using u32v2 = DirectX::XMUINT2;
using u32v3 = DirectX::XMUINT3;
using u32v4 = DirectX::XMUINT4;
using s32v2 = DirectX::XMINT2;
using s32v3 = DirectX::XMINT3;
using s32v4 = DirectX::XMINT4;
/**
* @brief 标量浮点向量别名。
*/
using f32v2 = DirectX::XMFLOAT2;
using f32v3 = DirectX::XMFLOAT3;
using f32v4 = DirectX::XMFLOAT4;
/**
* @brief DirectXMath 矩阵与寄存器向量别名。
*/
using Vec4 = DirectX::XMVECTOR;
using Mat4 = DirectX::XMMATRIX;
using Mat3 = DirectX::XMFLOAT3X3;
using Mat4f = DirectX::XMFLOAT4X4;
using m3x3 = DirectX::XMFLOAT3X3;
using m4x4 = DirectX::XMFLOAT4X4;
using m4x4a = DirectX::XMFLOAT4X4A;
using vector4 = DirectX::XMVECTOR;
using MAT4 = DirectX::XMMATRIX;
using vector = DirectX::XMVECTOR;
using Quat = DirectX::XMVECTOR;
#endif // (_WIN64)
}