d75780f8c4
Enhance OpenGLSwapChain with presentation control
...
- Add PresentMode enum (Immediate, VSync, Mailbox, Fifo)
- Add SurfaceFormat enum for color formats
- Add Initialize() overloads with vsync, width/height, PresentMode
- Add Resize(), SetVSync() for runtime control
- Add GetWidth/Height/FramebufferWidth/FramebufferHeight
- Add ShouldClose, SetShouldClose, PollEvents for window management
- Implement using GLFW for window/swap control
2026-03-17 02:25:18 +08:00
be72e2f4a7
Enhance OpenGL RTV and DSV with comprehensive framebuffer support
...
OpenGLRenderTargetView:
- Add RenderTargetType enum for different texture types
- Add RenderTargetViewDesc struct with mip level, array slice, layer info
- Add Initialize() with desc parameter for 2D/2DArray/3D/Cube
- Add InitializeCubemap() for cubemap faces
- Add Bind(count) overload for multiple framebuffers
- Add Clear() methods for color and depth-stencil
- Add static BindFramebuffer/UnbindFramebuffer methods
OpenGLDepthStencilView:
- Add DepthStencilType enum for different texture types
- Add DepthStencilViewDesc struct with mip level, array slice, layer info
- Add Initialize() with desc parameter for 2D/2DArray/Cube
- Add InitializeCubemap() for cubemap faces
- Add ClearDepth, ClearStencil, ClearDepthStencil methods
- Add static BindFramebuffer/UnbindFramebuffer methods
2026-03-17 02:20:56 +08:00
6126404e3f
Enhance OpenGLFence with proper synchronization
...
- Add FenceStatus enum for status query
- Add m_sync (GLsync) for OpenGL fence synchronization
- Add Signal(value) overload with fence value
- Add Wait(timeoutNs) with timeout support
- Add GetStatus() for async status check
- Add GetCompletedValue() and GetCurrentValue()
- Implement using glSync for proper GPU synchronization
- Replace glFinish blocking with glClientWaitSync
2026-03-17 02:17:41 +08:00
1de66b835d
Enhance OpenGLPipelineState with comprehensive state management
...
- Add BlendOp enum for blend operations
- Add PolygonMode enum for polygon rendering mode
- Add StencilOp enum for stencil operations
- Add ScissorState and LogicalOperation structs
- Add DepthStencilState: stencil enable, read/write mask, stencil ref, stencil func, stencil ops
- Add BlendState: blend equation, color write mask, blend factor
- Add RasterizerState: polygon mode, polygon offset, depth clip, scissor test, multisample
- Add ViewportState: float coordinates with min/max depth
- Add Apply methods for individual state groups
- Add AttachShader/DetachShader for program management
- Add getter methods for state structs
2026-03-17 02:15:48 +08:00
413f4c178f
Enhance OpenGLCommandList with comprehensive rendering API
...
- Add ClearFlags, ClearColor, ClearDepth, ClearStencil, ClearDepthStencil
- Add SetVertexBuffers (multiple buffers)
- Add SetIndexBuffer with offset
- Add BindVertexArray with index buffer
- Add SetViewport with depth range, SetViewports
- Add SetScissor, SetScissorRects, EnableScissorTest
- Add depth test/write/func methods
- Add stencil test methods
- Add blending methods (enable, blend func, equation, color)
- Add culling methods (enable, cull face, front face, polygon mode)
- Add instanced drawing (DrawInstanced, DrawIndexedInstanced)
- Add indirect drawing (DrawIndirect, DrawIndexedIndirect)
- Add MultiDrawArrays, MultiDrawElements
- Add Dispatch and Compute Shader support
- Add MemoryBarrier and TextureBarrier
- Add texture/sampler binding methods
- Add buffer binding (BindBufferBase, BindBufferRange)
- Add Enable/Disable for OpenGL caps
- Add uniform setting methods
- Add query methods
- Add ReadPixels, BlitFramebuffer, CopyImageSubData
- Add framebuffer invalidation
- Add debug group push/pop
2026-03-17 02:13:02 +08:00
a54666df11
Enhance OpenGLTexture with more texture types
...
- Add OpenGLTextureType enum (1D, 2D, 2DArray, 3D, Cube, CubeArray)
- Add OpenGLFormat enum for texture formats
- Add Initialize() method for generic texture creation
- Add InitializeCubeMap() for cubemap textures
- Add BindImage() for image load/store
- Add GenerateMipmap(), SetFiltering(), SetWrapping() methods
- Add GetType(), GetMipLevels(), GetDepth() getters
2026-03-17 02:10:53 +08:00
56c32bfbde
Enhance OpenGLBuffer with more buffer types and features
...
- Add OpenGLBufferType enum (Vertex, Index, Uniform, CopyRead, CopyWrite, etc.)
- Add Initialize() method with buffer type parameter
- Add Map/Unmap for direct buffer access
- Add SetData for dynamic updates
- Add BindBase for buffer binding to indexed targets
- Add GetType and IsDynamic getters
2026-03-17 02:08:49 +08:00
393a0c67f1
Add ResourceStates::GenericRead and HeapType enums
2026-03-17 01:37:38 +08:00
312699e262
Add CreateDescriptorRange helper
2026-03-17 01:33:17 +08:00
271c05d8c7
Add CreateDesc for D3D12RenderTargetView
2026-03-17 01:32:22 +08:00
f615a86aab
Add CreateDesc for D3D12ShaderResourceView
2026-03-17 01:26:40 +08:00
83e91b16c7
Add CreateDesc for D3D12DepthStencilView
2026-03-17 01:23:23 +08:00
9fda349fa1
Add CreateDesc helper for DescriptorHeap
2026-03-17 01:21:17 +08:00
3d6787b6a4
Add CreateSamplerDesc helper method
2026-03-17 01:19:21 +08:00
64bd8c5074
Refactor: use engine helpers for RootSignature and PSO creation
2026-03-17 01:16:39 +08:00
73627f62f4
Fix CreateDescriptorTable: pass descriptor ranges array instead of using static
2026-03-17 01:03:13 +08:00
988f94eb29
Add static helper methods to D3D12RootSignature and D3D12PipelineState
2026-03-17 00:57:35 +08:00
7874033379
Add RootSignatureBuilder and PipelineStateBuilder for cleaner RHI API
2026-03-17 00:52:24 +08:00
4b41a4cca1
Fix D3D12 build: add missing headers and fix CMake paths
2026-03-17 00:40:29 +08:00
5bcf9d74a3
Remove legacy RHI header files
2026-03-16 22:25:37 +08:00
472f106a12
Refactor D3D12: remove ICommandQueue, IFence dependencies
2026-03-16 21:50:54 +08:00
4a0f6d65d1
Remove OpenGLMesh (not needed, D3D12 has no Mesh)
2026-03-16 19:15:18 +08:00
801c563eb5
Add OpenGLMesh class to engine (not yet integrated in main.cpp)
2026-03-16 19:12:27 +08:00
bf98fa0b89
Add OpenGLRenderTargetView and OpenGLDepthStencilView
2026-03-16 19:06:21 +08:00
3cd47ea4c8
Add OpenGLSampler
2026-03-16 18:52:00 +08:00
aee4ae88db
Add OpenGLFence
2026-03-16 18:48:12 +08:00
377f43260b
Add OpenGLSwapChain
2026-03-16 18:41:05 +08:00
fce3d2421c
Add OpenGLCommandList
2026-03-16 18:35:02 +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
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