//-
// ==========================================================================
// 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 */


