NOTE: The content of this guide has been migrated to: OpenGL Extensions Guide. Please refer to the new document for up-to-date information. OpenGL Extensions Guide
Advanced Search
Apple Developer Connection
Member Login Log In | Not a Member? Support

ADC Home > Graphics & Imaging > OpenGL >

OpenGL Extension Guide

This page should be used in conjunction with the OpenGL Capabilities Matrix

Note: Every effort has been made to ensure that the information on this web page is accurate. This information does not supercede that derived from renderer version and/or extension strings. All developers should ensure their applications check these specific strings prior to using functionaliy provided.

Updated for Mac OS X v10.5.0 and OpenGL 2.1

OpenGL Versions
OpenGL 1.1 (Specification)
Adds: Vertex Arrays, Polygon Offset, Logical Operations, Texture Image Formats, Texture Replace Environment, Texture Proxies, Copy Texture and Subtexture, and a number of other minor changes to the base OpenGL 1.0 specification.

System: Mac OS X v10.0 and later
Renderers: All
OpenGL 1.2.1 (Information and Specification (PDF) )
Adds: 3D Texturing, BGRA Pixel Formats, Packed Pixel Formats, Normal Rescaling, Separate Specular Color, Texture Coordinate Edge Clamping, Texture LOD Control, Vertex Array Draw Element Range, and the Imaging Subset (optional- see GL_ARB_imaging) to the OpenGL 1.1 specification.

System: Mac OS X v10.0 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX
OpenGL 1.3 (Information and Specification (PDF) )
Adds: Compressed Textures, Cube Map Textures, Multisample, Multitexture, Texture Add Environment Mode, Texture Combine Environment Mode, Texture Dot3 Environment Mode, Texture Border Clamp, and Transpose Matrix to the OpenGL 1.2 specification.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX
OpenGL 1.4 (Information and Specification (PDF) )
Adds: Automatic Mipmap Generation, Blend Squaring, Imaging Subset changes, Depth and Shadow textures, Fog Coordinates, Multiple Draw Arrays, Point Parameters, Secondary Color, Separate Blend Functions, Stencil Wrap, Texture Crossbar Environment Mode, Texture level of detail (LOD) bias, Texture Mirrored Repeat, and Window Raster Position.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Pending
OpenGL 1.5 (Information and Specification (PDF) )
Adds: Buffer Objects, Occlusion Queries, Shadow Functions, as well as introducing the ARB_shader_objects, ARB_vertex_shader and ARB_fragment_shader extensions

System: Mac OS X v10.3.9 "Panther" and later
Renderers: GeForce 6800, GeForce FX, Radeon X800, Radeon 9600/9700/9800
OpenGL 2.0 (Information and Specification (PDF) )
Adds: Shader Objects, Shader Programs, and the OpenGL Shading Language as core features. It also adds Multiple Render Targets, Non-Power-Of-Two Textures, Point Sprites, Separate Blend Equations and Separate Stencils.

System: Mac OS X v10.4.4 "Tiger" and later
Renderers: Radeon X1600/X1900, Quadro FX 4500, GeForce 6800 or better
OpenGL 2.1 (Information and Specification (PDF) )
Adds: Shader Language 1.20, Non-Square Matrices, Pixel Buffer Objects, and sRGB Textures.

System: Mac OS X v10.5.0 "Leopard" and later
Renderers: Apple's Software Renderer
GL_APPLE_aux_depth_stencil (Specification)
When the APPLE_aux_depth_stencil extension is used, and the depth buffer size is non-zero, the GL silently allocates a separate depth buffer for the color buffer and for each aux buffer. Similarly, if the stencil buffer size is non-zero, a separate stencil buffer is allocated for the color buffer and each aux buffer.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_APPLE_client_storage (Specification)
Provides facilities supplanting the OpenGL mechanism to update the working texture set, allowing and requiring applications to cache textures locally for use by OpenGL.

System: Mac OS X v10.1 and later
Renderers: All
GL_APPLE_element_array (Specification)
This extension provides facilities to improve DrawElements style vertex indices submission performance by allowing index arrays.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800
GL_APPLE_fence (Specification)
Provides synchronization primitives that can be inserted into the OpenGL command stream and later queried for completion.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: All
GL_APPLE_float_pixels (Specification)
This extensions adds texture types, texture internal formats and color buffers composed of both 32 bit and 16 floating point numbers.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Radeon 9600 Pro, Radeon 9700, Radeon 9800 Pro
GL_APPLE_flush_buffer_range (Specification)
APPLE_flush_buffer_range expands the buffer object API to allow greater performance when a client application only needs to write to a sub-range of a buffer object. To that end, this extension introduces two new buffer object features: non-serialized buffer modification and explicit sub-range flushing for mapped buffer objects.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_APPLE_flush_render (Specification pending)
Normally, in single buffered mode glFlush and glFinish submit the command stream and copy the resulting image to the screen. This extension provides glFlushRenderAPPLE and glFinishRenderAPPLE which just submit pending opengl commands and do not copy the results to the screen. Also, provides glSwapAPPLE which copies rendered image for the current context to the screen without needing a context argument and works in both single and double buffered modes symmetrically.

System: Mac OS X v10.3 and later
Renderers: All
GL_APPLE_object_purgeable (Specification)
This extension provides the ability to mark the storage of OpenGL objects as "purgeable".

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_APPLE_packed_pixels (Specification)
Provides support for packed pixels in host memory. A packed pixel is represented entirely by one unsigned byte, one unsigned short, or one unsigned integer.

System: Mac OS X v10.0 and later
Renderers: All
GL_APPLE_pixel_buffer (Specification pending)
Pixel buffers (or pbuffers for short) are additional non-visible accelerated rendering buffers an OpenGL renderer which allow both rendering to and texturing from an accelerated surface.

System: Mac OS X v10.3 and later
Renderers: All
GL_APPLE_specular_vector (Specification)
Provides an alternative lighting model which yields results that are visually similar to but often more realistic than the existing lighting model.

System: Mac OS X v10.0 and later
Renderers: All
GL_APPLE_texture_range (Specification)
Allows texture storage hints and specification of memory range for texture data.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_APPLE_transform_hint (Specification)
Provides a hint which allows GL to choose to implement certain state dependent algebraic simplifications in the geometry transformation.

System: Mac OS X v10.0 and later
Renderers: All
GL_APPLE_vertex_array_object (Specification)
Allows handling multiple vertex arrays as array objects, similar to texture objects.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: All
GL_APPLE_vertex_array_range (Specification)
Allows specification of client memory for vertex arrays, which in turn allows DMA by graphics hardware.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_APPLE_vertex_program_evaluators (Specification)
This extension allows the one- and two-dimensional evaluators to be used with vertex program attributes. The operation of this extension is precisely analogous to the operation of the normal evaluators.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: All
GL_APPLE_ycbcr_422 (Specification)
Provides support for 2vuy and 2yuvs texture formats.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_draw_buffers (Specification)
This extension extends ARB_fragment_program and ARB_fragment_shader to allow multiple output colors, and provides a mechanism for directing those outputs to multiple color buffers.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_fragment_program_shadow (Specification)
This extension extends ARB_fragment_program to remove the interaction with ARB_shadow. This extension defines the program option "ARB_fragment_program_shadow".

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_fragment_shader (Specification)
This extension adds functionality to define fragment shader objects. A fragment shader object is a shader object (see the ARB_shader_objects extension) that, when attached to a program object, can be compiled and linked to produce an executable that runs on the fragment processor in OpenGL.

System: Mac OS X v10.4.3 "Tiger" and later
Renderers: Pending
GL_ARB_half_float_pixel (Specification)
This extension introduces a new data type for half-precision (16-bit) floating-point quantities. The floating-point format is very similar to the IEEE single-precision floating-point standard, except that it has only 5 exponent bits and 10 mantissa bits.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_occlusion_query (Specification)
This extension defines a mechanism whereby an application can query the number of pixels (or, more precisely, samples) drawn by a primitive or group of primitives.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_pixel_buffer_object (Specification)
This extension expands on the interface provided by the ARB_vertex_buffer_object extension (and later integrated into OpenGL 1.5) in order to permit buffer objects to be used not only with vertex array data, but also with pixel data. The intent is to provide more acceleration opportunities for OpenGL pixel commands.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_point_sprite (Specification)
Applications such as particle systems have tended to use OpenGL quads rather than points to render their geometry, since they would like to use a custom-drawn texture for each particle, rather than the traditional OpenGL round antialiased points, and each fragment in a point has the same texture coordinates as every other fragment.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_shader_objects (Specification)
This extension adds API calls that are necessary to manage shader objects and program objects as defined in the OpenGL 2.0 white papers by 3Dlabs.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_shader_texture_lod (Specification Pending)
Description Pending

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_shading_language_100 (Specification)
This extension string indicates that the OpenGL Shading Language is supported.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_texture_float (Specification)
This extension adds texture internal formats with 16- and 32-bit floating-point components. The 32-bit floating-point components are in the standard IEEE float format. The 16-bit floating-point components have 1 sign bit, 5 exponent bits, and 10 mantissa bits. Floating-point components are clamped to the limits of the range representable by their format.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_texture_non_power_of_two (Specification)
Conventional OpenGL texturing is limited to images with power-of-two dimensions and an optional 1-texel border. ARB_texture_non_power_of_two extension relaxes the size restrictions for the 1D, 2D, cube map, and 3D texture targets.

System: Mac OS X v10.4.8 "Tiger" and later
Renderers: Pending
GL_ARB_texture_rectangle (Specification)
OpenGL texturing is limited to images with power-of-two dimensions and an optional 1-texel border. The ARB_texture_rectangle extension adds a new texture target that supports 2D textures without requiring power-of-two dimensions.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_vertex_buffer_object (Specification)
This extension defines an interface that allows various types of data (especially vertex array data) to be cached in high-performance graphics memory on the server, thereby increasing the rate of data transfers.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_vertex_shader (Specification)
This extension adds programmable vertex level processing to OpenGL. The application can write vertex shaders in a high level language as defined in the OpenGL Shading Language specification. The language itself is not discussed here. A vertex shader replaces the transformation, texture coordinate generation and lighting parts of OpenGL, and it also adds texture access at the vertex level. Furthermore, management of vertex shader objects and loading generic attributes are discussed. A vertex shader object, attached to a program object, can be compiled and linked to produce an executable that runs on the vertex processor in OpenGL. This extension also defines how such an executable interacts with the fixed functionality vertex processing of OpenGL 1.4.

System: Mac OS X v10.4.3 "Tiger" and later
Renderers: Pending
GL_EXT_blend_equation_separate (Specification)
EXT_blend_func_separate introduced separate RGB and alpha blend factors. EXT_blend_minmax introduced a distinct blend equation for combining source and destination blend terms. (EXT_blend_subtract & EXT_blend_logic_op added other blend equation modes.) OpenGL 1.4 integrated both functionalities into the core standard.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_depth_bounds_test (Specification)
This extension adds a new per-fragment test that is, logically, after the scissor test and before the alpha test. The depth bounds test compares the depth value stored at the location given by the incoming fragment's (xw,yw) coordinates to a user-defined minimum and maximum depth value. If the stored depth value is outside the user-defined range (exclusive), the incoming fragment is discarded.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_framebuffer_blit (Specification)
This extension modifies EXT_framebuffer_object by splitting the framebuffer object binding point into separate DRAW and READ bindings. This allows copying directly from one framebuffer to another. In addition, a new high performance blit function is added to facilitate these blits and perform some data conversion where allowed.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_framebuffer_object (Specification)
This extension defines a simple interface for drawing to rendering destinations other than the buffers provided to the GL by the window-system.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_geometry_shader4 (Specification)
EXT_geometry_shader4 defines a new shader type available to be run on the GPU, called a geometry shader. Geometry shaders are run after vertices are transformed, but prior to color clamping, flat shading and clipping.

System: Mac OS X v10.4.10 "Tiger" and later
Renderers: GeForce 8600M through 10.5.1, and all renderers on 10.5.2 and later.
GL_EXT_gpu_program_parameters (Specification)
This extension provides a new set of procedures to load multiple consecutive program environment parameters more efficiently, via a single GL call instead of multiple calls. This will reduce the amount of CPU overhead involved in loading parameters.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_gpu_shader4 (Specification)
This extension provides a set of new features to the OpenGL Shading Language and related APIs to support capabilities of new hardware.

System: Mac OS X v10.4.10 "Tiger" and later
Renderers: GeForce 8600M
GL_EXT_packed_depth_stencil (Specification)
This extension allows to interleave the depth and stencil buffers into one buffer, often with 24 bits of depth precision and 8 bits of stencil data.

System: Mac OS X v10.4.9 "Tiger" and later
Renderers: Pending
GL_EXT_separate_specular_color (Specification)
This extension adds a second color to rasterization when lighting is enabled. Its purpose is to produce textured objects with specular highlights which are the color of the lights. It applies only to rgba lighting.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_texture_compression_dxt1 (Specification)
Support of EXT_texture_compression_s3tc is attractive for OpenGL-ES implementations because it provides compressed textures that allow for significantly reduced texture storage. Reducing texture storage is advantageous because of the smaller memory capacity of many embedded systems compared to desktop systems. Smaller textures also provide a welcome performance advantage since embedded platforms typically provide less performance than desktop systems. S3TC compressed textures are widely supported and used by applications. The DXT1 format is used in the vast majority of cases in which S3TC compressed textures are used.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_texture_mirror_clamp (Specification)
EXT_texture_mirror_clamp extends the set of texture wrap modes to include three modes (GL_MIRROR_CLAMP_EXT, GL_MIRROR_CLAMP_TO_EDGE_EXT, GL_MIRROR_CLAMP_TO_BORDER_EXT) that effectively use a texture map twice as large as the original image in which the additional half of the new image is a mirror image of the original image.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_texture_sRGB (Specification)
The sRGB color space is based on typical (non-linear) monitor characteristics expected in a dimly lit office. It has been standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1. The sRGB color space roughly corresponds to 2.2 gamma correction.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_EXT_transform_feedback (Specification)
This extension provides a new mode to the GL, called transform feedback, which records selected vertex attributes for each primitive processed by the GL.

System: Mac OS X v10.4.10 "Tiger" and later
Renderers: GeForce 8600M through 10.5.1, and all renderers on 10.5.2 and later.
GL_ATI_texture_compression_3dc (Specification Pending)
Description Pending

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ATI_texture_float (Specification)
This extension adds texture internal formats with 32 and 16 bit floating-point components. The 32 bit floating-point components are in the standard IEEE float format. The 16 bit floating-point components have 1 sign bit, 5 exponent bits, and 10 mantissa bits. Floating-point components are clamped to the limits of the range representable by their format.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_NV_fragment_program2 (Specification)
This extension, like the NV_fragment_program_option extension, provides additional fragment program functionality to extend the standard ARB_fragment_program language and execution environment.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_NV_fragment_program_option (Specification)
This extension provides additional fragment program functionality to extend the standard ARB_fragment_program language and execution environment.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_NV_vertex_program2_option (Specification)
This extension provides additional vertex program functionality to extend the standard ARB_vertex_program language and execution environment.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_NV_vertex_program3 (Specification)
This extension, like the NV_vertex_program2_option extension, provides additional vertex program functionality to extend the standard ARB_vertex_program language and execution environment.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_SGI_color_matrix (Specification)
This extension adds a 4x4 matrix stack to the pixel transfer path.

System: Mac OS X v10.4.x "Tiger" and later
Renderers: Pending
GL_ARB_imaging (Imaging Subset (PDF) )
Complete imaging subset providing: Color Tables, Convolution, Color Matrix, Histogram, Constant Blend Color, Blend Subtract and Blend Min/Max.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_transpose_matrix (Specification)
Allows application matrices stored in row major order rather than column major order to be transferred to the OpenGL implementation.

System: Mac OS X v10.0 and later
Renderers: All
GL_ARB_multitexture (Specification)
Adds support for multiple texture units.

System: Mac OS X v10.0 and later
Renderers: All
GL_ARB_texture_env_add (Specification)
Adds support for the texture environment function GL_ADD with the following equation: Cv = Cf + Ct.

System: Mac OS X v10.0 and later
Renderers: All
GL_ARB_texture_env_combine (Specification)
Adds a new texture environment function GL_COMBINE_ARB which allows programmable texture combiner operations, including: GL_REPLACE, GL_MODULATE, GL_ADD, GL_ADD_SIGNED_ARB, GL_SUBTRACT_ARB, and GL_INTERPOLATE_ARB.

System: Mac OS X v10.0 and later
Renderers: All
GL_ARB_texture_env_dot3 (Specification)
Adds new texture combiner operations GL_DOT3_RGB_ARB and GL_DOT3_RGBA_ARB which allow dot product operations in texture combiners.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_texture_env_crossbar (Specification)
Adds the capability to use the texture color from other texture units as sources to the GL_COMBINE_ARB environment function.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9200
GL_ARB_texture_cube_map (Specification)
Provides a new texture generation scheme for cube map textures, where the current texture is a set of six 2D images representing the faces of a cube.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_texture_compression (Specification)
Allows OpenGL applications to use compressed texture images by providing both a framework upon which extensions providing specific compressed image formats can be built and a set of generic compressed internal formats that allow applications to specify that texture images should be stored in compressed form without needing to code for specific compression formats.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_multisample (Specification)
Provides a mechanism to antialias all GL primitives: points, lines, polygons, bitmaps, and images; by sampling all primitives multiple times at each pixel.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_texture_border_clamp (Specification)
Defines an additional texture clamping algorithm, GL_CLAMP_TO_BORDER_ARB which, clamps texture coordinates at all mipmap levels such that GL_NEAREST and GL_LINEAR filters return only the color of the border texels.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_point_parameters (Specification)
Supports additional geometric characteristics of points. It can be used to render particles or tiny light sources, commonly referred to as "Light points".

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_vertex_program (Specification)
Exposes a significant degree of per-vertex programmability for computing vertex parameters. A vertex program is a sequence of floating-point 4-component vector operations that determines how a set of program parameters (defined outside of OpenGL's Begin/End pair) and an input set of per-vertex parameters are transformed to a set of per-vertex result parameters.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: All
GL_ARB_fragment_program (Specification)
Exposes a significant degree of per-fragment programmability for computing fragment parameters. A fragment program is a sequence of floating-point 4-component vector operations that determines how a set of program parameters (not specific to an individual fragment) and an input set of per-fragment parameters are transformed to a set of per-fragment result parameters. This extension provides an explicit mechanism for defining fragment program instruction sequences for application-defined fragment programs. In order to define such fragment programs, this extension defines a fragment programming model including a floating-point 4-component vector instruction set and a relatively large set of floating-point 4-component registers.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Radeon 9700, Radeon 9800 Pro, Geforce FX
GL_ARB_texture_mirrored_repeat (Specification)
Extends the set of texture wrap modes to include a mode (GL_MIRRORED_REPEAT_ARB) that effectively uses a texture map twice as large at the original image in which the additional half, for each coordinate, of the new image is a mirror image of the original image.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, , Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_depth_texture (Specification)
Defines a new depth texture format for use in shadow casting and other applications such as image-based rendering or displacement mapping.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_shadow (Specification)
Supports comparing the texture R coordinate to a depth texture value in order to produce a boolean texture value. This can be used to implement shadow maps.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_ARB_shadow_ambient (Specification)
Allows the user to specify the texture value to use when the texture compare function fails. Normally this value is zero. By allowing an arbitrary value we can get functionality which otherwise requires an advanced texture combine extension (such as GL_NV_register_combiners) and multiple texture units.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Pending
GL_ARB_vertex_blend (Specification)
Provides the ability to replace the single modelview transformation with a set of n vertex units (Where n is constrained to an implementation defined maximum.) with each unit having its own modelview transform matrix and weight, which is used to scale and sum the final eye-space vertex.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: All
GL_ARB_window_pos (Specification)
Provides a set of functions to directly set the current raster position in window coordinates, bypassing the modelview matrix, the projection matrix and the viewport-to-window mapping. Furthermore, clip testing is not performed, so that the current raster position is always valid.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: All
GL_EXT_clip_volume_hint (Specification)
Provides a mechanism for applications to indicate that they do not require clip volume clipping for primitives.

System: Mac OS X v10.0 and later
Renderers: All
GL_EXT_rescale_normal (Specification)
Provides normal rescaling which adds a new operation to the transformation of the normal vector into eye coordinates. The normal vector is rescaled after it is multiplied by the inverse modelview matrix and before it is normalized.

System: Mac OS X v10.0 and later
Renderers: All
GL_EXT_blend_color (Specification)
Blending capability is extended by defining a constant color that can be included in blending equations.

System: Mac OS X v10.0 and later
Renderers: Software, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_blend_minmax (Specification)
Blending capability is extended by re-specifying the entire blend equation. The two new equations defined by this extension produce the minimum (or maximum) color components of the source and destination colors.

System: Mac OS X v10.0 and later
Renderers: Software, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_blend_subtract (Specification)
Two additional blending equations are specified using the interface defined by GL_EXT_blend_minmax. These equations produce the difference of its left and right hand sides.

System: Mac OS X v10.0 and later
Renderers: Software, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_compiled_vertex_array (Specification)
Defines an interface which allows static vertex array data to be cached or pre-compiled for more efficient rendering.

System: Mac OS X v10.0 and later
Renderers: Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_texture_lod_bias (Specification)
Provides a means to bias the lambda (a texture level-of-detail parameter that determines which mipmap levels and their relative mipmap weights for use in mipmapped texture filtering) by a constant (signed) value.

System: Mac OS X v10.0 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_texture_env_add (Specification)
New texture environment function GL_ADD is supported with the following equation: Cv = Cf + Ct

System: Mac OS X v10.0 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_abgr (Specification)
Extends the list of host-memory color formats, providing a reverse-order alternative to image format RGBA.

System: Mac OS X v10.0 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_bgra (Specification)
Extends the list of host-memory color formats, providing formats which when reversed matches the memory layout of Mac OS CGrafPorts and GWorlds so that applications can use the same data in both Mac OS API calls and OpenGL pixel API calls.

System: Mac OS X v10.0 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_bindable_uniform (Specification)
This extension introduces the concept of bindable uniforms to the OpenGL Shading Language. A uniform variable can be declared bindable, which means that the storage for the uniform is not allocated by the compiler/linker anymore, but is backed by a buffer object.

System: Mac OS X v10.5 and later
Renderers: Pending
GL_EXT_texture_filter_anisotropic (Specification)
Provides a general mechanism for supporting anisotropic texturing filtering schemes without specifying a particular formulation of anisotropic filtering.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_paletted_texture (Specification)
Defines new texture formats and new calls to support the use of paletted textures in OpenGL.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_shared_texture_palette (Specification)
Defines a shared texture palette which may be used in place of the texture object palettes provided by GL_EXT_paletted_texture.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_secondary_color (Specification)
Allows specifying the RGB components of the secondary color used in the Color Sum stage, instead of using the default (0,0,0,0) color. It applies only in RGBA mode and when GL_LIGHTING is disabled.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_texture_compression_s3tc (Specification)
Provides additional texture compression functionality specific to S3's S3TC format (called DXTC other 3D API), subject to all the requirements and limitations described by the extension GL_ARB_texture_compression, supporting DXT1, DXT3, and DXT5 texture compression formats.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_texture_rectangle (Preliminary Specification)
Adds a new texture target that supports 2D textures without requiring power-of-two dimensions.

System: Mac OS X v10.1 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_fog_coord (Specification)
Allows specifying an explicit per-vertex fog coordinate to be used in fog computations, rather than using a fragment depth-based fog equation.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_draw_range_elements (Specification)
Adds a new vertex array rendering command: glDrawRangeElementsEXT, a restricted form of glDrawElements

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_stencil_wrap (Specification)
Two additional stencil operations are specified. These new operations are similiar to the existing GL_INCR and GL_DECR operations, but they wrap their result instead of saturating it.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_EXT_blend_func_separate (Specification)
Blending capability is extended by defining a function that allows independent setting of the RGB and alpha blend factors for blend operations that require source and destination blend factors.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9700
GL_EXT_multi_draw_arrays (Specification)
Provides functins which behave identically to the standard OpenGL 1.1 functions glDrawArrays and glDrawElements except they handle multiple lists of vertices in one call. Their main purpose is to allow one function call to render more than one primitive such as triangle strip, triangle fan, etc.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: All
GL_EXT_shadow_funcs (Specification)
Generalizes the GL_ARB_shadow extension to support all eight binary texture comparison functions rather than just GL_LEQUAL and GL_GEQUAL.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Pending
GL_EXT_stencil_two_side (Specification)
Provides two-sided stencil testing where the stencil-related state (stencil operations, reference value, compare mask, and write mask) may be different for front- and back-facing polygons.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Pending
GL_SGIS_texture_edge_clamp (Specification)
Defines a new texture clamping algorithm. GL_CLAMP_TO_EDGE_SGIS clamps texture coordinates at all mipmap levels such that the texture filter never samples a border texel.

System: Mac OS X v10.0 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_SGIS_generate_mipmap (Specification)
Defines a mechanism by which OpenGL can derive the entire set of mipmap arrays when provided with only the base level array.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: All
GL_SGIS_texture_lod (Specification)
Imposes two constraints related to the texture level of detail parameter LOD, which allow a large texture to be loaded and used initially at low resolution, and to have its resolution raised gradually as more resolution is desired or available.

System: Mac OS X v10.0 and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_ATI_point_cull_mode (Specification Pending)
Description Pending

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Pending
GL_ATI_texture_mirror_once (Specification)
Extends the set of texture wrap modes to include two modes that effectively use a texture map twice as large as the original image in which the additional half of the new image is a mirror image of the original image.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9700
GL_ATI_pn_triangles (Specification)
Added non-X extension name. See GL_ATIX_pn_triangles for specification information.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: Radeon 8500, ATI Radeon 9700
GL_ATIX_pn_triangles (Specification)
Provides a path for enabling the GL to internally tessellate input geometry into curved patches, and allows the user to tune the amount of tessellation to be performed on each triangle as a global state value.

System: Mac OS X v10.1 and later
Renderers: Radeon 8500, ATI Radeon 9700
GL_ATI_text_fragment_shader (Specification)
Exposes a powerful fragment processing model that provides a very general means of expressing fragment color blending and dependent texture address modification.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9700
GL_ATI_blend_equation_separate (Specification Pending)
Description pending

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9700
GL_ATI_blend_weighted_minmax (Specification Pending)
Description pending

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9700
GL_ATI_texture_env_combine3 (Specification)
Adds new set of operations to the texture combiner operations, including GL_MODULATE_ADD, GL_MODULATE_SIGNED_ADD, and GL_MODULATE_SUBTRACT.

System: Mac OS X v10.2.4 "Jaguar" and later
Renderers: All
GL_ATI_separate_stencil (Specification)
Provides the ability to modify the stencil buffer differently based on the facing direction of the primitive that generated the fragment.

System: Mac OS X v10.2.5 "Jaguar" and later
Renderers: Radeon 9600, 9700, 9700, 9800, 9800 Pro
GL_ATI_array_rev_comps_in_4_bytes (Preliminary Specification)
Provides an optimized data transfer path for rendering vertex array data on certain ATI hardware when individual components are smaller than 4 bytes per component.

System: Mac OS X v10.3 and later
Renderers: Radeon 7000, Radeon 8500, Radeon 9000, Radeon 9200
GL_NV_point_sprite (Specification)
Allows apps to use points rather than quads for such things as particle systems.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 4Ti, GeForce FX
GL_NV_register_combiners (Specification)
Provides an extremely configurable mechanism know as "register combiners" for computing fragment colors.

System: Mac OS X v10.0 and later
Renderers: GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_register_combiners2 (Specification)
Extends the register combiners functionality to support more color constant values that are unique for each general combiner stage.

System: Mac OS X v10.1 and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_blend_square (Specification)
Provides four additional blending factors to permit this and other effects: GL_SRC_COLOR and GL_ONE_MINUS_SRC_COLOR for source blending factors, and GL_DST_COLOR and GL_ONE_MINUS_DST_COLOR for destination blending factors.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_fog_distance (Specification)
Provides the application specific control over how OpenGL computes the distance used in computing the fog factor.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_multisample_filter_hint (Specification)
Provides a hint that permits implementations to provide an alternative method of resolving the color of multisampled pixels.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_texgen_reflection (Specification)
Provides two new texture coordinate generation modes that are useful texture-based lighting and environment mapping.

System: Mac OS X v10.0 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_texture_shader (Specification)
Provides a more functional mechanism for mapping sets of texture coordinates to filtered colors.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_texture_shader2 (Specification)
Extends the GL_NV_texture_shader functionality to support texture shader operations for 3D textures.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_texture_shader3 (Specification)
Extends the GL_NV_texture_shader functionality by adding several new texture shader operations, extending several existing texture shader operations, adding a new HILO8 internal format, and adding new and more flexible re-mapping modes for dot product and dependent texture shader operations.

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 4Ti, GeForce FX
GL_NV_depth_clamp (Specification)
Provides the ability for line and polygon primitives to be rasterized without clipping the primitive to the near or far clip volume planes (side clip volume planes clip normally).

System: Mac OS X v10.2 "Jaguar" and later
Renderers: GeForce 3, GeForce 4Ti, GeForce FX
GL_NV_light_max_exponent (Specification)
Permits implementations to support and advertise a maximum shininess and spot exponent beyond 128.0.

System: Mac OS X v10.2.3 "Jaguar" and later
Renderers: All
GL_IBM_rasterpos_clip (Specification)
Extends the semantics of the RasterPos functions. It provides an enable that allows a raster position that would normally be clipped to be treated as a valid (albeit out-of-viewport) position.

System: Mac OS X v10.1 and later
Renderers: Software, Rage 128 Mobility, Rage 128, Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9700, Radeon 9800,GeForce 2MX, GeForce 4MX, GeForce 3, GeForce 4Ti, GeForce FX