Over a million developers have joined DZone.

OpenGL 4.1 Challenges Direct 3D 11

DZone 's Guide to

OpenGL 4.1 Challenges Direct 3D 11

· Performance Zone ·
Free Resource
The Khronos Group has been busy with the release of OpenCL 1.1 last month and the completion of OpenGL 4.0 only four and a half months ago.  Today, the group releases OpenGL 4.1 - they believe this version surpasses the functionality in Microsoft's Direct 3D 11 API.  New features include compute shaders and tessellation.

OpenGL 4.1 has gained better error handling and a more robust set of debugging features.  4.1 includes a new ability to save and restore programs that are made to use the shaders in modern video hardware.  Shaders, which are important in 3D graphics, are written in a hardware-independent language which is later compiled at runtime by OpenGL.  This allows the programs to be optimized for a particular GPU.  The new feature in 4.1 caches the compiled programs, allowing software to compile faster if it has to do it frequently (such as during startup).

UnrealTournament on Voodoo5 - high resolution textures OpenGL S3TC

Kronos has made OpenGL 4.1 even more cross-platform friendly by making the desktop OpenGL into a superset of the embedded systems version.  This fixes the slight incompatibility between OpenGL standard and OpenGL ES.  This change will enable a common codebase across desktop and embedded (mobile, game systems, etc.) systems, and developers will be able to harness the more robust desktop development infrastructure for embedded systems.  This is the main differentiator between OpenGL 4.1 and Direct 3D 11 (and the fact that you can't run Direct 3D 11 on Mac or Linux).  Microsoft also has no WebGL equivalent.  

Nvidia will release drivers for 4.1 this week, and ATI will release theirs shortly.  Apple hasn't announced if they will update Mac OS X's drivers to support this release, or previous unsupported releases.  They still don't have full support for OpenGL 3.0.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}