OpenGL 4.3 released
In addition to OpenGL ES 3.0 Khronos also released OpenGL 4.3 today. The latest incarnation of the desktop variant of this rendering API comes with some surprises.
OpenGL 4.1 added ES 2 compatibility, so from 2010 onwards GL was a superset of the embedded version. While ES 3 is based on GL 3.3 (without geometry shaders and rendering to multisample texture targets), it also adds new features (e.g. new compressed texture formats). Thus to stay compatible, the desktop GL version had to add these updates as well which was now done with 4.3 (ARB_ES3_compatibility).
Other noteworthy additions are ARB_multi_draw_indirect to save more draw calls and define draw parameters on the GPU itself, as well as KHR_debug a set of debug features previously known from ARB_debug_output and ARB_debug_label. Basically this means that you can register a callback to get informed of GL errors instead of querying errors yourself after each GL call. This is a huge step forward for debugging and should not be underestimated!
But the most surprisingly addition to OpenGL are compute shaders. Previously the combination of OpenGL and OpenCL was the way to go if you wanted to offload general purpose computations to the GPU in a graphics app. Now the ARB added an alternative to the also from Khronos defined API. While OpenCL is more flexible (you can for example run kernels also on the CPU or DSPs), compute shaders will lower the hurdles for graphics programmers to use the GPU for non-rendering tasks. The additional code needed to get a compute shader running in an OpenGL program is much less than the effort needed to integrate OpenCL and the code for the ‘kernels’ is GLSL, so code can directly be shared. I expect these factors to have a huge impact on rendering algorithms implemented in GL (even if it doesn’t add new features that weren’t available with OpenCL before).
And one more thing(TM): The specs are rewritten and re-organized to be better readability. The ARB did a good job here, very nice are the gray boxes with possible GL errors for each command! Thanks very much!