www.pudn.com > tomohide_fur.03.13.02.zip > extensions.h


//----------------------------------------------------------------------------- 
// File: extensions.h 
// 
// Copyright (C) 2001-2002 Tomohide Kano. All rights reserved. 
//----------------------------------------------------------------------------- 
 
#pragma once 
#include "glATI.h" 
 
#if defined(DECLARE_EXTENSION_SUBSTANCE) 
#define EXTERN 
#else 
#define EXTERN extern 
#endif 
 
// GL_ARB_multitexture 
EXTERN PFNGLACTIVETEXTUREARBPROC              glActiveTextureARB; 
EXTERN PFNGLCLIENTACTIVETEXTUREARBPROC        glClientActiveTextureARB; 
 
// GL_EXT_texture3D 
EXTERN PFNGLTEXIMAGE3DEXTPROC                 glTexImage3DEXT; 
 
// ATI_vertex_array_object 
EXTERN PFNGLNEWOBJECTBUFFERATIPROC            glNewObjectBufferATI; 
EXTERN PFNGLISOBJECTBUFFERATIPROC             glIsObjectBufferATI; 
EXTERN PFNGLUPDATEOBJECTBUFFERATIPROC         glUpdateObjectBufferATI; 
EXTERN PFNGLGETOBJECTBUFFERFVATIPROC          glGetObjectBufferfvATI; 
EXTERN PFNGLGETOBJECTBUFFERIVATIPROC          glGetObjectBufferivATI; 
EXTERN PFNGLFREEOBJECTBUFFERATIPROC           glFreeObjectBufferATI; 
EXTERN PFNGLARRAYOBJECTATIPROC                glArrayObjectATI; 
EXTERN PFNGLGETARRAYOBJECTFVATIPROC           glGetArrayObjectfvATI; 
EXTERN PFNGLGETARRAYOBJECTIVATIPROC           glGetArrayObjectivATI; 
EXTERN PFNGLVARIANTARRAYOBJECTATIPROC         glVariantArrayObjectATI; 
EXTERN PFNGLGETVARIANTARRAYOBJECTFVATIPROC    glGetVariantArrayObjectfvATI; 
EXTERN PFNGLGETVARIANTARRAYOBJECTIVATIPROC    glGetVariantArrayObjectivATI; 
 
// ATI_element_arrays 
EXTERN PFNGLELEMENTPOINTERATIPROC             glElementPointerATI; 
EXTERN PFNGLDRAWELEMENTARRAYATIPROC           glDrawElementArrayATI; 
EXTERN PFNGLDRAWRANGEELEMENTARRAYATIPROC      glDrawRangeElementArrayATI; 
 
// GL_EXT_vertex_shader 
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; 
 
// GL_ATI_fragment_shader 
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; 
 
#undef EXTERN 
 
#if defined(DECLARE_EXTENSION_SUBSTANCE) 
 
bool CheckExtension(const char *ext) 
{ 
	const char *p = (const char *)glGetString(GL_EXTENSIONS); 
	const char *end; 
	if (p == NULL) return false; 
	end = p + strlen(p); 
	while (p < end) 
	{ 
		GLuint n = strcspn(p, " "); 
		if (strlen(ext) == n && strncmp(ext, p, n) == 0) 
			return true; 
		p += n + 1; 
	} 
	return false; 
} 
 
bool InitExtensions(void) 
{ 
	if (!CheckExtension("GL_ARB_multitexture")) return false; 
	if (!CheckExtension("GL_ATI_element_array")) return false; 
	if (!CheckExtension("GL_ATI_fragment_shader")) return false; 
	if (!CheckExtension("GL_ATI_texture_mirror_once")) return false; 
	if (!CheckExtension("GL_ATI_vertex_array_object")) return false; 
	if (!CheckExtension("GL_EXT_vertex_shader")) return false; 
	if (!CheckExtension("GL_EXT_texture3D")) return false; 
 
	// GL_ARB_multitexture 
	glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glActiveTextureARB"); 
	glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)wglGetProcAddress("glClientActiveTextureARB"); 
	if (!glActiveTextureARB) return false; 
	if (!glClientActiveTextureARB) return false; 
 
	// GL_EXT_texture3D 
	glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)wglGetProcAddress("glTexImage3DEXT"); 
	if (!glTexImage3DEXT) return false; 
 
	// GL_ATI_vertex_array_object 
	glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)wglGetProcAddress("glNewObjectBufferATI"); 
	glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)wglGetProcAddress("glIsObjectBufferATI"); 
	glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)wglGetProcAddress("glUpdateObjectBufferATI"); 
	glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)wglGetProcAddress("glGetObjectBufferfvATI"); 
	glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)wglGetProcAddress("glGetObjectBufferivATI"); 
	glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)wglGetProcAddress("glFreeObjectBufferATI"); 
	glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)wglGetProcAddress("glArrayObjectATI"); 
	glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)wglGetProcAddress("glGetArrayObjectfvATI"); 
	glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)wglGetProcAddress("glGetArrayObjectivATI"); 
	glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)wglGetProcAddress("glVariantArrayObjectATI"); 
	glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)wglGetProcAddress("glGetVariantArrayObjectfvATI"); 
	glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)wglGetProcAddress("glGetVariantArrayObjectivATI"); 
	if (!glNewObjectBufferATI) return false; 
	if (!glIsObjectBufferATI) return false; 
	if (!glUpdateObjectBufferATI) return false; 
	if (!glGetObjectBufferfvATI) return false; 
	if (!glGetObjectBufferivATI) return false; 
	if (!glFreeObjectBufferATI) return false; 
	if (!glArrayObjectATI) return false; 
	if (!glGetArrayObjectfvATI) return false; 
	if (!glGetArrayObjectivATI) return false; 
	if (!glVariantArrayObjectATI) return false; 
	if (!glGetVariantArrayObjectfvATI) return false; 
	if (!glGetVariantArrayObjectivATI) return false; 
 
	// GL_ATI_element_array 
	glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)wglGetProcAddress("glElementPointerATI"); 
	glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)wglGetProcAddress("glDrawElementArrayATI"); 
	glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)wglGetProcAddress("glDrawRangeElementArrayATI"); 
	if (!glElementPointerATI) return false; 
	if (!glDrawElementArrayATI) return false; 
	if (!glDrawRangeElementArrayATI) return false; 
 
	// GL_EXT_vertex_shader 
	glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)wglGetProcAddress("glBeginVertexShaderEXT"); 
	glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)wglGetProcAddress("glEndVertexShaderEXT"); 
	glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)wglGetProcAddress("glBindVertexShaderEXT"); 
	glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)wglGetProcAddress("glGenVertexShadersEXT"); 
	glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)wglGetProcAddress("glDeleteVertexShaderEXT"); 
	glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)wglGetProcAddress("glShaderOp1EXT"); 
	glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)wglGetProcAddress("glShaderOp2EXT"); 
	glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)wglGetProcAddress("glShaderOp3EXT"); 
	glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)wglGetProcAddress("glSwizzleEXT"); 
	glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)wglGetProcAddress("glWriteMaskEXT"); 
	glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)wglGetProcAddress("glInsertComponentEXT"); 
	glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)wglGetProcAddress("glExtractComponentEXT"); 
	glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)wglGetProcAddress("glGenSymbolsEXT"); 
	glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)wglGetProcAddress("glSetInvariantEXT"); 
	glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)wglGetProcAddress("glSetLocalConstantEXT"); 
	glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)wglGetProcAddress("glVariantbvEXT"); 
	glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)wglGetProcAddress("glVariantsvEXT"); 
	glVariantivEXT = (PFNGLVARIANTIVEXTPROC)wglGetProcAddress("glVariantivEXT"); 
	glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)wglGetProcAddress("glVariantfvEXT"); 
	glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)wglGetProcAddress("glVariantdvEXT"); 
	glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)wglGetProcAddress("glVariantubvEXT"); 
	glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)wglGetProcAddress("glVariantusvEXT"); 
	glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)wglGetProcAddress("glVariantuivEXT"); 
	glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)wglGetProcAddress("glVariantPointerEXT"); 
	glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)wglGetProcAddress("glEnableVariantClientStateEXT"); 
	glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)wglGetProcAddress("glDisableVariantClientStateEXT"); 
	glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)wglGetProcAddress("glBindLightParameterEXT"); 
	glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)wglGetProcAddress("glBindMaterialParameterEXT"); 
	glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)wglGetProcAddress("glBindTexGenParameterEXT"); 
	glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)wglGetProcAddress("glBindTextureUnitParameterEXT"); 
	glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)wglGetProcAddress("glBindParameterEXT"); 
	glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)wglGetProcAddress("glIsVariantEnabledEXT"); 
	glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)wglGetProcAddress("glGetVariantBooleanvEXT"); 
	glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)wglGetProcAddress("glGetVariantIntegervEXT"); 
	glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)wglGetProcAddress("glGetVariantFloatvEXT"); 
	glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)wglGetProcAddress("glGetVariantPointervEXT"); 
	glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)wglGetProcAddress("glGetInvariantBooleanvEXT"); 
	glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)wglGetProcAddress("glGetInvariantIntegervEXT"); 
	glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)wglGetProcAddress("glGetInvariantFloatvEXT"); 
	glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)wglGetProcAddress("glGetLocalConstantBooleanvEXT"); 
	glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)wglGetProcAddress("glGetLocalConstantIntegervEXT"); 
	glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)wglGetProcAddress("glGetLocalConstantFloatvEXT"); 
	if (!glBeginVertexShaderEXT) return false; 
	if (!glEndVertexShaderEXT) return false; 
	if (!glBindVertexShaderEXT) return false; 
	if (!glGenVertexShadersEXT) return false; 
	if (!glDeleteVertexShaderEXT) return false; 
	if (!glShaderOp1EXT) return false; 
	if (!glShaderOp2EXT) return false; 
	if (!glShaderOp3EXT) return false; 
	if (!glSwizzleEXT) return false; 
	if (!glWriteMaskEXT) return false; 
	if (!glInsertComponentEXT) return false; 
	if (!glExtractComponentEXT) return false; 
	if (!glGenSymbolsEXT) return false; 
	if (!glSetInvariantEXT) return false; 
	if (!glSetLocalConstantEXT) return false; 
	if (!glVariantbvEXT) return false; 
	if (!glVariantsvEXT) return false; 
	if (!glVariantivEXT) return false; 
	if (!glVariantfvEXT) return false; 
	if (!glVariantdvEXT) return false; 
	if (!glVariantubvEXT) return false; 
	if (!glVariantusvEXT) return false; 
	if (!glVariantuivEXT) return false; 
	if (!glVariantPointerEXT) return false; 
	if (!glEnableVariantClientStateEXT) return false; 
	if (!glDisableVariantClientStateEXT) return false; 
	if (!glBindLightParameterEXT) return false; 
	if (!glBindMaterialParameterEXT) return false; 
	if (!glBindTexGenParameterEXT) return false; 
	if (!glBindTextureUnitParameterEXT) return false; 
	if (!glBindParameterEXT) return false; 
	if (!glIsVariantEnabledEXT) return false; 
	if (!glGetVariantBooleanvEXT) return false; 
	if (!glGetVariantIntegervEXT) return false; 
	if (!glGetVariantFloatvEXT) return false; 
	if (!glGetVariantPointervEXT) return false; 
	if (!glGetInvariantBooleanvEXT) return false; 
	if (!glGetInvariantIntegervEXT) return false; 
	if (!glGetInvariantFloatvEXT) return false; 
	if (!glGetLocalConstantBooleanvEXT) return false; 
	if (!glGetLocalConstantIntegervEXT) return false; 
	if (!glGetLocalConstantFloatvEXT) return false; 
 
	// GL_ATI_fragment_shader 
	glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)wglGetProcAddress("glGenFragmentShadersATI"); 
	glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)wglGetProcAddress("glBindFragmentShaderATI"); 
	glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)wglGetProcAddress("glDeleteFragmentShaderATI"); 
	glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)wglGetProcAddress("glBeginFragmentShaderATI"); 
	glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)wglGetProcAddress("glEndFragmentShaderATI"); 
	glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)wglGetProcAddress("glPassTexCoordATI"); 
	glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)wglGetProcAddress("glSampleMapATI"); 
	glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)wglGetProcAddress("glColorFragmentOp1ATI"); 
	glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)wglGetProcAddress("glColorFragmentOp2ATI"); 
	glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)wglGetProcAddress("glColorFragmentOp3ATI"); 
	glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)wglGetProcAddress("glAlphaFragmentOp1ATI"); 
	glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)wglGetProcAddress("glAlphaFragmentOp2ATI"); 
	glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)wglGetProcAddress("glAlphaFragmentOp3ATI"); 
	glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)wglGetProcAddress("glSetFragmentShaderConstantATI"); 
	if (!glGenFragmentShadersATI) return false; 
	if (!glBindFragmentShaderATI) return false; 
	if (!glDeleteFragmentShaderATI) return false; 
	if (!glBeginFragmentShaderATI) return false; 
	if (!glEndFragmentShaderATI) return false; 
	if (!glPassTexCoordATI) return false; 
	if (!glSampleMapATI) return false; 
	if (!glColorFragmentOp1ATI) return false; 
	if (!glColorFragmentOp2ATI) return false; 
	if (!glColorFragmentOp3ATI) return false; 
	if (!glAlphaFragmentOp1ATI) return false; 
	if (!glAlphaFragmentOp2ATI) return false; 
	if (!glAlphaFragmentOp3ATI) return false; 
	if (!glSetFragmentShaderConstantATI) return false; 
 
	return true; 
} 
 
#else 
 
extern bool CheckExtension(const char *ext); 
extern bool InitExtensions(void); 
 
#endif