Commit Graph

108 Commits

Author SHA1 Message Date
430d23b719 Replace GLFW window management with OpenGLDevice from engine 2026-03-16 18:06:57 +08:00
fee738b0b9 Move OpenGL backend classes from tests/OpenGL to engine/
- Relocated OpenGLDevice, OpenGLShader, OpenGLBuffer, OpenGLVertexArray, OpenGLTexture to engine/
- Updated engine/CMakeLists.txt to include OpenGL backend source files
- Updated tests/OpenGL/CMakeLists.txt to use engine backend
- Added OpenGLTexture class implementation
2026-03-16 17:22:45 +08:00
0ce312e648 Remove RHI interface inheritance from all D3D12 backend classes
- D3D12Device, D3D12CommandQueue, D3D12CommandAllocator, D3D12Fence
- D3D12DescriptorHeap, D3D12QueryHeap, D3D12RootSignature
- D3D12PipelineState, D3D12Sampler, D3D12Shader
- D3D12Buffer, D3D12Texture, D3D12SwapChain

All D3D12 backend classes now directly use D3D12 APIs without
going through RHI interface abstraction. This decouples the
D3D12 backend from the RHI abstraction layer.

Test: D3D12 rendering test passed (screenshot comparison 100% match)
2026-03-16 15:48:14 +08:00
0014c32fa5 Remove IRHIDevice inheritance from D3D12Device
- D3D12Device no longer inherits from IRHIDevice interface
- Removed interface factory methods (CreateCommandQueue, CreateCommandList, etc.)
- Keep concrete D3D12-specific methods (Initialize, Shutdown, GetDevice, etc.)
- This is the first step to decouple RHI abstraction from D3D12 backend
2026-03-16 15:41:30 +08:00
554c48448b Implement IShader and ISwapChain interfaces for D3D12 backend
- D3D12Shader now implements IShader interface with GetBytecode, GetBytecodeSize, GetType, GetInputLayout
- D3D12SwapChain now implements ISwapChain interface with GetBackBuffer returning IResource*
- Added D3D12Texture back buffer storage to SwapChain
- Fixed ISwapChain const correctness (GetCurrentBackBufferIndex, GetBackBuffer)
- main.cpp: use GetD3D12Bytecode() instead of GetBytecode() for PSO creation
2026-03-16 12:38:17 +08:00
f4d94bda3d Make D3D12Sampler implement ISampler interface 2026-03-16 00:35:18 +08:00
1d99ef4d31 Make D3D12PipelineState implement IPipelineState interface 2026-03-16 00:28:26 +08:00
8c1d68da57 Make D3D12RootSignature implement IRootSignature interface 2026-03-16 00:09:42 +08:00
068fea77f4 Make D3D12QueryHeap implement IQueryHeap interface 2026-03-16 00:04:06 +08:00
37750fda7d Make D3D12DescriptorHeap implement IDescriptorHeap interface 2026-03-16 00:00:46 +08:00
f231e3dc18 Make D3D12CommandAllocator implement ICommandAllocator interface 2026-03-15 23:50:45 +08:00
f063eb9329 Make D3D12Fence implement IFence interface 2026-03-15 23:44:39 +08:00
999c12a00e Make D3D12Texture and D3D12Buffer implement ITexture and IBuffer interfaces 2026-03-15 23:31:59 +08:00
fb2b794156 Add IRHIDevice interface implementation to D3D12Device
- D3D12Device now inherits from IRHIDevice
- Implement factory methods: CreateCommandQueue, CreateCommandList, CreateFence, etc.
- Make D3D12CommandQueue implement ICommandQueue
- Add backward-compatible overloads for existing main.cpp code
- Remove duplicate Viewport/Rect definitions from D3D12CommandList.h
- Update main.cpp to use IRHIDevice* pointer
2026-03-15 23:03:06 +08:00
dfbd218435 Move D3D12 cpp files to src/RHI/D3D12/ subdirectory 2026-03-15 20:50:06 +08:00
4af4326767 Add abstract RHI interfaces for cross-platform support: RHISystem, RHIDevice, Resource, CommandQueue, CommandList, etc. 2026-03-15 20:47:17 +08:00
d52028e196 Update main.cpp to use D3D12CommandList wrapper methods, add SetRenderTargets and Clear overloads 2026-03-15 20:36:42 +08:00
2a5fc4f0d4 Add GetDescriptorHandleIncrementSize to D3D12Device and update main.cpp to use wrapper 2026-03-15 20:31:37 +08:00
3e6388c221 Add D3D12Types.h with Types to D3D12 native type mappings 2026-03-15 20:28:03 +08:00
eab95df004 Add D3D12Common.h with helper functions for D3D12 backend 2026-03-15 20:21:37 +08:00
041d9ea422 Add Types.h with generic cross-platform types for RHI abstraction layer 2026-03-15 20:20:32 +08:00
13818fe641 Replace vertex/index buffer creation with D3D12Buffer wrapper 2026-03-15 19:58:22 +08:00
38e23e45c4 Replace depth buffer creation with D3D12Texture wrapper 2026-03-15 19:54:00 +08:00
632cba821d Replace RTV/DSV/SRV creation with wrapper classes 2026-03-15 19:48:20 +08:00
ff5dfc21db Replace CreateTexture2D with D3D12Texture wrapper 2026-03-15 19:39:16 +08:00
3959f74908 Add D3D12QueryHeap and D3D12UnorderedAccessView 2026-03-15 19:30:19 +08:00
f1cbf4e3a6 Add D3D12Buffer::InitializeWithData for vertex/index buffers 2026-03-15 19:16:46 +08:00
42c17ee106 Add D3D12 view wrapper classes: RTV, DSV, SRV, CBV 2026-03-15 19:10:32 +08:00
c62dc58157 Replace constant buffer with D3D12Buffer wrapper 2026-03-15 18:59:28 +08:00
c3feeda5d4 feat: 实现 D3D12Shader 着色器类
- 添加 D3D12Shader.h/cpp
- 支持从文件编译着色器
- 支持从内存编译着色器
- 测试通过
2026-03-15 18:51:38 +08:00
db8e8633c8 feat: 实现 D3D12Sampler 采样器类
- 添加 D3D12Sampler.h/cpp
- 支持采样器描述符
- 测试通过
2026-03-15 18:48:04 +08:00
017bbf281d feat: 实现 D3D12Texture 和 D3D12Buffer 资源类
- 添加 D3D12Texture.h/cpp - 纹理资源封装
- 添加 D3D12Buffer.h/cpp - 缓冲区资源封装
- 支持 CreateCommittedResource 创建资源
- 测试通过
2026-03-15 18:45:11 +08:00
2a8f50134c feat: 实现 D3D12PipelineState 并替换到 tests/D3D12
- 添加 D3D12PipelineState.h/cpp
- 全局变量 gPipelineState
- 使用 D3D12PipelineState::Initialize 替代原生 CreateGraphicsPipelineState
- 测试通过
2026-03-15 18:41:27 +08:00
2bdd6d3199 feat: 实现 D3D12RootSignature 根签名类
- 添加 D3D12RootSignature.h 头文件
- 实现 ID3D12RootSignature 封装
- 支持序列化根签名描述符
- 测试通过
2026-03-15 18:36:11 +08:00
88cd65d082 fix: 修复 D3D12SwapChain 重复创建 swapchain 问题
- 添加 Initialize(IDXGISwapChain*, width, height) 重载方法
- 接受已存在的 swapchain 而不是重复创建
- 测试通过,日志显示正常渲染
2026-03-15 18:30:14 +08:00
f187aa3b37 feat: 实现 D3D12SwapChain 交换链类
- 添加 D3D12SwapChain.h 头文件
- 实现 IDXGISwapChain3 封装
- 实现 Initialize、Present、Resize 等方法
- 测试通过
2026-03-15 18:24:02 +08:00
7f064e9e71 feat: 实现 D3D12DescriptorHeap 描述符堆类
- 添加 D3D12DescriptorHeap.h 头文件
- 实现 ID3D12DescriptorHeap 封装
- 支持 RTV、DSV、CBV_SRV_UAV、Sampler 堆类型
- 支持 GPU 可见描述符堆
- 添加 GetCPUDescriptorHandle、GetGPUDescriptorHandle 等方法
- 测试通过
2026-03-15 18:17:59 +08:00
ddd3140114 refactor: 继续用 D3D12CommandList 替换原生 API
- 添加更多 wrapper 方法: SetDescriptorHeaps, SetGraphicsRootConstantBufferView, SetGraphicsRoot32BitConstants, SetGraphicsRootDescriptorTable, SetGraphicsRootShaderResourceView
- 使用 wrapper 方法替换 main.cpp 中的原生 API 调用
- 测试通过
2026-03-15 18:13:53 +08:00
7050e88c49 refactor: 将 tests/D3D12 的 CommandList 替换为 D3D12CommandList 类
- 将全局 ID3D12GraphicsCommandList 替换为 D3D12CommandList
- 更新初始化、Reset、Close 调用
- 修复 Initialize 中不应调用 Close() 的问题
- 测试通过,截图与 GT.ppm 完全匹配
2026-03-15 18:10:16 +08:00
bf37b1c00c feat: 实现 D3D12CommandList 命令列表类
- 添加 D3D12CommandList.h 头文件,包含 Viewport、Rect、ResourceBarrierDesc 结构体
- 实现 ID3D12GraphicsCommandList 封装
- 实现所有渲染命令:TransitionBarrier、UAVBarrier、AliasBarrier
- 实现状态追踪和资源追踪
- 添加到 CMakeLists.txt 构建系统
- 修复 tests/D3D12/run.bat 路径问题
2026-03-15 18:05:06 +08:00
4881aee70a refactor: 将截图功能移到RHI模块的D3D12Screenshot类 2026-03-15 15:39:15 +08:00
3767f3a6c5 fix: 修复Logger模块Bug\n- Logger.h: m_categoryEnabled数组初始化错误,只有第一个元素为true\n- FileLogSink: 添加文件关闭时自动重开逻辑\n- main.cpp: 集成Engine Logger 2026-03-15 14:55:23 +08:00
c6d7ef4c39 feat: 集成engine日志系统到D3D12测试程序\n- FileLogSink每次写入后刷新\n- main.cpp使用Logger输出日志 2026-03-15 14:25:36 +08:00
3d285fa98a fix: 修复截图保存功能和CreateCommittedResource参数问题
- 修复SaveScreenshot函数中D3D12_RESOURCE_DESC的初始化
- 添加完整的SampleDesc和Layout字段
- 修复从PRESENT状态正确转换到COPY_SOURCE进行读取
- 启用D3D12 Debug Layer以获取更好的调试信息
- 添加日志输出到文件以便捕获调试信息
2026-03-15 12:51:18 +08:00
17c8ea46c5 feat: 实现D3D12Fence封装
- 添加D3D12Fence类封装ID3D12Fence
- 包含Signal/Wait/GetCompletedValue等同步功能
- 更新测试项目使用新的封装类
2026-03-15 03:23:39 +08:00
8fb11dc650 feat: 实现D3D12CommandQueue和D3D12CommandAllocator
- 添加D3D12CommandQueue类封装ID3D12CommandQueue
- 添加D3D12CommandAllocator类封装ID3D12CommandAllocator
- 在D3D12Enum.h中添加CommandQueueType转换函数
- 在CMake中添加Res文件夹自动拷贝到输出目录
- 更新测试项目使用新的封装类
2026-03-15 03:15:12 +08:00
cba4f9c838 feat: 实现D3D12Device类,整合D3D12Enum.h转换函数
- 简化D3D12Device,仅封装ID3D12Device和IDXGIFactory
- 将D3D12Common.h中的转换函数合并到D3D12Enum.h
- 添加ResourceStates枚举到Enums.h
- 更新测试项目使用新的D3D12Device类
- 更新CMake配置
2026-03-15 03:02:15 +08:00
be6abd7bf6 refactor: RHI枚举改为独立编号,添加D3D12转换层 2026-03-15 02:24:56 +08:00
3e89489078 refactor: 添加RHI Enums.h并在D3D12测试中替换部分D3D12枚举 2026-03-15 02:05:28 +08:00
f427eb2588 refactor: 删除旧的RHI实现,添加D3D12测试用例和第二阶段计划 2026-03-15 01:58:30 +08:00