1 #pragma once 2 // Description: 3 // Wrapper for GL_ARB_multitexture extension. 4 // 5 // Copyright (C) 2001 Frank Becker 6 // 7 // This program is free software; you can redistribute it and/or modify it under 8 // the terms of the GNU General Public License as published by the Free Software 9 // Foundation; either version 2 of the License, or (at your option) any later 10 // version. 11 // 12 // This program is distributed in the hope that it will be useful, but WITHOUT 13 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14 // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details 15 // 16 17 #ifdef WIN32 18 #define WINAPI 19 #endif 20 21 #include "GLExtension.hpp" 22 23 typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); 24 typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); 25 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); 26 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); 27 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); 28 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); 29 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); 30 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); 31 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); 32 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); 33 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); 34 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); 35 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); 36 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); 37 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); 38 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); 39 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); 40 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); 41 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); 42 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); 43 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); 44 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); 45 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); 46 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); 47 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); 48 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); 49 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 50 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); 51 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 52 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); 53 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); 54 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); 55 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 56 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); 57 58 class GLMultiTexture: public GLExtension 59 { 60 public: 61 GLMultiTexture( void); getName(void)62 virtual const char *getName( void){ return "GL_ARB_multitexture ";} 63 glActiveTextureARB(GLenum tex)64 static void glActiveTextureARB( GLenum tex){ _glActiveTextureARB(tex);} glClientActiveTextureARB(GLenum x)65 static void glClientActiveTextureARB (GLenum x){ _glClientActiveTextureARB(x);} glMultiTexCoord1dARB(GLenum a,GLdouble b)66 static void glMultiTexCoord1dARB (GLenum a, GLdouble b){ _glMultiTexCoord1dARB(a,b);} glMultiTexCoord1dvARB(GLenum a,const GLdouble * b)67 static void glMultiTexCoord1dvARB (GLenum a, const GLdouble *b){ _glMultiTexCoord1dvARB(a,b);} glMultiTexCoord1fARB(GLenum a,GLfloat b)68 static void glMultiTexCoord1fARB (GLenum a, GLfloat b){ _glMultiTexCoord1fARB(a,b);} glMultiTexCoord1fvARB(GLenum a,const GLfloat * b)69 static void glMultiTexCoord1fvARB (GLenum a, const GLfloat * b){ _glMultiTexCoord1fvARB(a,b);} glMultiTexCoord1iARB(GLenum a,GLint b)70 static void glMultiTexCoord1iARB (GLenum a, GLint b){ _glMultiTexCoord1iARB(a,b);} glMultiTexCoord1ivARB(GLenum a,const GLint * b)71 static void glMultiTexCoord1ivARB (GLenum a, const GLint * b){ _glMultiTexCoord1ivARB(a,b);} glMultiTexCoord1sARB(GLenum a,GLshort b)72 static void glMultiTexCoord1sARB (GLenum a, GLshort b){ _glMultiTexCoord1sARB(a,b);} glMultiTexCoord1svARB(GLenum a,const GLshort * b)73 static void glMultiTexCoord1svARB (GLenum a, const GLshort * b){ _glMultiTexCoord1svARB(a,b);} glMultiTexCoord2dARB(GLenum a,GLdouble b,GLdouble c)74 static void glMultiTexCoord2dARB (GLenum a, GLdouble b, GLdouble c){ _glMultiTexCoord2dARB(a,b,c);} glMultiTexCoord2dvARB(GLenum a,const GLdouble * b)75 static void glMultiTexCoord2dvARB (GLenum a, const GLdouble * b){ _glMultiTexCoord2dvARB(a,b);} glMultiTexCoord2fARB(GLenum a,GLfloat b,GLfloat c)76 static void glMultiTexCoord2fARB (GLenum a, GLfloat b, GLfloat c){ _glMultiTexCoord2fARB(a,b,c);} glMultiTexCoord2fvARB(GLenum a,const GLfloat * b)77 static void glMultiTexCoord2fvARB (GLenum a, const GLfloat *b){ _glMultiTexCoord2fvARB(a,b);} glMultiTexCoord2iARB(GLenum a,GLint b,GLint c)78 static void glMultiTexCoord2iARB (GLenum a, GLint b, GLint c){ _glMultiTexCoord2iARB(a,b,c);} glMultiTexCoord2ivARB(GLenum a,const GLint * b)79 static void glMultiTexCoord2ivARB (GLenum a, const GLint *b){ _glMultiTexCoord2ivARB(a,b);} glMultiTexCoord2sARB(GLenum a,GLshort b,GLshort c)80 static void glMultiTexCoord2sARB (GLenum a, GLshort b, GLshort c){ _glMultiTexCoord2sARB(a,b,c);} glMultiTexCoord2svARB(GLenum a,const GLshort * b)81 static void glMultiTexCoord2svARB (GLenum a, const GLshort *b){ _glMultiTexCoord2svARB(a,b);} glMultiTexCoord3dARB(GLenum a,GLdouble b,GLdouble c,GLdouble d)82 static void glMultiTexCoord3dARB (GLenum a, GLdouble b, GLdouble c, GLdouble d){ _glMultiTexCoord3dARB(a,b,c,d);} glMultiTexCoord3dvARB(GLenum a,const GLdouble * b)83 static void glMultiTexCoord3dvARB (GLenum a, const GLdouble *b){ _glMultiTexCoord3dvARB(a,b);} glMultiTexCoord3fARB(GLenum a,GLfloat b,GLfloat c,GLfloat d)84 static void glMultiTexCoord3fARB (GLenum a, GLfloat b, GLfloat c, GLfloat d){ _glMultiTexCoord3fARB(a,b,c,d);} glMultiTexCoord3fvARB(GLenum a,const GLfloat * b)85 static void glMultiTexCoord3fvARB (GLenum a, const GLfloat *b){ _glMultiTexCoord3fvARB(a,b);} glMultiTexCoord3iARB(GLenum a,GLint b,GLint c,GLint d)86 static void glMultiTexCoord3iARB (GLenum a, GLint b, GLint c, GLint d){ _glMultiTexCoord3iARB(a,b,c,d);} glMultiTexCoord3ivARB(GLenum a,const GLint * b)87 static void glMultiTexCoord3ivARB (GLenum a, const GLint *b){ _glMultiTexCoord3ivARB(a,b);} glMultiTexCoord3sARB(GLenum a,GLshort b,GLshort c,GLshort d)88 static void glMultiTexCoord3sARB (GLenum a, GLshort b, GLshort c, GLshort d){ _glMultiTexCoord3sARB(a,b,c,d);} glMultiTexCoord3svARB(GLenum a,const GLshort * b)89 static void glMultiTexCoord3svARB (GLenum a, const GLshort *b){ _glMultiTexCoord3svARB(a,b);} glMultiTexCoord4dARB(GLenum a,GLdouble b,GLdouble c,GLdouble d,GLdouble e)90 static void glMultiTexCoord4dARB (GLenum a, GLdouble b, GLdouble c, GLdouble d, GLdouble e){ _glMultiTexCoord4dARB(a,b,c,d,e);} glMultiTexCoord4dvARB(GLenum a,const GLdouble * b)91 static void glMultiTexCoord4dvARB (GLenum a, const GLdouble *b){ _glMultiTexCoord4dvARB(a,b);} glMultiTexCoord4fARB(GLenum a,GLfloat b,GLfloat c,GLfloat d,GLfloat e)92 static void glMultiTexCoord4fARB (GLenum a, GLfloat b, GLfloat c, GLfloat d, GLfloat e){ _glMultiTexCoord4fARB(a,b,c,d,e);} glMultiTexCoord4fvARB(GLenum a,const GLfloat * b)93 static void glMultiTexCoord4fvARB (GLenum a, const GLfloat *b){ _glMultiTexCoord4fvARB(a,b);} glMultiTexCoord4iARB(GLenum a,GLint b,GLint c,GLint d,GLint e)94 static void glMultiTexCoord4iARB (GLenum a, GLint b, GLint c, GLint d, GLint e){ _glMultiTexCoord4iARB(a,b,c,d,e);} glMultiTexCoord4ivARB(GLenum a,const GLint * b)95 static void glMultiTexCoord4ivARB (GLenum a, const GLint *b){ _glMultiTexCoord4ivARB(a,b);} glMultiTexCoord4sARB(GLenum a,GLshort b,GLshort c,GLshort d,GLshort e)96 static void glMultiTexCoord4sARB (GLenum a, GLshort b, GLshort c, GLshort d, GLshort e){ _glMultiTexCoord4sARB(a,b,c,d,e);} glMultiTexCoord4svARB(GLenum a,const GLshort * b)97 static void glMultiTexCoord4svARB (GLenum a, const GLshort *b){ _glMultiTexCoord4svARB(a,b);} 98 99 private: 100 static PFNGLACTIVETEXTUREARBPROC _glActiveTextureARB; 101 static PFNGLCLIENTACTIVETEXTUREARBPROC _glClientActiveTextureARB; 102 static PFNGLMULTITEXCOORD1DARBPROC _glMultiTexCoord1dARB; 103 static PFNGLMULTITEXCOORD1DVARBPROC _glMultiTexCoord1dvARB; 104 static PFNGLMULTITEXCOORD1FARBPROC _glMultiTexCoord1fARB; 105 static PFNGLMULTITEXCOORD1FVARBPROC _glMultiTexCoord1fvARB; 106 static PFNGLMULTITEXCOORD1IARBPROC _glMultiTexCoord1iARB; 107 static PFNGLMULTITEXCOORD1IVARBPROC _glMultiTexCoord1ivARB; 108 static PFNGLMULTITEXCOORD1SARBPROC _glMultiTexCoord1sARB; 109 static PFNGLMULTITEXCOORD1SVARBPROC _glMultiTexCoord1svARB; 110 static PFNGLMULTITEXCOORD2DARBPROC _glMultiTexCoord2dARB; 111 static PFNGLMULTITEXCOORD2DVARBPROC _glMultiTexCoord2dvARB; 112 static PFNGLMULTITEXCOORD2FARBPROC _glMultiTexCoord2fARB; 113 static PFNGLMULTITEXCOORD2FVARBPROC _glMultiTexCoord2fvARB; 114 static PFNGLMULTITEXCOORD2IARBPROC _glMultiTexCoord2iARB; 115 static PFNGLMULTITEXCOORD2IVARBPROC _glMultiTexCoord2ivARB; 116 static PFNGLMULTITEXCOORD2SARBPROC _glMultiTexCoord2sARB; 117 static PFNGLMULTITEXCOORD2SVARBPROC _glMultiTexCoord2svARB; 118 static PFNGLMULTITEXCOORD3DARBPROC _glMultiTexCoord3dARB; 119 static PFNGLMULTITEXCOORD3DVARBPROC _glMultiTexCoord3dvARB; 120 static PFNGLMULTITEXCOORD3FARBPROC _glMultiTexCoord3fARB; 121 static PFNGLMULTITEXCOORD3FVARBPROC _glMultiTexCoord3fvARB; 122 static PFNGLMULTITEXCOORD3IARBPROC _glMultiTexCoord3iARB; 123 static PFNGLMULTITEXCOORD3IVARBPROC _glMultiTexCoord3ivARB; 124 static PFNGLMULTITEXCOORD3SARBPROC _glMultiTexCoord3sARB; 125 static PFNGLMULTITEXCOORD3SVARBPROC _glMultiTexCoord3svARB; 126 static PFNGLMULTITEXCOORD4DARBPROC _glMultiTexCoord4dARB; 127 static PFNGLMULTITEXCOORD4DVARBPROC _glMultiTexCoord4dvARB; 128 static PFNGLMULTITEXCOORD4FARBPROC _glMultiTexCoord4fARB; 129 static PFNGLMULTITEXCOORD4FVARBPROC _glMultiTexCoord4fvARB; 130 static PFNGLMULTITEXCOORD4IARBPROC _glMultiTexCoord4iARB; 131 static PFNGLMULTITEXCOORD4IVARBPROC _glMultiTexCoord4ivARB; 132 static PFNGLMULTITEXCOORD4SARBPROC _glMultiTexCoord4sARB; 133 static PFNGLMULTITEXCOORD4SVARBPROC _glMultiTexCoord4svARB; 134 135 static GLint _numTexUnits; 136 }; 137