One of the benefits of using OpenGL is that it is extensible. An extension is typically introduced by one or more vendors and then later is accepted by the OpenGL Architecture Review Board (ARB). Some extensions are promoted from a vendor-specific extension to a common one while others become part of the core OpenGL API. Extensions allow OpenGL to embrace innovation, but they also have implications for how you verify that the OpenGL functionality you want to use is available.
Because extensions can be introduced at the vendor level, more than one extension can provide the same basic functionality. There might also be an ARB extension that has functionality similar to that of a vendor-specific extension. As particular functionality becomes widely adopted, it can be moved into the core OpenGL API by the ARB. As a result, functionality that you want to use could be included as an extension, as part of the core API, or both. For example, the ability to combine texture environments is supported through the GL_ARB_texture_env_combine and the GL_EXT_texture_env_combine extensions. It's also part of the core OpenGL version 1.3 API. Although each has similar functionality, they use a different syntax. What this means is that you may need to check in several places (core OpenGL API and extension strings) to determine whether a specific renderer supports functionality that you want to use.
Detecting Functionality
Guidelines for Code That Checks for Functionality
See Also
Last updated: 2008-06-09