ATIext.cpp

//-
// ==========================================================================
// 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.
//
// ==========================================================================
//+

//
// Description:
//              ATI extension binder utilties
//
//
#include "ATIext.h"
#include <maya/MIOStream.h>

#ifdef _WIN32
        // Convenience macro for declaring WGL api entries
        #define OGL_GET_PROC( _type_, _entry_, _failbit_ ) \
                _entry_ = (_type_) wglGetProcAddress( #_entry_ ); \
                if (NULL == _entry_) _failbit_=false; 
#elif LINUX
        // Convenience macro for declaring OGL api entries
        #ifdef GLX_ARB_get_proc_address
        #define OGL_GET_PROC( _type_, _entry_, _failbit_ ) \
                                _entry_ = (_type_) ::glXGetProcAddressARB( #_entry_ ); \
                                if (NULL == _entry_) _failbit_=false;
        #else
                #define OGL_GET_PROC( _type_, _entry_, _failbit_ )      
        #endif
#else
        #define OGL_GET_PROC( _type_, _entry_, _failbit_ )      
#endif

// Mulitexturing
//
#ifdef _BIND_MULTITEXTURE_EXTENSION_REQURIED
        PFNGLACTIVETEXTUREARBPROC glActiveTextureARB = NULL;
        PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB = NULL;
        PFNGLMULTITEXCOORD1DARBPROC glMultiTexCoord1dARB = NULL;
        PFNGLMULTITEXCOORD1DVARBPROC glMultiTexCoord1dvARB = NULL;
        PFNGLMULTITEXCOORD1FARBPROC glMultiTexCoord1fARB = NULL;
        PFNGLMULTITEXCOORD1FVARBPROC glMultiTexCoord1fvARB = NULL;
        PFNGLMULTITEXCOORD1IARBPROC glMultiTexCoord1iARB = NULL;
        PFNGLMULTITEXCOORD1IVARBPROC glMultiTexCoord1ivARB = NULL;
        PFNGLMULTITEXCOORD1SARBPROC glMultiTexCoord1sARB = NULL;
        PFNGLMULTITEXCOORD1SVARBPROC glMultiTexCoord1svARB = NULL;
        PFNGLMULTITEXCOORD2DARBPROC glMultiTexCoord2dARB = NULL;
        PFNGLMULTITEXCOORD2DVARBPROC glMultiTexCoord2dvARB = NULL;
        PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB = NULL;
        PFNGLMULTITEXCOORD2FVARBPROC glMultiTexCoord2fvARB = NULL;
        PFNGLMULTITEXCOORD2IARBPROC glMultiTexCoord2iARB = NULL;
        PFNGLMULTITEXCOORD2IVARBPROC glMultiTexCoord2ivARB = NULL;
        PFNGLMULTITEXCOORD2SARBPROC glMultiTexCoord2sARB = NULL;
        PFNGLMULTITEXCOORD2SVARBPROC glMultiTexCoord2svARB = NULL;
        PFNGLMULTITEXCOORD3DARBPROC glMultiTexCoord3dARB = NULL;
        PFNGLMULTITEXCOORD3DVARBPROC glMultiTexCoord3dvARB = NULL;
        PFNGLMULTITEXCOORD3FARBPROC glMultiTexCoord3fARB = NULL;
        PFNGLMULTITEXCOORD3FVARBPROC glMultiTexCoord3fvARB = NULL;
        PFNGLMULTITEXCOORD3IARBPROC glMultiTexCoord3iARB = NULL;
        PFNGLMULTITEXCOORD3IVARBPROC glMultiTexCoord3ivARB = NULL;
        PFNGLMULTITEXCOORD3SARBPROC glMultiTexCoord3sARB = NULL;
        PFNGLMULTITEXCOORD3SVARBPROC glMultiTexCoord3svARB = NULL;
        PFNGLMULTITEXCOORD4DARBPROC glMultiTexCoord4dARB = NULL;
        PFNGLMULTITEXCOORD4DVARBPROC glMultiTexCoord4dvARB = NULL;
        PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB = NULL;
        PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB = NULL;
        PFNGLMULTITEXCOORD4IARBPROC glMultiTexCoord4iARB = NULL;
        PFNGLMULTITEXCOORD4IVARBPROC glMultiTexCoord4ivARB = NULL;
        PFNGLMULTITEXCOORD4SARBPROC glMultiTexCoord4sARB = NULL;
        PFNGLMULTITEXCOORD4SVARBPROC glMultiTexCoord4svARB = NULL;
#endif

// PN Triangles extension functions
//
#ifdef _BIND_PN_EXTENSIONS_REQUIRED
        PFNGLPNTRIANGLESIATIPROC glPNTrianglesiATI = NULL;
        PFNGLPNTRIANGLESFATIPROC glPNTrianglesfATI = NULL;
#endif

#ifdef _BIND_EXT_VERTEX_SHADER_EXTENSIONS_REQUIRED
        PFNGLBEGINVERTEXSHADEREXTPROC glBeginVertexShaderEXT = NULL;
        PFNGLENDVERTEXSHADEREXTPROC glEndVertexShaderEXT = NULL;
        PFNGLBINDVERTEXSHADEREXTPROC glBindVertexShaderEXT = NULL;
        PFNGLGENVERTEXSHADERSEXTPROC glGenVertexShadersEXT = NULL;
        PFNGLDELETEVERTEXSHADEREXTPROC glDeleteVertexShaderEXT = NULL;
        PFNGLSHADEROP1EXTPROC glShaderOp1EXT = NULL;
        PFNGLSHADEROP2EXTPROC glShaderOp2EXT = NULL;
        PFNGLSHADEROP3EXTPROC glShaderOp3EXT = NULL;
        PFNGLSWIZZLEEXTPROC glSwizzleEXT = NULL;
        PFNGLWRITEMASKEXTPROC glWriteMaskEXT = NULL;
        PFNGLINSERTCOMPONENTEXTPROC glInsertComponentEXT = NULL;
        PFNGLEXTRACTCOMPONENTEXTPROC glExtractComponentEXT = NULL;
        PFNGLGENSYMBOLSEXTPROC glGenSymbolsEXT = NULL;
        PFNGLSETINVARIANTEXTPROC glSetInvariantEXT = NULL;
        PFNGLSETLOCALCONSTANTEXTPROC glSetLocalConstantEXT = NULL;
        PFNGLVARIANTBVEXTPROC glVariantbvEXT = NULL;
        PFNGLVARIANTSVEXTPROC glVariantsvEXT = NULL;
        PFNGLVARIANTIVEXTPROC glVariantivEXT = NULL;
        PFNGLVARIANTFVEXTPROC glVariantfvEXT = NULL;
        PFNGLVARIANTDVEXTPROC glVariantdvEXT = NULL;
        PFNGLVARIANTUBVEXTPROC glVariantubvEXT = NULL;
        PFNGLVARIANTUSVEXTPROC glVariantusvEXT = NULL;
        PFNGLVARIANTUIVEXTPROC glVariantuivEXT = NULL;
        PFNGLVARIANTPOINTEREXTPROC glVariantPointerEXT = NULL;
        PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glEnableVariantClientStateEXT = NULL;
        PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glDisableVariantClientStateEXT = NULL;
        PFNGLBINDLIGHTPARAMETEREXTPROC glBindLightParameterEXT = NULL;
        PFNGLBINDMATERIALPARAMETEREXTPROC glBindMaterialParameterEXT = NULL;
        PFNGLBINDTEXGENPARAMETEREXTPROC glBindTexGenParameterEXT = NULL;
        PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glBindTextureUnitParameterEXT = NULL;
        PFNGLBINDPARAMETEREXTPROC glBindParameterEXT = NULL;
        PFNGLISVARIANTENABLEDEXTPROC glIsVariantEnabledEXT = NULL;
        PFNGLGETVARIANTBOOLEANVEXTPROC glGetVariantBooleanvEXT = NULL;
        PFNGLGETVARIANTINTEGERVEXTPROC glGetVariantIntegervEXT = NULL;
        PFNGLGETVARIANTFLOATVEXTPROC glGetVariantFloatvEXT = NULL;
        PFNGLGETVARIANTPOINTERVEXTPROC glGetVariantPointervEXT = NULL;
        PFNGLGETINVARIANTBOOLEANVEXTPROC glGetInvariantBooleanvEXT = NULL;
        PFNGLGETINVARIANTINTEGERVEXTPROC glGetInvariantIntegervEXT = NULL;
        PFNGLGETINVARIANTFLOATVEXTPROC glGetInvariantFloatvEXT = NULL;
        PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glGetLocalConstantBooleanvEXT = NULL;
        PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glGetLocalConstantIntegervEXT = NULL;
        PFNGLGETLOCALCONSTANTFLOATVEXTPROC glGetLocalConstantFloatvEXT = NULL;
#endif

#ifdef _BIND_EXT_FRAGMENT_SHADER_EXTENSIONS_REQUIRED
        PFNGLGENFRAGMENTSHADERSATIPROC glGenFragmentShadersATI = NULL;
        PFNGLBINDFRAGMENTSHADERATIPROC glBindFragmentShaderATI = NULL;
        PFNGLDELETEFRAGMENTSHADERATIPROC glDeleteFragmentShaderATI = NULL;
        PFNGLBEGINFRAGMENTSHADERATIPROC glBeginFragmentShaderATI = NULL;
        PFNGLENDFRAGMENTSHADERATIPROC glEndFragmentShaderATI = NULL;
        PFNGLPASSTEXCOORDATIPROC glPassTexCoordATI = NULL;
        PFNGLSAMPLEMAPATIPROC glSampleMapATI = NULL;
        PFNGLCOLORFRAGMENTOP1ATIPROC glColorFragmentOp1ATI = NULL;
        PFNGLCOLORFRAGMENTOP2ATIPROC glColorFragmentOp2ATI = NULL;
        PFNGLCOLORFRAGMENTOP3ATIPROC glColorFragmentOp3ATI = NULL;
        PFNGLALPHAFRAGMENTOP1ATIPROC glAlphaFragmentOp1ATI = NULL;
        PFNGLALPHAFRAGMENTOP2ATIPROC glAlphaFragmentOp2ATI = NULL;
        PFNGLALPHAFRAGMENTOP3ATIPROC glAlphaFragmentOp3ATI = NULL;
        PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glSetFragmentShaderConstantATI = NULL;
#endif

static GLubyte *gfx_extensions = NULL;

GLboolean initialize_ATI_Extension(char *extensionString)
{
        GLboolean success = 0;
        
        // Get all strings
        if (gfx_extensions == NULL)
                gfx_extensions = (GLubyte *) ::glGetString(GL_EXTENSIONS);
        
        // Check for a specific extension
        if (gfx_extensions)
        {
                // Found the pn triangles extension. Now bind the funcitons
                if (strstr((char *)gfx_extensions, extensionString))
                {
                        if (strcmp(extensionString, "GL_ATI_pn_triangles") == 0)
                        {
                                success = 1;
                                #ifdef _BIND_MULTITEXTURE_EXTENSION_REQURIED
                                {
                                        OGL_GET_PROC( PFNGLACTIVETEXTUREARBPROC, glActiveTextureARB , success);
                                        OGL_GET_PROC( PFNGLCLIENTACTIVETEXTUREARBPROC, glClientActiveTextureARB, success );
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1DARBPROC, glMultiTexCoord1dARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1DVARBPROC, glMultiTexCoord1dvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1FARBPROC, glMultiTexCoord1fARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1FVARBPROC, glMultiTexCoord1fvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1IARBPROC, glMultiTexCoord1iARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1IVARBPROC, glMultiTexCoord1ivARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1SARBPROC, glMultiTexCoord1sARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD1SVARBPROC, glMultiTexCoord1svARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2DARBPROC, glMultiTexCoord2dARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2DVARBPROC, glMultiTexCoord2dvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2FARBPROC, glMultiTexCoord2fARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2FVARBPROC, glMultiTexCoord2fvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2IARBPROC, glMultiTexCoord2iARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2IVARBPROC, glMultiTexCoord2ivARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2SARBPROC, glMultiTexCoord2sARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD2SVARBPROC, glMultiTexCoord2svARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3DARBPROC, glMultiTexCoord3dARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3DVARBPROC, glMultiTexCoord3dvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3FARBPROC, glMultiTexCoord3fARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3FVARBPROC, glMultiTexCoord3fvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3IARBPROC, glMultiTexCoord3iARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3IVARBPROC, glMultiTexCoord3ivARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3SARBPROC, glMultiTexCoord3sARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD3SVARBPROC, glMultiTexCoord3svARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4DARBPROC, glMultiTexCoord4dARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4DVARBPROC, glMultiTexCoord4dvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4FARBPROC, glMultiTexCoord4fARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4FVARBPROC, glMultiTexCoord4fvARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4IARBPROC, glMultiTexCoord4iARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4IVARBPROC, glMultiTexCoord4ivARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4SARBPROC, glMultiTexCoord4sARB, success);
                                        OGL_GET_PROC( PFNGLMULTITEXCOORD4SVARBPROC, glMultiTexCoord4svARB, success);
                                }
                                #endif
                        }
                        
                        // PN triangles extension check
                        //
                        if (strcmp(extensionString, "GL_ATI_pn_triangles") == 0)
                        {
                                success = 1;
                                #ifdef _BIND_PN_EXTENSIONS_REQUIRED
                                {
                                        OGL_GET_PROC( PFNGLPNTRIANGLESIATIPROC, glPNTrianglesiATI, success );
                                        OGL_GET_PROC( PFNGLPNTRIANGLESFATIPROC, glPNTrianglesfATI, success );
                                }
                                #endif
                        }
                        
                        // Vertex shader extension check
                        //
                        else if (strcmp(extensionString, "GL_EXT_vertex_shader"))
                        {
                                success = 1;
                                #ifdef _BIND_EXT_VERTEX_SHADER_EXTENSIONS_REQUIRED
                                {
                                        OGL_GET_PROC(PFNGLBEGINVERTEXSHADEREXTPROC, glBeginVertexShaderEXT, success);
                                        OGL_GET_PROC(PFNGLENDVERTEXSHADEREXTPROC, glEndVertexShaderEXT, success);
                                        OGL_GET_PROC(PFNGLBINDVERTEXSHADEREXTPROC, glBindVertexShaderEXT, success);
                                        OGL_GET_PROC(PFNGLGENVERTEXSHADERSEXTPROC, glGenVertexShadersEXT, success);
                                        OGL_GET_PROC(PFNGLDELETEVERTEXSHADEREXTPROC, glDeleteVertexShaderEXT, success);
                                        OGL_GET_PROC(PFNGLSHADEROP1EXTPROC, glShaderOp1EXT, success);
                                        OGL_GET_PROC(PFNGLSHADEROP2EXTPROC, glShaderOp2EXT, success);
                                        OGL_GET_PROC(PFNGLSHADEROP3EXTPROC, glShaderOp3EXT, success);
                                        OGL_GET_PROC(PFNGLSWIZZLEEXTPROC, glSwizzleEXT, success);
                                        OGL_GET_PROC(PFNGLWRITEMASKEXTPROC, glWriteMaskEXT, success);
                                        OGL_GET_PROC(PFNGLINSERTCOMPONENTEXTPROC, glInsertComponentEXT, success);
                                        OGL_GET_PROC(PFNGLEXTRACTCOMPONENTEXTPROC, glExtractComponentEXT, success);
                                        OGL_GET_PROC(PFNGLGENSYMBOLSEXTPROC, glGenSymbolsEXT, success);
                                        OGL_GET_PROC(PFNGLSETINVARIANTEXTPROC, glSetInvariantEXT, success);
                                        OGL_GET_PROC(PFNGLSETLOCALCONSTANTEXTPROC, glSetLocalConstantEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTBVEXTPROC, glVariantbvEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTSVEXTPROC, glVariantsvEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTIVEXTPROC, glVariantivEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTFVEXTPROC, glVariantfvEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTDVEXTPROC, glVariantdvEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTUBVEXTPROC, glVariantubvEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTUSVEXTPROC, glVariantusvEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTUIVEXTPROC, glVariantuivEXT, success);
                                        OGL_GET_PROC(PFNGLVARIANTPOINTEREXTPROC, glVariantPointerEXT, success);
                                        OGL_GET_PROC(PFNGLENABLEVARIANTCLIENTSTATEEXTPROC, glEnableVariantClientStateEXT, success);
                                        OGL_GET_PROC(PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC, glDisableVariantClientStateEXT, success);
                                        OGL_GET_PROC(PFNGLBINDLIGHTPARAMETEREXTPROC, glBindLightParameterEXT, success);
                                        OGL_GET_PROC(PFNGLBINDMATERIALPARAMETEREXTPROC, glBindMaterialParameterEXT, success);
                                        OGL_GET_PROC(PFNGLBINDTEXGENPARAMETEREXTPROC, glBindTexGenParameterEXT, success);
                                        OGL_GET_PROC(PFNGLBINDTEXTUREUNITPARAMETEREXTPROC, glBindTextureUnitParameterEXT, success);
                                        OGL_GET_PROC(PFNGLBINDPARAMETEREXTPROC, glBindParameterEXT, success);
                                        OGL_GET_PROC(PFNGLISVARIANTENABLEDEXTPROC, glIsVariantEnabledEXT, success);
                                        OGL_GET_PROC(PFNGLGETVARIANTBOOLEANVEXTPROC, glGetVariantBooleanvEXT, success);
                                        OGL_GET_PROC(PFNGLGETVARIANTINTEGERVEXTPROC, glGetVariantIntegervEXT, success);
                                        OGL_GET_PROC(PFNGLGETVARIANTFLOATVEXTPROC, glGetVariantFloatvEXT, success);
                                        OGL_GET_PROC(PFNGLGETVARIANTPOINTERVEXTPROC, glGetVariantPointervEXT, success);
                                        OGL_GET_PROC(PFNGLGETINVARIANTBOOLEANVEXTPROC, glGetInvariantBooleanvEXT, success);
                                        OGL_GET_PROC(PFNGLGETINVARIANTINTEGERVEXTPROC, glGetInvariantIntegervEXT, success);
                                        OGL_GET_PROC(PFNGLGETINVARIANTFLOATVEXTPROC, glGetInvariantFloatvEXT, success);
                                        OGL_GET_PROC(PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC, glGetLocalConstantBooleanvEXT, success);
                                        OGL_GET_PROC(PFNGLGETLOCALCONSTANTINTEGERVEXTPROC, glGetLocalConstantIntegervEXT, success);
                                        OGL_GET_PROC(PFNGLGETLOCALCONSTANTFLOATVEXTPROC, glGetLocalConstantFloatvEXT, success);
                                }
                                #endif
                        }
                        
                        // Fragment shader extension check
                        //
                        else if (strcmp(extensionString, "GL_ATI_fragment_shader"))
                        {
                                success = 1;
                                #ifdef _BIND_EXT_FRAGMENT_SHADER_EXTENSIONS_REQUIRED
                                {
                                        OGL_GET_PROC( PFNGLGENFRAGMENTSHADERSATIPROC, glGenFragmentShadersATI, success);
                                        OGL_GET_PROC( PFNGLBINDFRAGMENTSHADERATIPROC, glBindFragmentShaderATI, success);
                                        OGL_GET_PROC( PFNGLDELETEFRAGMENTSHADERATIPROC, glDeleteFragmentShaderATI, success);
                                        OGL_GET_PROC( PFNGLBEGINFRAGMENTSHADERATIPROC, glBeginFragmentShaderATI, success);
                                        OGL_GET_PROC( PFNGLENDFRAGMENTSHADERATIPROC, glEndFragmentShaderATI, success);
                                        OGL_GET_PROC( PFNGLPASSTEXCOORDATIPROC, glPassTexCoordATI, success);
                                        OGL_GET_PROC( PFNGLSAMPLEMAPATIPROC, glSampleMapATI, success);
                                        OGL_GET_PROC( PFNGLCOLORFRAGMENTOP1ATIPROC, glColorFragmentOp1ATI, success);
                                        OGL_GET_PROC( PFNGLCOLORFRAGMENTOP2ATIPROC, glColorFragmentOp2ATI, success);
                                        OGL_GET_PROC( PFNGLCOLORFRAGMENTOP3ATIPROC, glColorFragmentOp3ATI, success);
                                        OGL_GET_PROC( PFNGLALPHAFRAGMENTOP1ATIPROC, glAlphaFragmentOp1ATI, success);
                                        OGL_GET_PROC( PFNGLALPHAFRAGMENTOP2ATIPROC, glAlphaFragmentOp2ATI, success);
                                        OGL_GET_PROC( PFNGLALPHAFRAGMENTOP3ATIPROC, glAlphaFragmentOp3ATI, success);
                                        OGL_GET_PROC( PFNGLSETFRAGMENTSHADERCONSTANTATIPROC, glSetFragmentShaderConstantATI, success);
                                }
                                #endif
                        }
                        
                        else 
                        {
                                cerr << extensionString << " extension is not supported by this plugin" << endl;
                        }
                }
        }
        
        return success;
}


Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6