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