Commit Graph

11 Commits

Author SHA1 Message Date
1797e7fe17 fix: encapsulate OpenGL types in VertexAttribute to eliminate raw GL API usage in tests
- Add VertexAttributeType and VertexAttributeNormalized enums in OpenGLVertexArray.h
- Add ToGLAttributeType() converter in OpenGLVertexArray.cpp
- Remove glActiveTexture() call from quad test (already handled by texture.Bind())
- Remove #include <glad/glad.h> from triangle test
- Update unit tests to use encapsulated enums

All three OpenGL integration tests (minimal, triangle, quad) pass with 0% pixel difference.
2026-03-22 14:33:57 +08:00
11919aad2f Add OpenGL quad integration test with texture mapping
- Add tests/RHI/OpenGL/integration/quad/ with main.cpp, CMakeLists.txt
- Add GLSL shaders (quad.vert, quad.frag) for textured quad rendering
- Use OpenGLVertexArray, OpenGLBuffer, OpenGLShader, OpenGLPipelineState
- Add OpenGLTexture::LoadFromFile for texture loading (earth.png)
- Add OpenGLSampler for texture sampling configuration
- Disable depth test for 2D quad rendering
- GT.ppm generated from OpenGL rendering output (0% diff on re-run)
2026-03-22 03:03:14 +08:00
f8e7edd2c1 Add OpenGL triangle integration test with GLSL shaders
- Add tests/RHI/OpenGL/integration/triangle/ with main.cpp, CMakeLists.txt
- Add GLSL shaders (triangle.vert, triangle.frag) for vertex/fragment shading
- Use OpenGLVertexArray, OpenGLBuffer, OpenGLShader, OpenGLPipelineState
- Disable depth test to allow 2D triangle rendering
- GT.ppm reused from D3D12 triangle test (0% diff)
2026-03-22 02:30:52 +08:00
7a6cd412c8 Remove kissfft third party library and update OpenGL screenshot 2026-03-21 15:54:42 +08:00
93139813aa OpenGL: Use OpenGLCommandList instead of raw GL in minimal test
- Replace glViewport() with commandList.SetViewport()
- Replace glClearColor()+glClear() with commandList.Clear()
- Add OpenGLCommandList include and instance
2026-03-20 20:07:24 +08:00
394bec9db6 OpenGL: Add test documentation for minimal integration test
- Create TEST_SPEC.md with OpenGL test hierarchy and specifications
- Add section and inline comments to main.cpp explaining:
  - Window size calculation with AdjustWindowRect
  - glFinish before screenshot for GPU sync
  - Target frame count warm-up period
  - Shutdown order (reverse of initialization)
2026-03-20 19:56:48 +08:00
f8573d2715 OpenGL: Refactor integration test with separate output directory 2026-03-20 19:39:49 +08:00
28bf76cb00 OpenGL: Fix screenshot gray edge issue by correcting SetWindowPos usage
- OpenGLSwapChain::Initialize now uses AdjustWindowRect before SetWindowPos
- This ensures window client area matches expected size (1280x720)
- Previously SetWindowPos was given client area size instead of full window size
- Removed debug fprintf statements from OpenGLDevice
- Updated minimal integration test to use cleaner code
2026-03-20 19:33:58 +08:00
572e0e9bd5 OpenGL: Refactor integration test and enable CTest framework
- Simplify OpenGL integration test structure
- Enable CTest registration for OpenGL tests
- Refactor test fixtures and device enumeration
- Minor code cleanup and improvements
2026-03-20 19:05:50 +08:00
460a2477c3 OpenGL: Add minimal integration test and enable integration test framework
- Add OpenGL_Minimal integration test using Win32 native API + glad
- Copy run_integration_test.py and compare_ppm.py from D3D12
- Create minimal/main.cpp with red clear color (matching D3D12)
- Generate GT.ppm golden template for 1280x720 red window
- Add VertexArray_Bind_MultipleAttributes unit test
- Update integration/CMakeLists.txt to build OpenGL_Minimal target
2026-03-20 18:30:38 +08:00
0a19fdfb0f OpenGL: Restructure tests similar to D3D12 layout
- Move old test files to new unit/integration structure
- Add OpenGL Test Fixture
- Update CMakeLists.txt for new layout
- Add OpenGL_Test_Restructuring_Plan.md
2026-03-20 17:37:09 +08:00