Aiming to keep pace with Microsoft and advance the computing frontier, the group behind OpenGL has announced a new version of its interface designed to make advanced graphics easier for programmers to handle.
OpenGL 4.0 adds more support for using a graphics processing unit (GPU) for other computing chores and for tesselation, which subdivides a region on a graphics object into many smaller patches for more detailed imagery. The technology got its start as a graphics library at pioneering Silicon Graphics but has grown into a standard that works on many different computer systems and overseen by the Khronos Group.
"OpenGL 4.0 exposes the same level of capability of GPUs as DirectX 11," the competing interface from Microsoft, Khronos said in a presentation. The company announced the new standard, along with the 3.3 update to the earlier version, at the Game Developers Conference on Thursday.
OpenGL 4.0 is compatible with a technology called OpenCL that's designed to let graphics chips handle many chores that otherwise would be the work of the main processor. Graphics chips aren't suited to all tasks, but they can help with some computationally intense work such as videogame physics. Graphics chips are steadily growing more powerful and widespread since modern operating systems, not just shoot-em-up videogames, now require 3D graphics abilities.
If you want to plunge into the details, here's how Khronos describes the new OpenGL 4.0 abilities:
OpenGL also has variations called OpenGL ES for mobile devices including Apple's iPhone and WebGL for Web browser applications.
- two new shader stages that enable the GPU to offload geometry tessellation from the CPU;
- per-sample fragment shaders and programmable fragment shader input positions for increased rendering quality and anti-aliasing flexibility;
- drawing of data generated by OpenGL, or external APIs such as OpenCL, without CPU intervention;
- shader subroutines for significantly increased programming flexibility;
- separation of texture state and texture data through the addition of a new object type called sampler objects;
- 64-bit double precision floating point shader operations and inputs/outputs for increased rendering accuracy and quality;
- performance improvements, including instanced geometry shaders, instanced arrays, and a new timer query.