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

116
Engine/Platform/Window.cpp Normal file
View File

@@ -0,0 +1,116 @@
/**
* @file Window.cpp
* @brief window 句柄对象成员函数实现。
* @details
* 本文件将 window 类的高层接口转发到平台后端函数:
* - full screen、caption、resize 等操作;
* - 原生句柄与尺寸查询;
* - 窗口关闭状态查询。
* 通过 INCLUDE_WINDOW_CPP 宏控制其编译包含方式。
*/
#if INCLUDE_WINDOW_CPP
#include "Window.h"
namespace XEngine::platform {
/**
* @brief 设置窗口全屏状态。
* @param is_fullscreen 目标全屏状态。
*/
void
window::set_fullscreen(bool is_fullscreen) const
{
assert(is_valid());
set_window_fullscreen(_id, is_fullscreen);
}
/**
* @brief 查询窗口是否处于全屏状态。
* @return 全屏返回 true。
*/
bool
window::is_fullscreen() const
{
assert(is_valid());
return is_window_fullscreen(_id);
}
/**
* @brief 获取原生窗口句柄。
* @return 平台相关窗口句柄指针。
*/
void*
window::handle() const
{
assert(is_valid());
return get_window_handle(_id);
}
/**
* @brief 设置窗口标题。
* @param caption 标题文本。
*/
void
window::set_caption(const wchar_t* caption) const
{
assert(is_valid());
set_window_caption(_id, caption);
}
/**
* @brief 获取窗口矩形坐标。
* @return 左上右下坐标向量。
*/
math::u32v4 window::size() const
{
assert(is_valid());
return get_window_size(_id);
}
/**
* @brief 调整窗口客户区尺寸。
* @param width 目标宽度。
* @param height 目标高度。
*/
void
window::resize(u32 width, u32 height)const
{
assert(is_valid());
resize_window(_id, width, height);
}
/**
* @brief 获取窗口当前宽度。
* @return 宽度像素值。
*/
u32
window::width()const
{
assert(is_valid());
math::u32v4 s{ size() };
return s.z - s.x;
}
/**
* @brief 获取窗口当前高度。
* @return 高度像素值。
*/
u32
window::height()const
{
assert(is_valid());
math::u32v4 s{ size() };
return s.w - s.y;
}
/**
* @brief 查询窗口是否已关闭。
* @return 已关闭返回 true。
*/
bool
window::is_closed()const
{
assert(is_valid());
return is_window_close(_id);
}
}
#endif //INCLUDE_WINDOW_CPP