Commit Graph

67 Commits

Author SHA1 Message Date
64bd8c5074 Refactor: use engine helpers for RootSignature and PSO creation 2026-03-17 01:16:39 +08:00
210bc450fa Refactor: use engine封装 for Vertex/Index Buffer operations 2026-03-17 00:47:05 +08:00
4b41a4cca1 Fix D3D12 build: add missing headers and fix CMake paths 2026-03-17 00:40:29 +08:00
0be91748c2 Add OpenGLPipelineState and integrate into main.cpp 2026-03-16 18:25:58 +08:00
430d23b719 Replace GLFW window management with OpenGLDevice from engine 2026-03-16 18:06:57 +08:00
220494c3c5 Replace local Shader class with OpenGLShader from engine 2026-03-16 17:29:20 +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
434ba0f336 Add OpenGL backend core classes: Buffer, VertexArray
- Added OpenGLBuffer class for VBO/IBO management
- Added OpenGLVertexArray class for VAO management
- Updated CMakeLists.txt to include new source files
2026-03-16 16:11:24 +08:00
170df5506b Add OpenGLShader class
- Created OpenGLShader class for shader compilation
- Supports compiling from file or source code
- Provides uniform setting methods (SetInt, SetFloat, SetVec3, SetMat4)
- Integrated with GLAD for OpenGL function loading
2026-03-16 16:09:09 +08:00
6aaf89e603 Add OpenGL backend: OpenGLDevice class
- Created OpenGLDevice class for window and OpenGL context management
- Added CreateWindow() and InitializeWithExistingWindow() methods
- Integrated with GLFW and GLAD
- Added to tests/OpenGL as test target

This is the first step in building the OpenGL RHI backend parallel to D3D12.
2026-03-16 16:07:12 +08:00
9c29cfa0a6 Rename README.md to AGENT.md for both D3D12 and OpenGL tests 2026-03-16 15:57:32 +08:00
722b6b86ba Add OpenGL test framework with logging and screenshot comparison
- Unified resolution to 1280x720 (same as D3D12)
- Added XCEngine Logger integration for debug output
- Added screenshot capture at frame 30 (glReadPixels -> PPM)
- Added run.bat test script
- Added compare_ppm.py for screenshot comparison
- Added GT.ppm reference image
- Added README.md documentation
- Updated CMakeLists.txt to link XCEngine library

Test: OpenGL rendering test passed (screenshot comparison 100% match)
2026-03-16 15:55:49 +08:00
77a121fc4f 精简 OpenGL 测试代码,移除冗余功能 2026-03-16 14:31:21 +08:00
d2d45bd973 Add OpenGL test project with backpack model and textures 2026-03-16 14:19:32 +08:00
3a78065574 移除D3D12测试中对RHIDevice抽象层的引用 2026-03-16 13:28:59 +08:00
9314aae32d Remove unused IRHIDevice abstraction from D3D12 test 2026-03-16 13:27:48 +08:00
2b3ac27243 Add OpenGL backend project and third phase plan 2026-03-16 13:18:53 +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
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
93bfba073c Remove redundant InitResourceBarrier helper function from main.cpp 2026-03-15 20:41:11 +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
b9285f37b1 Remove helper functions: CreateConstantBufferObject, UpdateConstantBuffer 2026-03-15 20:05:25 +08:00
a557ed75bf Simplify depth stencil resource usage 2026-03-15 20:02:45 +08:00
e1bbe24f0d Replace swap chain back buffers with D3D12Texture wrapper 2026-03-15 20:01:39 +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
70d3879687 Remove unused CreateTexture2D function 2026-03-15 19:40:24 +08:00
ff5dfc21db Replace CreateTexture2D with D3D12Texture wrapper 2026-03-15 19:39:16 +08:00
a1f0de4e4d Remove helper functions: GetCommandAllocator, GetCommandList, GetD3DDevice, SwapD3D12Buffers 2026-03-15 19:25:43 +08:00
c62dc58157 Replace constant buffer with D3D12Buffer wrapper 2026-03-15 18:59:28 +08:00
f25672c7d6 Replace CreateShaderFromFile with D3D12Shader wrapper 2026-03-15 18:57:01 +08:00
2a8f50134c feat: 实现 D3D12PipelineState 并替换到 tests/D3D12
- 添加 D3D12PipelineState.h/cpp
- 全局变量 gPipelineState
- 使用 D3D12PipelineState::Initialize 替代原生 CreateGraphicsPipelineState
- 测试通过
2026-03-15 18:41:27 +08:00
b98f588afd refactor: 将 tests/D3D12 的 RootSignature 替换为 D3D12RootSignature
- 添加全局变量 gRootSignature
- 使用 D3D12RootSignature::Initialize 替代原生 API
- 测试通过
2026-03-15 18:37:51 +08:00
ee7e710141 fix: CMakeLists.txt 自动拷贝测试脚本和GT.ppm
- 添加 run.bat、compare_ppm.py、GT.ppm 到输出目录
- 确保构建后可以直接运行测试
2026-03-15 18:34:02 +08:00
95fd1400bc fix: run.bat 删除旧截图避免假通过
- 运行前删除旧的 screenshot.ppm
- 确保测试使用实际生成的新截图
2026-03-15 18:31:51 +08:00
88cd65d082 fix: 修复 D3D12SwapChain 重复创建 swapchain 问题
- 添加 Initialize(IDXGISwapChain*, width, height) 重载方法
- 接受已存在的 swapchain 而不是重复创建
- 测试通过,日志显示正常渲染
2026-03-15 18:30:14 +08:00
80a11d1836 refactor: 将 tests/D3D12 的 SwapChain 替换为 D3D12SwapChain
- gSwapChain 替换为 D3D12SwapChain
- 使用 Initialize 方法替代原生 CreateSwapChain
- 使用 Present、GetCurrentBackBufferIndex 等 wrapper 方法
- 测试通过
2026-03-15 18:26:05 +08:00
407fe0fd32 refactor: 将 tests/D3D12 的 DescriptorHeap 替换为 D3D12DescriptorHeap
- gSwapChainRTVHeap, gSwapChainDSVHeap 替换为 D3D12DescriptorHeap
- srvHeap 替换为 D3D12DescriptorHeap
- 使用 Initialize 方法替代原生 CreateDescriptorHeap
- 测试通过
2026-03-15 18:21:07 +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
58341c9daf docs: 添加 D3D12 测试文档 2026-03-15 17:43:35 +08:00
e807dbcd96 fix: 截图后自动退出,添加 compare_ppm.py 2026-03-15 17:41:57 +08:00
3600e0e74b add: 添加 run.bat 脚本 2026-03-15 17:38:40 +08:00
182025be6a fix: 修复 CMakeLists.txt 路径并添加 stbi 库 2026-03-15 17:37:00 +08:00
4881aee70a refactor: 将截图功能移到RHI模块的D3D12Screenshot类 2026-03-15 15:39:15 +08:00
c79533c436 fix: 修复截图帧数不一致问题,改为30帧 2026-03-15 15:15:59 +08:00
60db4b77f8 fix: 截图帧数改为30帧 2026-03-15 15:09:58 +08:00