- Main Page
- Related Pages
- Modules
- Classes
- Examples

# ATIext.h

    //-
    // ==========================================================================
    // Copyright (C) 1995 - 2006 Autodesk, Inc. and/or its licensors.  All
    // rights reserved.
    //
    // The coded instructions, statements, computer programs, and/or related
    // material (collectively the "Data") in these files contain unpublished
    // information proprietary to Autodesk, Inc. ("Autodesk") and/or its
    // licensors, which is protected by U.S. and Canadian federal copyright
    // law and by international treaties.
    //
    // The Data is provided for use exclusively by You. You have the right
    // to use, modify, and incorporate this Data into other products for
    // purposes authorized by the Autodesk software license agreement,
    // without fee.
    //
    // The copyright notices in the Software and this entire statement,
    // including the above license grant, this restriction and the
    // following disclaimer, must be included in all copies of the
    // Software, in whole or in part, and all derivative works of
    // the Software, unless such copies or derivative works are solely
    // in the form of machine-executable object code generated by a
    // source language processor.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
    // AUTODESK DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED
    // WARRANTIES INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF
    // NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
    // PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE, OR
    // TRADE PRACTICE. IN NO EVENT WILL AUTODESK AND/OR ITS LICENSORS
    // BE LIABLE FOR ANY LOST REVENUES, DATA, OR PROFITS, OR SPECIAL,
    // DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES, EVEN IF AUTODESK
    // AND/OR ITS LICENSORS HAS BEEN ADVISED OF THE POSSIBILITY
    // OR PROBABILITY OF SUCH DAMAGES.
    //
    // ==========================================================================
    //+

    #ifndef _ATIext
    #define _ATIext

    #ifdef __cplusplus
    extern "C" {
    #endif

    //
    // Description:
    //      ATI extensions header file
    //
    //

    #ifndef APIENTRY
    #   ifdef _WIN32
    #       define WIN32_LEAN_AND_MEAN 1
    #       include <windows.h>
    #   else
    #       define APIENTRY
    #   endif
    #endif

    #if defined(OSMac_MachO_)
    #include <OpenGL/gl.h>
    #else
    #include <GL/gl.h>
    #endif

    #ifndef GL_CLAMP_TO_EDGE_EXT
        #define GL_CLAMP_TO_EDGE_EXT                0x812F
    #endif

    //
    // ATI PN triangles extension
    //
    #ifndef GL_ATI_pn_triangles
        #define GL_ATI_pn_triangles 1

        #define GL_PN_TRIANGLES_ATI                             0x87F0
        #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI       0x87F1
        #define GL_PN_TRIANGLES_POINT_MODE_ATI                  0x87F2
        #define GL_PN_TRIANGLES_NORMAL_MODE_ATI                 0x87F3
        #define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI           0x87F4
        #define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI           0x87F5
        #define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI            0x87F6
        #define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI          0x87F7
        #define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI       0x87F8

    #ifdef GL_GLEXT_PROTOTYPES
    #error blah
        extern void glPNTrianglesiATI( GLenum pname, GLint param );
        extern void glPNTrianglesfATI( GLenum pname, GLfloat param );
    #else
        #define _BIND_PN_EXTENSIONS_REQUIRED
        typedef void (APIENTRY *PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param);
        typedef void (APIENTRY *PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param);
        extern PFNGLPNTRIANGLESIATIPROC glPNTrianglesiATI;
        extern PFNGLPNTRIANGLESFATIPROC glPNTrianglesfATI;
    #endif

    #endif // GL_ATI_pn_triangles

    //
    // Programmable vertex shading extension
    //
    #ifndef GL_EXT_vertex_shader
        #define GL_EXT_vertex_shader 1
        #define GL_VERTEX_SHADER_EXT                                0x8780
        #define GL_VERTEX_SHADER_BINDING_EXT                        0x8781
        #define GL_OP_INDEX_EXT                                     0x8782
        #define GL_OP_NEGATE_EXT                                    0x8783
        #define GL_OP_DOT3_EXT                                      0x8784
        #define GL_OP_DOT4_EXT                                      0x8785
        #define GL_OP_MUL_EXT                                       0x8786
        #define GL_OP_ADD_EXT                                       0x8787
        #define GL_OP_MADD_EXT                                      0x8788
        #define GL_OP_FRAC_EXT                                      0x8789
        #define GL_OP_MAX_EXT                                       0x878A
        #define GL_OP_MIN_EXT                                       0x878B
        #define GL_OP_SET_GE_EXT                                    0x878C
        #define GL_OP_SET_LT_EXT                                    0x878D
        #define GL_OP_CLAMP_EXT                                     0x878E
        #define GL_OP_FLOOR_EXT                                     0x878F
        #define GL_OP_ROUND_EXT                                     0x8790
        #define GL_OP_EXP_BASE_2_EXT                                0x8791
        #define GL_OP_LOG_BASE_2_EXT                                0x8792
        #define GL_OP_POWER_EXT                                     0x8793
        #define GL_OP_RECIP_EXT                                     0x8794
        #define GL_OP_RECIP_SQRT_EXT                                0x8795
        #define GL_OP_SUB_EXT                                       0x8796
        #define GL_OP_CROSS_PRODUCT_EXT                             0x8797
        #define GL_OP_MULTIPLY_MATRIX_EXT                           0x8798
        #define GL_OP_MOV_EXT                                       0x8799
        #define GL_OUTPUT_VERTEX_EXT                                0x879A
        #define GL_OUTPUT_COLOR0_EXT                                0x879B
        #define GL_OUTPUT_COLOR1_EXT                                0x879C
        #define GL_OUTPUT_TEXTURE_COORD0_EXT                        0x879D
        #define GL_OUTPUT_TEXTURE_COORD1_EXT                        0x879E
        #define GL_OUTPUT_TEXTURE_COORD2_EXT                        0x879F
        #define GL_OUTPUT_TEXTURE_COORD3_EXT                        0x87A0
        #define GL_OUTPUT_TEXTURE_COORD4_EXT                        0x87A1
        #define GL_OUTPUT_TEXTURE_COORD5_EXT                        0x87A2
        #define GL_OUTPUT_TEXTURE_COORD6_EXT                        0x87A3
        #define GL_OUTPUT_TEXTURE_COORD7_EXT                        0x87A4
        #define GL_OUTPUT_TEXTURE_COORD8_EXT                        0x87A5
        #define GL_OUTPUT_TEXTURE_COORD9_EXT                        0x87A6
        #define GL_OUTPUT_TEXTURE_COORD10_EXT                       0x87A7
        #define GL_OUTPUT_TEXTURE_COORD11_EXT                       0x87A8
        #define GL_OUTPUT_TEXTURE_COORD12_EXT                       0x87A9
        #define GL_OUTPUT_TEXTURE_COORD13_EXT                       0x87AA
        #define GL_OUTPUT_TEXTURE_COORD14_EXT                       0x87AB
        #define GL_OUTPUT_TEXTURE_COORD15_EXT                       0x87AC
        #define GL_OUTPUT_TEXTURE_COORD16_EXT                       0x87AD
        #define GL_OUTPUT_TEXTURE_COORD17_EXT                       0x87AE
        #define GL_OUTPUT_TEXTURE_COORD18_EXT                       0x87AF
        #define GL_OUTPUT_TEXTURE_COORD19_EXT                       0x87B0
        #define GL_OUTPUT_TEXTURE_COORD20_EXT                       0x87B1
        #define GL_OUTPUT_TEXTURE_COORD21_EXT                       0x87B2
        #define GL_OUTPUT_TEXTURE_COORD22_EXT                       0x87B3
        #define GL_OUTPUT_TEXTURE_COORD23_EXT                       0x87B4
        #define GL_OUTPUT_TEXTURE_COORD24_EXT                       0x87B5
        #define GL_OUTPUT_TEXTURE_COORD25_EXT                       0x87B6
        #define GL_OUTPUT_TEXTURE_COORD26_EXT                       0x87B7
        #define GL_OUTPUT_TEXTURE_COORD27_EXT                       0x87B8
        #define GL_OUTPUT_TEXTURE_COORD28_EXT                       0x87B9
        #define GL_OUTPUT_TEXTURE_COORD29_EXT                       0x87BA
        #define GL_OUTPUT_TEXTURE_COORD30_EXT                       0x87BB
        #define GL_OUTPUT_TEXTURE_COORD31_EXT                       0x87BC
        #define GL_OUTPUT_FOG_EXT                                   0x87BD
        #define GL_SCALAR_EXT                                       0x87BE
        #define GL_VECTOR_EXT                                       0x87BF
        #define GL_MATRIX_EXT                                       0x87C0
        #define GL_VARIANT_EXT                                      0x87C1
        #define GL_INVARIANT_EXT                                    0x87C2
        #define GL_LOCAL_CONSTANT_EXT                               0x87C3
        #define GL_LOCAL_EXT                                        0x87C4
        #define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT               0x87C5
        #define GL_MAX_VERTEX_SHADER_VARIANTS_EXT                   0x87C6
        #define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT                 0x87C7
        #define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT            0x87C8
        #define GL_MAX_VERTEX_SHADER_LOCALS_EXT                     0x87C9
        #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT     0x87CA
        #define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT         0x87CB
        #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT       0x87CC
        #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT  0x87CD
        #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT           0x87CE
        #define GL_VERTEX_SHADER_INSTRUCTIONS_EXT                   0x87CF
        #define GL_VERTEX_SHADER_VARIANTS_EXT                       0x87D0
        #define GL_VERTEX_SHADER_INVARIANTS_EXT                     0x87D1
        #define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT                0x87D2
        #define GL_VERTEX_SHADER_LOCALS_EXT                         0x87D3
        #define GL_VERTEX_SHADER_OPTIMIZED_EXT                      0x87D4
        #define GL_X_EXT                                            0x87D5
        #define GL_Y_EXT                                            0x87D6
        #define GL_Z_EXT                                            0x87D7
        #define GL_W_EXT                                            0x87D8
        #define GL_NEGATIVE_X_EXT                                   0x87D9
        #define GL_NEGATIVE_Y_EXT                                   0x87DA
        #define GL_NEGATIVE_Z_EXT                                   0x87DB
        #define GL_NEGATIVE_W_EXT                                   0x87DC
        #define GL_ZERO_EXT                                         0x87DD
        #define GL_ONE_EXT                                          0x87DE
        #define GL_NEGATIVE_ONE_EXT                                 0x87DF
        #define GL_NORMALIZED_RANGE_EXT                             0x87E0
        #define GL_FULL_RANGE_EXT                                   0x87E1
        #define GL_CURRENT_VERTEX_EXT                               0x87E2
        #define GL_MVP_MATRIX_EXT                                   0x87E3
        #define GL_VARIANT_VALUE_EXT                                0x87E4
        #define GL_VARIANT_DATATYPE_EXT                             0x87E5
        #define GL_VARIANT_ARRAY_STRIDE_EXT                         0x87E6
        #define GL_VARIANT_ARRAY_TYPE_EXT                           0x87E7
        #define GL_VARIANT_ARRAY_EXT                                0x87E8
        #define GL_VARIANT_ARRAY_POINTER_EXT                        0x87E9
        #define GL_INVARIANT_VALUE_EXT                              0x87EA
        #define GL_INVARIANT_DATATYPE_EXT                           0x87EB
        #define GL_LOCAL_CONSTANT_VALUE_EXT                         0x87EC
        #define GL_LOCAL_CONSTANT_DATATYPE_EXT                      0x87ED

    #ifdef GL_GLEXT_PROTOTYPES
        extern void glBeginVertexShaderEXT( void );
        extern void glEndVertexShaderEXT( void );
        extern void glBindVertexShaderEXT( GLuint id );
        extern GLuint glGenVertexShadersEXT( GLuint range );
        extern void glDeleteVertexShaderEXT( GLuint id );
        extern void glShaderOp1EXT( GLenum op, GLuint res, GLuint arg1 );
        extern void glShaderOp2EXT( GLenum op, GLuint res, GLuint arg1, GLuint arg2 );
        extern void glShaderOp3EXT( GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3 );
        extern void glSwizzleEXT( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ,
                         GLenum outW );
        extern void glWriteMaskEXT( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ,
                          GLenum outW );
        extern void glInsertComponentEXT( GLuint res, GLuint src, GLuint num );
        extern void glExtractComponentEXT( GLuint res, GLuint src, GLuint num );
        extern GLuint glGenSymbolsEXT(GLenum datatype,GLenum storagetype,GLenum range,
                         GLuint components );
        extern void glSetInvariantEXT( GLuint id, GLenum type, void *addr );
        extern void glSetLocalConstantEXT( GLuint id, GLenum type, void *addr );
        extern void glVariantbvEXT( GLuint id, GLbyte *addr );
        extern void glVariantsvEXT( GLuint id, GLshort *addr );
        extern void glVariantivEXT( GLuint id, GLint *addr );
        extern void glVariantfvEXT( GLuint id, GLfloat *addr );
        extern void glVariantdvEXT( GLuint id, GLdouble *addr );
        extern void glVariantubvEXT( GLuint id, GLubyte *addr );
        extern void glVariantusvEXT( GLuint id, GLshort *addr );
        extern void glVariantuivEXT( GLuint id, GLuint *addr );
        extern void glVariantPointerEXT( GLuint id, GLenum type, GLuint stride, void *addr );
        extern void glEnableVariantClientStateEXT( GLuint id);
        extern void glDisableVariantClientStateEXT( GLuint id);
        extern GLuint glBindLightParameterEXT( GLenum light, GLenum value);
        extern GLuint glBindMaterialParameterEXT( GLenum face, GLenum value);
        extern GLuint glBindTexGenParameterEXT( GLenum unit, GLenum coord, GLenum value);
        extern GLuint glBindTextureUnitParameterEXT( GLenum unit, GLenum value);
        extern GLuint glBindParameterEXT( GLenum value);
        extern GLboolean glIsVariantEnabledEXT( GLuint id, GLenum cap);
        extern void glGetVariantBooleanvEXT( GLuint id, GLenum value, boolean *data);
        extern void glGetVariantIntegervEXT( GLuint id, GLenum value, GLint *data);
        extern void glGetVariantFloatvEXT( GLuint id, GLenum value, GLfloat *data);
        extern void glGetVariantPointervEXT( GLuint id, GLenum value, void **data);
        extern void glGetInvariantBooleanvEXT( GLuint id, GLenum value, boolean *data);
        extern void glGetInvariantIntegervEXT( GLuint id, GLenum value, GLint *data);
        extern void glGetInvariantFloatvEXT( GLuint id, GLenum value, GLfloat *data);
        extern void glGetLocalConstantBooleanvEXT( GLuint id, GLenum value, boolean *data);
        extern void glGetLocalConstantIntegervEXT( GLuint id, GLenum value, GLint *data);
        extern void glGetLocalConstantFloatvEXT( GLuint id, GLenum value, GLfloat *data);
    #else
        #define _BIND_EXT_VERTEX_SHADER_EXTENSIONS_REQUIRED
        typedef GLvoid    (APIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void);
        typedef GLvoid    (APIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void);
        typedef GLvoid    (APIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);
        typedef GLuint    (APIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);
        typedef GLvoid    (APIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);
        typedef GLvoid    (APIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);
        typedef GLvoid    (APIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1,
                                                              GLuint arg2);
        typedef GLvoid    (APIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1,
                                                              GLuint arg2, GLuint arg3);
        typedef GLvoid    (APIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX,
                                                            GLenum outY, GLenum outZ, GLenum outW);
        typedef GLvoid    (APIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX,
                                                              GLenum outY, GLenum outZ, GLenum outW);
        typedef GLvoid    (APIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
        typedef GLvoid    (APIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);
        typedef GLuint    (APIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType,
                                                               GLenum range, GLuint components);
        typedef GLvoid    (APIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr);
        typedef GLvoid    (APIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr);
        typedef GLvoid    (APIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type,
                                                                   GLuint stride, GLvoid *addr);
        typedef GLvoid    (APIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
        typedef GLvoid    (APIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);
        typedef GLuint    (APIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);
        typedef GLuint    (APIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);
        typedef GLuint    (APIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord,
                                                                        GLenum value);
        typedef GLuint    (APIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);
        typedef GLuint    (APIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value);
        typedef GLboolean (APIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);
        typedef GLvoid    (APIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value,
                                                                       GLboolean *data);
        typedef GLvoid    (APIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value,
                                                                       GLint *data);
        typedef GLvoid    (APIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value,
                                                                       GLfloat *data);
        typedef GLvoid    (APIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value,
                                                                       GLvoid **data);
        typedef GLvoid    (APIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value,
                                                                         GLboolean *data);
        typedef GLvoid    (APIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value,
                                                                         GLint *data);
        typedef GLvoid    (APIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value,
                                                                       GLfloat *data);
        typedef GLvoid    (APIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value,
                                                                             GLboolean *data);
        typedef GLvoid    (APIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value,
                                                                             GLint *data);
        typedef GLvoid    (APIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value,
                                                                           GLfloat *data);
        extern PFNGLBEGINVERTEXSHADEREXTPROC glBeginVertexShaderEXT;
        extern PFNGLENDVERTEXSHADEREXTPROC glEndVertexShaderEXT;
        extern PFNGLBINDVERTEXSHADEREXTPROC glBindVertexShaderEXT;
        extern PFNGLGENVERTEXSHADERSEXTPROC glGenVertexShadersEXT;
        extern PFNGLDELETEVERTEXSHADEREXTPROC glDeleteVertexShaderEXT;
        extern PFNGLSHADEROP1EXTPROC glShaderOp1EXT;
        extern PFNGLSHADEROP2EXTPROC glShaderOp2EXT;
        extern PFNGLSHADEROP3EXTPROC glShaderOp3EXT;
        extern PFNGLSWIZZLEEXTPROC glSwizzleEXT;
        extern PFNGLWRITEMASKEXTPROC glWriteMaskEXT;
        extern PFNGLINSERTCOMPONENTEXTPROC glInsertComponentEXT;
        extern PFNGLEXTRACTCOMPONENTEXTPROC glExtractComponentEXT;
        extern PFNGLGENSYMBOLSEXTPROC glGenSymbolsEXT;
        extern PFNGLSETINVARIANTEXTPROC glSetInvariantEXT;
        extern PFNGLSETLOCALCONSTANTEXTPROC glSetLocalConstantEXT;
        extern PFNGLVARIANTBVEXTPROC glVariantbvEXT;
        extern PFNGLVARIANTSVEXTPROC glVariantsvEXT;
        extern PFNGLVARIANTIVEXTPROC glVariantivEXT;
        extern PFNGLVARIANTFVEXTPROC glVariantfvEXT;
        extern PFNGLVARIANTDVEXTPROC glVariantdvEXT;
        extern PFNGLVARIANTUBVEXTPROC glVariantubvEXT;
        extern PFNGLVARIANTUSVEXTPROC glVariantusvEXT;
        extern PFNGLVARIANTUIVEXTPROC glVariantuivEXT;
        extern PFNGLVARIANTPOINTEREXTPROC glVariantPointerEXT;
        extern PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glEnableVariantClientStateEXT;
        extern PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glDisableVariantClientStateEXT;
        extern PFNGLBINDLIGHTPARAMETEREXTPROC glBindLightParameterEXT;
        extern PFNGLBINDMATERIALPARAMETEREXTPROC glBindMaterialParameterEXT;
        extern PFNGLBINDTEXGENPARAMETEREXTPROC glBindTexGenParameterEXT;
        extern PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glBindTextureUnitParameterEXT;
        extern PFNGLBINDPARAMETEREXTPROC glBindParameterEXT;
        extern PFNGLISVARIANTENABLEDEXTPROC glIsVariantEnabledEXT;
        extern PFNGLGETVARIANTBOOLEANVEXTPROC glGetVariantBooleanvEXT;
        extern PFNGLGETVARIANTINTEGERVEXTPROC glGetVariantIntegervEXT;
        extern PFNGLGETVARIANTFLOATVEXTPROC glGetVariantFloatvEXT;
        extern PFNGLGETVARIANTPOINTERVEXTPROC glGetVariantPointervEXT;
        extern PFNGLGETINVARIANTBOOLEANVEXTPROC glGetInvariantBooleanvEXT;
        extern PFNGLGETINVARIANTINTEGERVEXTPROC glGetInvariantIntegervEXT;
        extern PFNGLGETINVARIANTFLOATVEXTPROC glGetInvariantFloatvEXT;
        extern PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glGetLocalConstantBooleanvEXT;
        extern PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glGetLocalConstantIntegervEXT;
        extern PFNGLGETLOCALCONSTANTFLOATVEXTPROC glGetLocalConstantFloatvEXT;
    #endif
    #endif /* GL_EXT_vertex_shader */

    //
    // Fragment / pixel shading extension
    #ifndef GL_ATI_fragment_shader
        #define GL_ATI_fragment_shader 1

        #define GL_FRAGMENT_SHADER_ATI                      0x8920
        #define GL_REG_0_ATI                                0x8921
        #define GL_REG_1_ATI                                0x8922
        #define GL_REG_2_ATI                                0x8923
        #define GL_REG_3_ATI                                0x8924
        #define GL_REG_4_ATI                                0x8925
        #define GL_REG_5_ATI                                0x8926
        #define GL_REG_6_ATI                                0x8927
        #define GL_REG_7_ATI                                0x8928
        #define GL_REG_8_ATI                                0x8929
        #define GL_REG_9_ATI                                0x892A
        #define GL_REG_10_ATI                               0x892B
        #define GL_REG_11_ATI                               0x892C
        #define GL_REG_12_ATI                               0x892D
        #define GL_REG_13_ATI                               0x892E
        #define GL_REG_14_ATI                               0x892F
        #define GL_REG_15_ATI                               0x8930
        #define GL_REG_16_ATI                               0x8931
        #define GL_REG_17_ATI                               0x8932
        #define GL_REG_18_ATI                               0x8933
        #define GL_REG_19_ATI                               0x8934
        #define GL_REG_20_ATI                               0x8935
        #define GL_REG_21_ATI                               0x8936
        #define GL_REG_22_ATI                               0x8937
        #define GL_REG_23_ATI                               0x8938
        #define GL_REG_24_ATI                               0x8939
        #define GL_REG_25_ATI                               0x893A
        #define GL_REG_26_ATI                               0x893B
        #define GL_REG_27_ATI                               0x893C
        #define GL_REG_28_ATI                               0x893D
        #define GL_REG_29_ATI                               0x893E
        #define GL_REG_30_ATI                               0x893F
        #define GL_REG_31_ATI                               0x8940
        #define GL_CON_0_ATI                                0x8941
        #define GL_CON_1_ATI                                0x8942
        #define GL_CON_2_ATI                                0x8943
        #define GL_CON_3_ATI                                0x8944
        #define GL_CON_4_ATI                                0x8945
        #define GL_CON_5_ATI                                0x8946
        #define GL_CON_6_ATI                                0x8947
        #define GL_CON_7_ATI                                0x8948
        #define GL_CON_8_ATI                                0x8949
        #define GL_CON_9_ATI                                0x894A
        #define GL_CON_10_ATI                               0x894B
        #define GL_CON_11_ATI                               0x894C
        #define GL_CON_12_ATI                               0x894D
        #define GL_CON_13_ATI                               0x894E
        #define GL_CON_14_ATI                               0x894F
        #define GL_CON_15_ATI                               0x8950
        #define GL_CON_16_ATI                               0x8951
        #define GL_CON_17_ATI                               0x8952
        #define GL_CON_18_ATI                               0x8953
        #define GL_CON_19_ATI                               0x8954
        #define GL_CON_20_ATI                               0x8955
        #define GL_CON_21_ATI                               0x8956
        #define GL_CON_22_ATI                               0x8957
        #define GL_CON_23_ATI                               0x8958
        #define GL_CON_24_ATI                               0x8959
        #define GL_CON_25_ATI                               0x895A
        #define GL_CON_26_ATI                               0x895B
        #define GL_CON_27_ATI                               0x895C
        #define GL_CON_28_ATI                               0x895D
        #define GL_CON_29_ATI                               0x895E
        #define GL_CON_30_ATI                               0x895F
        #define GL_CON_31_ATI                               0x8960
        #define GL_MOV_ATI                                  0x8961
        #define GL_ADD_ATI                                  0x8963
        #define GL_MUL_ATI                                  0x8964
        #define GL_SUB_ATI                                  0x8965
        #define GL_DOT3_ATI                                 0x8966
        #define GL_DOT4_ATI                                 0x8967
        #define GL_MAD_ATI                                  0x8968
        #define GL_LERP_ATI                                 0x8969
        #define GL_CND_ATI                                  0x896A
        #define GL_CND0_ATI                                 0x896B
        #define GL_DOT2_ADD_ATI                             0x896C
        #define GL_SECONDARY_INTERPOLATOR_ATI               0x896D
        #define GL_NUM_FRAGMENT_REGISTERS_ATI               0x896E
        #define GL_NUM_FRAGMENT_CONSTANTS_ATI               0x896F
        #define GL_NUM_PASSES_ATI                           0x8970
        #define GL_NUM_INSTRUCTIONS_PER_PASS_ATI            0x8971
        #define GL_NUM_INSTRUCTIONS_TOTAL_ATI               0x8972
        #define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI    0x8973
        #define GL_NUM_LOOPBACK_COMPONENTS_ATI              0x8974
        #define GL_COLOR_ALPHA_PAIRING_ATI                  0x8975
        #define GL_SWIZZLE_STR_ATI                          0x8976
        #define GL_SWIZZLE_STQ_ATI                          0x8977
        #define GL_SWIZZLE_STR_DR_ATI                       0x8978
        #define GL_SWIZZLE_STQ_DQ_ATI                       0x8979
        #define GL_SWIZZLE_STRQ_ATI                         0x897A
        #define GL_SWIZZLE_STRQ_DQ_ATI                      0x897B
        #define GL_RED_BIT_ATI                              0x00000001
        #define GL_GREEN_BIT_ATI                            0x00000002
        #define GL_BLUE_BIT_ATI                             0x00000004
        #define GL_2X_BIT_ATI                               0x00000001
        #define GL_4X_BIT_ATI                               0x00000002
        #define GL_8X_BIT_ATI                               0x00000004
        #define GL_HALF_BIT_ATI                             0x00000008
        #define GL_QUARTER_BIT_ATI                          0x00000010
        #define GL_EIGHTH_BIT_ATI                           0x00000020
        #define GL_SATURATE_BIT_ATI                         0x00000040
        #define GL_COMP_BIT_ATI                             0x00000002
        #define GL_NEGATE_BIT_ATI                           0x00000004
        #define GL_BIAS_BIT_ATI                             0x00000008

    #ifdef GL_GLEXT_PROTOTYPES
        extern GLuint glGenFragmentShadersATI ( GLuint range );
        extern void glBindFragmentShaderATI ( GLuint id );
        extern void glDeleteFragmentShaderATI ( GLuint id );
        extern void glBeginFragmentShaderATI ( GLvoid );
        extern void glEndFragmentShaderATI ( GLvoid );
        extern void glPassTexCoordATI ( GLuint dst, GLuint coord, GLenum swizzle );
        extern void glSampleMapATI ( GLuint dst, GLuint interp, GLenum swizzle );
        extern void glColorFragmentOp1ATI ( GLenum op, GLuint dst, GLuint dstMask,
                                    GLuint dstMod, GLuint arg1, GLuint arg1Rep,
                                    GLuint arg1Mod );
        extern void glColorFragmentOp2ATI ( GLenum op, GLuint dst, GLuint dstMask,
                                    GLuint dstMod, GLuint arg1, GLuint arg1Rep,
                                    GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
                                    GLuint arg2Mod );
        extern void glColorFragmentOp3ATI ( GLenum op, GLuint dst, GLuint dstMask,
                                    GLuint dstMod, GLuint arg1, GLuint arg1Rep,
                                    GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
                                    GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
                                    GLuint arg3Mod );
        extern void glAlphaFragmentOp1ATI ( GLenum op, GLuint dst, GLuint dstMod,
                                    GLuint arg1, GLuint arg1Rep, GLuint arg1Mod );
        extern void glAlphaFragmentOp2ATI ( GLenum op, GLuint dst, GLuint dstMod,
                                    GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
                                    GLuint arg2, GLuint arg2Rep, GLuint arg2Mod );
        extern void glAlphaFragmentOp3ATI ( GLenum op, GLuint dst, GLuint dstMod,
                                    GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
                                    GLuint arg2, GLuint arg2Rep, GLuint arg2Mod,
                                    GLuint arg3, GLuint arg3Rep, GLuint arg3Mod );
        extern void glSetFragmentShaderConstantATI ( GLuint dst, const float *value );
    #else
        #define _BIND_EXT_FRAGMENT_SHADER_EXTENSIONS_REQUIRED
        typedef GLuint (APIENTRY *PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range);
        typedef GLvoid (APIENTRY *PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id);
        typedef GLvoid (APIENTRY *PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id);
        typedef GLvoid (APIENTRY *PFNGLBEGINFRAGMENTSHADERATIPROC)(GLvoid);
        typedef GLvoid (APIENTRY *PFNGLENDFRAGMENTSHADERATIPROC)(GLvoid);
        typedef GLvoid (APIENTRY *PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle);
        typedef GLvoid (APIENTRY *PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle);
        typedef GLvoid (APIENTRY *PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask,
                                               GLuint dstMod, GLuint arg1, GLuint arg1Rep,
                                               GLuint arg1Mod);
        typedef GLvoid (APIENTRY *PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask,
                                               GLuint dstMod, GLuint arg1, GLuint arg1Rep,
                                               GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
                                               GLuint arg2Mod);
        typedef GLvoid (APIENTRY *PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask,
                                               GLuint dstMod, GLuint arg1, GLuint arg1Rep,
                                               GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
                                               GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
                                               GLuint arg3Mod);
        typedef GLvoid (APIENTRY *PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod,
                                               GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
        typedef GLvoid (APIENTRY *PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod,
                                               GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
                                               GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
        typedef GLvoid (APIENTRY *PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod,
                                               GLuint arg1, GLuint arg1Rep, GLuint arg1Mod,
                                               GLuint arg2, GLuint arg2Rep, GLuint arg2Mod,
                                               GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
        typedef GLvoid (APIENTRY *PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value);

        extern PFNGLGENFRAGMENTSHADERSATIPROC glGenFragmentShadersATI;
        extern PFNGLBINDFRAGMENTSHADERATIPROC glBindFragmentShaderATI;
        extern PFNGLDELETEFRAGMENTSHADERATIPROC glDeleteFragmentShaderATI;
        extern PFNGLBEGINFRAGMENTSHADERATIPROC glBeginFragmentShaderATI;
        extern PFNGLENDFRAGMENTSHADERATIPROC glEndFragmentShaderATI;
        extern PFNGLPASSTEXCOORDATIPROC glPassTexCoordATI;
        extern PFNGLSAMPLEMAPATIPROC glSampleMapATI;
        extern PFNGLCOLORFRAGMENTOP1ATIPROC glColorFragmentOp1ATI;
        extern PFNGLCOLORFRAGMENTOP2ATIPROC glColorFragmentOp2ATI;
        extern PFNGLCOLORFRAGMENTOP3ATIPROC glColorFragmentOp3ATI;
        extern PFNGLALPHAFRAGMENTOP1ATIPROC glAlphaFragmentOp1ATI;
        extern PFNGLALPHAFRAGMENTOP2ATIPROC glAlphaFragmentOp2ATI;
        extern PFNGLALPHAFRAGMENTOP3ATIPROC glAlphaFragmentOp3ATI;
        extern PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glSetFragmentShaderConstantATI;
    #endif
    #endif /* GL_ATI_fragment_shader */

    // Multitexturing.
    #ifndef GL_ARB_multitexture
        #define GL_ARB_multitexture 1

        #define GL_ACTIVE_TEXTURE_ARB               0x84E0
        #define GL_CLIENT_ACTIVE_TEXTURE_ARB        0x84E1
        #define GL_MAX_ACTIVE_TEXTURES_ARB          0x84E2
        #define GL_TEXTURE0_ARB                     0x84C0
        #define GL_TEXTURE1_ARB                     0x84C1
        #define GL_TEXTURE2_ARB                     0x84C2
        #define GL_TEXTURE3_ARB                     0x84C3
        #define GL_TEXTURE4_ARB                     0x84C4
        #define GL_TEXTURE5_ARB                     0x84C5
        #define GL_TEXTURE6_ARB                     0x84C6
        #define GL_TEXTURE7_ARB                     0x84C7
        #define GL_TEXTURE8_ARB                     0x84C8
        #define GL_TEXTURE9_ARB                     0x84C9
        #define GL_TEXTURE10_ARB                    0x84CA
        #define GL_TEXTURE11_ARB                    0x84CB
        #define GL_TEXTURE12_ARB                    0x84CC
        #define GL_TEXTURE13_ARB                    0x84CD
        #define GL_TEXTURE14_ARB                    0x84CE
        #define GL_TEXTURE15_ARB                    0x84CF
        #define GL_TEXTURE16_ARB                    0x84D0
        #define GL_TEXTURE17_ARB                    0x84D1
        #define GL_TEXTURE18_ARB                    0x84D2
        #define GL_TEXTURE19_ARB                    0x84D3
        #define GL_TEXTURE20_ARB                    0x84D4
        #define GL_TEXTURE21_ARB                    0x84D5
        #define GL_TEXTURE22_ARB                    0x84D6
        #define GL_TEXTURE23_ARB                    0x84D7
        #define GL_TEXTURE24_ARB                    0x84D8
        #define GL_TEXTURE25_ARB                    0x84D9
        #define GL_TEXTURE26_ARB                    0x84DA
        #define GL_TEXTURE27_ARB                    0x84DB
        #define GL_TEXTURE28_ARB                    0x84DC
        #define GL_TEXTURE29_ARB                    0x84DD
        #define GL_TEXTURE30_ARB                    0x84DE
        #define GL_TEXTURE31_ARB                    0x84DF

    #ifdef GL_GLEXT_PROTOTYPES
        extern void APIENTRY glActiveTextureARB (GLenum);
        extern void APIENTRY glClientActiveTextureARB (GLenum);
        extern void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
        extern void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
        extern void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
        extern void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
        extern void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
        extern void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
        extern void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
        extern void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
        extern void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
        extern void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
        extern void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
        extern void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
        extern void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
        extern void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
        extern void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
        extern void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
        extern void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
        extern void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
        extern void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
        extern void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
        extern void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
        extern void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
        extern void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
        extern void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
        extern void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
        extern void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
        extern void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
        extern void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
        extern void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
        extern void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
        extern void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
        extern void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
    #else
        #define _BIND_MULTITEXTURE_EXTENSION_REQURIED 1
        typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
        typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum texture, GLdouble s);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum texture, const GLdouble *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum texture, GLfloat s);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum texture, const GLfloat *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum texture, GLint s);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum texture, const GLint *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum texture, GLshort s);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum texture, const GLshort *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum texture, GLdouble s, GLdouble t);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum texture, const GLdouble *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum texture, GLfloat s, GLfloat t);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum texture, const GLfloat *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum texture, GLint s, GLint t);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum texture, const GLint *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum texture, GLshort s, GLshort t);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum texture, const GLshort *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum texture, GLdouble s, GLdouble t, GLdouble r);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum texture, const GLdouble *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum texture, GLfloat s, GLfloat t, GLfloat r);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum texture, const GLfloat *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum texture, GLint s, GLint t, GLint r);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum texture, const GLint *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum texture, GLshort s, GLshort t, GLshort r);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum texture, const GLshort *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum texture, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum texture, const GLdouble *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum texture, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum texture, const GLfloat *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum texture, GLint s, GLint t, GLint r, GLint q);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum texture, const GLint *v);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum texture, GLshort s, GLshort t, GLshort r, GLshort q);
        typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum texture, const GLshort *v);
        extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB ;
        extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB ;
        extern PFNGLMULTITEXCOORD1DARBPROC glMultiTexCoord1dARB ;
        extern PFNGLMULTITEXCOORD1DVARBPROC glMultiTexCoord1dvARB ;
        extern PFNGLMULTITEXCOORD1FARBPROC glMultiTexCoord1fARB ;
        extern PFNGLMULTITEXCOORD1FVARBPROC glMultiTexCoord1fvARB ;
        extern PFNGLMULTITEXCOORD1IARBPROC glMultiTexCoord1iARB ;
        extern PFNGLMULTITEXCOORD1IVARBPROC glMultiTexCoord1ivARB ;
        extern PFNGLMULTITEXCOORD1SARBPROC glMultiTexCoord1sARB ;
        extern PFNGLMULTITEXCOORD1SVARBPROC glMultiTexCoord1svARB ;
        extern PFNGLMULTITEXCOORD2DARBPROC glMultiTexCoord2dARB ;
        extern PFNGLMULTITEXCOORD2DVARBPROC glMultiTexCoord2dvARB ;
        extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB ;
        extern PFNGLMULTITEXCOORD2FVARBPROC glMultiTexCoord2fvARB ;
        extern PFNGLMULTITEXCOORD2IARBPROC glMultiTexCoord2iARB ;
        extern PFNGLMULTITEXCOORD2IVARBPROC glMultiTexCoord2ivARB ;
        extern PFNGLMULTITEXCOORD2SARBPROC glMultiTexCoord2sARB ;
        extern PFNGLMULTITEXCOORD2SVARBPROC glMultiTexCoord2svARB ;
        extern PFNGLMULTITEXCOORD3DARBPROC glMultiTexCoord3dARB ;
        extern PFNGLMULTITEXCOORD3DVARBPROC glMultiTexCoord3dvARB ;
        extern PFNGLMULTITEXCOORD3FARBPROC glMultiTexCoord3fARB ;
        extern PFNGLMULTITEXCOORD3FVARBPROC glMultiTexCoord3fvARB ;
        extern PFNGLMULTITEXCOORD3IARBPROC glMultiTexCoord3iARB ;
        extern PFNGLMULTITEXCOORD3IVARBPROC glMultiTexCoord3ivARB ;
        extern PFNGLMULTITEXCOORD3SARBPROC glMultiTexCoord3sARB ;
        extern PFNGLMULTITEXCOORD3SVARBPROC glMultiTexCoord3svARB ;
        extern PFNGLMULTITEXCOORD4DARBPROC glMultiTexCoord4dARB ;
        extern PFNGLMULTITEXCOORD4DVARBPROC glMultiTexCoord4dvARB ;
        extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB ;
        extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB ;
        extern PFNGLMULTITEXCOORD4IARBPROC glMultiTexCoord4iARB ;
        extern PFNGLMULTITEXCOORD4IVARBPROC glMultiTexCoord4ivARB ;
        extern PFNGLMULTITEXCOORD4SARBPROC glMultiTexCoord4sARB ;
        extern PFNGLMULTITEXCOORD4SVARBPROC glMultiTexCoord4svARB ;
    #endif

    #endif /* GL_ARB_multitexture */

    /* GL_ARB_texture_cube_map */
    #ifndef GL_TEXTURE_CUBE_MAP_ARB
        #define GL_TEXTURE_CUBE_MAP_ARB                 0x8513
        #define GL_TEXTURE_BINDING_CUBE_MAP_ARB         0x8514
        #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB      0x8515
        #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB      0x8516
        #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB      0x8517
        #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB      0x8518
        #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB      0x8519
        #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB      0x851A
        #define GL_PROXY_TEXTURE_CUBE_MAP_ARB           0x851B
        #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB        0x851C
    #endif

    extern GLboolean initialize_ATI_Extension(char *extensionString);

    #ifdef __cplusplus
    }
    #endif

    #endif /* _ATIext */