LukasBanana / LLGL

Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
BSD 3-Clause "New" or "Revised" License
2.03k stars 135 forks source link

Add C++20 compliance to LLGL #86

Closed gdianaty closed 1 year ago

gdianaty commented 1 year ago

Hello! This PR introduces C++20 compliance to LLGL. By default, compiler errors occur (especially in SmallVector, which uses now removed functionality in std::allocator. This PR aims to fix those compile errors and introduce C++20 compliance. Also, this PR includes some small updates to the pathing of the SPIR-V headers to conform with current versions of the Vulkan SDK.

I was unable to find a C++ standard to which the LLGL library is complaint, but these changes are fully compliant with C++11. If C++11 support is unsatisfactory, I'm more than happy to find an alternative. All tests were performed using the built-in project Testbed.

I am unable to test support for Metal and OpenGLES, as I lack access to the appropriate Apple hardware. The PR will remain in draft status until aforementioned support is tested, either by myself, or by another kind soul.

Backend All Tests Passed?
D3D12
D3D11
Vulkan
OpenGL
OpenGLES
Metal
gdianaty commented 1 year ago

Thanks for your feedback!