//- // ========================================================================== // Copyright (C) 2005 ATI Technologies Inc. All rights reserved. // // 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 GL_EXTENSIONS_H #define GL_EXTENSIONS_H #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include #include #else #define GL_GLEXT_LEGACY #define GLX_GLXEXT_PROTOTYPE #include #endif #include #include "glATI.h" /* GLSL extensions */ //no ifdefs, we want a compile failure if the aren't defined extern PFNGLDELETEOBJECTARBPROC glDeleteObject; extern PFNGLGETHANDLEARBPROC glGetHandle; extern PFNGLDETACHOBJECTARBPROC glDetachObject; extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObject; extern PFNGLSHADERSOURCEARBPROC glShaderSource; extern PFNGLCOMPILESHADERARBPROC glCompileShader; extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObject; extern PFNGLATTACHOBJECTARBPROC glAttachObject; extern PFNGLLINKPROGRAMARBPROC glLinkProgram; extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObject; extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgram; extern PFNGLUNIFORM1FARBPROC glUniform1f; extern PFNGLUNIFORM2FARBPROC glUniform2f; extern PFNGLUNIFORM3FARBPROC glUniform3f; extern PFNGLUNIFORM4FARBPROC glUniform4f; extern PFNGLUNIFORM1IARBPROC glUniform1i; extern PFNGLUNIFORM2IARBPROC glUniform2i; extern PFNGLUNIFORM3IARBPROC glUniform3i; extern PFNGLUNIFORM4IARBPROC glUniform4i; extern PFNGLUNIFORM1FVARBPROC glUniform1fv; extern PFNGLUNIFORM2FVARBPROC glUniform2fv; extern PFNGLUNIFORM3FVARBPROC glUniform3fv; extern PFNGLUNIFORM4FVARBPROC glUniform4fv; extern PFNGLUNIFORM1IVARBPROC glUniform1iv; extern PFNGLUNIFORM2IVARBPROC glUniform2iv; extern PFNGLUNIFORM3IVARBPROC glUniform3iv; extern PFNGLUNIFORM4IVARBPROC glUniform4iv; extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fv; extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fv; extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fv; extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfv; extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameteriv; extern PFNGLGETINFOLOGARBPROC glGetInfoLog; extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjects; extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocation; extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniform; extern PFNGLGETUNIFORMFVARBPROC glGetUniformfv; extern PFNGLGETUNIFORMIVARBPROC glGetUniformiv; extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSource; extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocation; extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttrib; extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocation; extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1s; extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1f; extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1d; extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2s; extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2f; extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2d; extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3s; extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3f; extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3d; extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4s; extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4f; extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4d; extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4Nub; extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1sv; extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fv; extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dv; extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2sv; extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fv; extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dv; extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3sv; extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fv; extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dv; extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4sv; extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fv; extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dv; extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4iv; extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bv; extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usv; extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubv; extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uiv; extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4Nbv; extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4Nsv; extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4Niv; extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4Nubv; extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4Nusv; extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4Nuiv; extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointer; extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArray; extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArray; extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdv; extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfv; extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribiv; extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointerv; /* ARB_vp/ARB_fp */ extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB; extern PFNGLBINDPROGRAMARBPROC glBindProgramARB; extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB; extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB; extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB; extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB; extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB; extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB; extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB; extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB; extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB; extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB; extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB; extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB; extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB; extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB; extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB; extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB; extern PFNGLISPROGRAMARBPROC glIsProgramARB; /* multi texture */ #ifdef LINUX extern "C" { extern void glActiveTexture(GLenum); extern void glClientActiveTexture(GLenum); extern void glMultiTexCoord2f( GLenum, GLfloat, GLfloat ); extern void glMultiTexCoord3f( GLenum, GLfloat, GLfloat, GLfloat ); extern void glMultiTexCoord4f( GLenum, GLfloat, GLfloat, GLfloat, GLfloat ); } #endif #ifdef WIN32 extern PFNGLACTIVETEXTUREPROC glActiveTexture; extern PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture; extern PFNGLMULTITEXCOORD1DPROC glMultiTexCoord1d; extern PFNGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv; extern PFNGLMULTITEXCOORD1FPROC glMultiTexCoord1f; extern PFNGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv; extern PFNGLMULTITEXCOORD1IPROC glMultiTexCoord1i; extern PFNGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv; extern PFNGLMULTITEXCOORD1SPROC glMultiTexCoord1s; extern PFNGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv; extern PFNGLMULTITEXCOORD2DPROC glMultiTexCoord2d; extern PFNGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv; extern PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f; extern PFNGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv; extern PFNGLMULTITEXCOORD2IPROC glMultiTexCoord2i; extern PFNGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv; extern PFNGLMULTITEXCOORD2SPROC glMultiTexCoord2s; extern PFNGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv; extern PFNGLMULTITEXCOORD3DPROC glMultiTexCoord3d; extern PFNGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv; extern PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f; extern PFNGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv; extern PFNGLMULTITEXCOORD3IPROC glMultiTexCoord3i; extern PFNGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv; extern PFNGLMULTITEXCOORD3SPROC glMultiTexCoord3s; extern PFNGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv; extern PFNGLMULTITEXCOORD4DPROC glMultiTexCoord4d; extern PFNGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv; extern PFNGLMULTITEXCOORD4FPROC glMultiTexCoord4f; extern PFNGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv; extern PFNGLMULTITEXCOORD4IPROC glMultiTexCoord4i; extern PFNGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv; extern PFNGLMULTITEXCOORD4SPROC glMultiTexCoord4s; extern PFNGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv; #endif /* 3D texture */ #ifdef WIN32 extern PFNGLTEXIMAGE3DEXTPROC glTexImage3D; extern PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D; extern PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D; #endif /* Point Parameters */ extern PFNGLPOINTPARAMETERFPROC glPointParameterf; extern PFNGLPOINTPARAMETERFVPROC glPointParameterfv; /* Blend Equation */ #ifdef LINUX extern "C" void glBlendEquation(GLenum); #endif #ifdef WIN32 extern PFNGLBLENDEQUATIONPROC glBlendEquation; #endif /* Secondary Color */ extern PFNGLSECONDARYCOLOR3BPROC glSecondaryColor3b; extern PFNGLSECONDARYCOLOR3BVPROC glSecondaryColor3bv; extern PFNGLSECONDARYCOLOR3DPROC glSecondaryColor3d; extern PFNGLSECONDARYCOLOR3DVPROC glSecondaryColor3dv; extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f; extern PFNGLSECONDARYCOLOR3FVPROC glSecondaryColor3fv; extern PFNGLSECONDARYCOLOR3IPROC glSecondaryColor3i; extern PFNGLSECONDARYCOLOR3IVPROC glSecondaryColor3iv; extern PFNGLSECONDARYCOLOR3SPROC glSecondaryColor3s; extern PFNGLSECONDARYCOLOR3SVPROC glSecondaryColor3sv; extern PFNGLSECONDARYCOLOR3UBPROC glSecondaryColor3ub; extern PFNGLSECONDARYCOLOR3UBVPROC glSecondaryColor3ubv; extern PFNGLSECONDARYCOLOR3UIPROC glSecondaryColor3ui; extern PFNGLSECONDARYCOLOR3UIVPROC glSecondaryColor3uiv; extern PFNGLSECONDARYCOLOR3USPROC glSecondaryColor3us; extern PFNGLSECONDARYCOLOR3USVPROC glSecondaryColor3usv; extern PFNGLSECONDARYCOLORPOINTERPROC glSecondaryColorPointer; //Extension support extern bool glShadingLanguageSupport; extern bool glMultiTextureSupport; extern bool glTexture3DSupport; extern bool glAsmProgramSupport; extern bool glPointParametersSupport; extern bool glBlendEquationSupport; extern bool glSecondaryColorSupport; extern bool glTextureNonPowerOfTwo; #ifdef CHECK_GL_ERRORS #define GL_CHECK \ { \ GLenum err; \ if ( (err = glGetError()) != GL_NONE) \ printf( "GLError: %d at " __FILE__ "(%d)\n", err, __LINE__); \ } #else #define GL_CHECK glGetError(); #endif //CHECK_GL_ERRORS bool InitializeExtensions(); extern bool extensionsInitialized; #endif //GL_EXTENSIONS_H