4 ms·
The big advantage of not using OpenGL is that D3D11, D3D12 and Metal all have excellent validation layers which tell you exactly what's wrong when you mess some
by flohofwoe 3y ago
The big advantage of not using OpenGL is that D3D11, D3D12 and Metal all have excellent validation layers which tell you exactly what's wrong when you mess something up. In OpenGL you're pretty much left alone, staring at that black screen.
Xcode and Visual Studio also have builtin graphics debuggers for Metal and D3D11 (not sure if the VS debugger also supports D3D12 though).
- reactordev 3y agoBecause you forget to call glGetError and do the error check on your previous call. In a world where we are driven by exceptions, not excepting and requiring you to check is actually a good thing, you wouldn’t want a shader param exception from panicking your game in the middle of a gun fight.
- flohofwoe 3y agoglGetError() is useless unfortunately for getting any information about what went wrong, because it only has 8 error codes: https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetE... There's a debug output extension (or core feature since 4.3) that's slightly more verbose, but not universally supported (e.g. AFAIK not on macOS).
- CyborgCabbage 3y agoWhat about Debug Output? https://www.khronos.org/opengl/wiki/Debug_Output https://www.khronos.org/opengl/wiki/Debug_Output
- whstl 3y agoThat's a fantastic point. As much as I managed to do stuff in OpenGL for decades, it was definitely left behind DX and Metal in terms of API ergonomics.