The Khronos Group this week publicly released the OpenGL 3.1 specification that modernizes and streamlines the cross-platform API. OpenGL 3.1 includes GLSL 1.40, a new version of the OpenGL shading language, and provides enhanced access to the latest programmable graphics hardware through improved programmability, more efficient vertex processing, expanded texturing functionality and increased buffer management flexibility.
“The rapid nine month development of OpenGL 3.1 demonstrates the schedule-driven approach to the standard that is enabling and inspiring cutting edge, cross-platform GPU functionality,” said Barthold Lichtenbelt, chairman of the OpenGL ARB working group at Khronos.
OpenGL 3.1 leverages the evolutionary model introduced in OpenGL 3.0 to dramatically streamline the API for simpler and more efficient software development, and accelerates the ongoing convergence with the widely available OpenGL ES mobile and embedded 3D API to unify application development. The OpenGL 3.1 specification enables developers to leverage state-of-the-art graphics hardware available on a significant number of installed GPUs across all desktop operating systems. All existing graphics processors that support OGL 3.0 will also support 3.1 with proper drivers.
“OpenGL 3.1 answers the requests from the developer community to streamline and modernize the OpenGL API. The OpenGL ARB will continue to leverage the unique evolutionary model introduced in OpenGL 3.0 to drive the ongoing revolution in OpenGL while ensuring backwards compatibility where it is needed,” explained Mr. Lichtenbelt.
OpenGL 3.1 introduces a broad range of significant new features including:
- Texture Buffer Objects - a new texture type that holds a one-dimensional array of texels of a specified format, enabling extremely large arrays to be accessed by a shader, vital for a wide variety of GPU compute applications;
- Signed Normalized Textures – new integer texture formats that represent a value in the range [-1.0,1.0];
- Uniform Buffer Objects - enables rapid swapping of blocks of uniforms for flexible pipeline control, rapid updating of uniform values and sharing of uniform values across program objects;
- More samplers – now at least 16 texture image units must be accessible to vertex shaders in addition to the 16 already guaranteed to be accessible to fragment shaders;
- Primitive Restart – to easily restart an executing primitive, useful for efficiently drawing a mesh with many triangle strips, for example;
- Instancing - the ability to draw objects multiple times by re-using vertex data to reduce duplicated data and number of API calls;
- CopyBuffer API – accelerated copies from one buffer object to another, useful for many applications including those that share buffers with OpenCL™ 1.0 for advanced visual computing applications.
Concurrently with the release of the OpenGL 3.1 specification, the OpenGL ARB has released an optional compatibility extension that enables application developers to access the OpenGL 1.X/2.X functionality removed in OpenGL 3.1, ensuring full backwards compatibility for applications that require it.