It has been a while (almost one year) since the last update of the API but finally we have it. Moreover this new version brings some quite interesting stuff and moves graphics API a bit further.
I am not going to write a full and a professional review of the API but I try to mention some more important features and concepts.
So what do we get with this new release?
At first some links to look for more info:
- OpenGL 4.3 review by g-truc - G-Truc was very quick and he wrote an interesting review.
- http://www.opengl.org/registry/ - the source of all info
- glspec43.core.20120806.withchanges.pdf - this spec has got even a new title page! Unfortunately it is 745 pages long ;/
- @www.anandtech.com - OpenGL 4.3 - another detailed review
- http://www.nvidia.com/content/devzone/opengl-driver-4.3.html - NVidia with their 4.3 drivers!
Several items that gained my attention:
- ES3_compatibility - Adds missing features to OpenGL so that code from OpenGL ES 3.0 can be easily moved to desktop code. This extension follows the ES2_compatibility. All in all we get
- ReleaseShaderCompiler function and functions for loading shaders from binaries
- Fixed point precision for vertex attributes
- Support for ES shading language, we can use #version 300 es for GLSL ES 3.0 and #version 100 es for GLSL ES 1.0
- compute_shader - Although OpenCL is a great platform and it gains more and more popularity it is not perfect for OpenGL cooperation. For instance you have to do context switching which may cost a lot. Moreover OpenCL is sometimes to generic and too powerful. Compute Shaders can be executed in the OpenGL contexts. Another important feature is that 'interop' is simpler (same language syntax, shared uniforms, resources, etc). This makes writing generic computation a bit easier.
- DEBUG features - lots of debug features that gives us more power to handle errors and know what is going wrong. glGetError is to simple and not enough any more.
- vertex_attrib_binding - more flexibility with vertex attributes
When comparing with OpenGL 3.0 the new release has tons of new stuff. It is quite hard to follow new standards so quickly! All in all we can see that OpenGL becomes more and more generic and programmable. Maybe in some time we will be able to write custom pipelines in Compute Shaders? New and 'hot' extensions are waiting to be in the standard: NW_bindless_texture and AMD_sparse_texture (for virtual texturing). Morever the ES version is now like OpenGL 3.0 so building multi-platform apps becomes easier.
We will see what happens next...