| 1 | /****************************************************************************** |
| 2 | * Arachnoid Graphics Plugin for Mupen64Plus |
| 3 | * http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/ |
| 4 | * |
| 5 | * Copyright (C) 2009 Jon Ring |
| 6 | * Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson |
| 7 | * |
| 8 | * This program is free software; you can redistribute it and/or |
| 9 | * modify it under the terms of the GNU General Public License |
| 10 | * as published by the Free Software Foundation; either version 2 |
| 11 | * of the License, or (at your option) any later version. |
| 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | * GNU General Public License for more details. |
| 17 | * |
| 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program; if not, write to the Free Software |
| 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| 21 | *****************************************************************************/ |
| 22 | |
| 23 | #ifndef MULTI_TEXTURING_EXTENSION_H_ |
| 24 | #define MULTI_TEXTURING_EXTENSION_H_ |
| 25 | |
| 26 | #include "m64p.h" |
| 27 | #include "OpenGL.h" |
| 28 | |
| 29 | #ifndef GL_GLEXT_VERSION |
| 30 | //Multi Texturing Definitions |
| 31 | #if !defined(GL_ARB_multitexture) && !defined(HAVE_GLES) |
| 32 | #define GL_TEXTURE0_ARB 0x84C0 |
| 33 | #define GL_TEXTURE1_ARB 0x84C1 |
| 34 | #define GL_TEXTURE2_ARB 0x84C2 |
| 35 | #define GL_TEXTURE3_ARB 0x84C3 |
| 36 | #define GL_TEXTURE4_ARB 0x84C4 |
| 37 | #define GL_TEXTURE5_ARB 0x84C5 |
| 38 | #define GL_TEXTURE6_ARB 0x84C6 |
| 39 | #define GL_TEXTURE7_ARB 0x84C7 |
| 40 | #define GL_TEXTURE8_ARB 0x84C8 |
| 41 | #define GL_TEXTURE9_ARB 0x84C9 |
| 42 | #define GL_TEXTURE10_ARB 0x84CA |
| 43 | #define GL_TEXTURE11_ARB 0x84CB |
| 44 | #define GL_TEXTURE12_ARB 0x84CC |
| 45 | #define GL_TEXTURE13_ARB 0x84CD |
| 46 | #define GL_TEXTURE14_ARB 0x84CE |
| 47 | #define GL_TEXTURE15_ARB 0x84CF |
| 48 | #define GL_TEXTURE16_ARB 0x84D0 |
| 49 | #define GL_TEXTURE17_ARB 0x84D1 |
| 50 | #define GL_TEXTURE18_ARB 0x84D2 |
| 51 | #define GL_TEXTURE19_ARB 0x84D3 |
| 52 | #define GL_TEXTURE20_ARB 0x84D4 |
| 53 | #define GL_TEXTURE21_ARB 0x84D5 |
| 54 | #define GL_TEXTURE22_ARB 0x84D6 |
| 55 | #define GL_TEXTURE23_ARB 0x84D7 |
| 56 | #define GL_TEXTURE24_ARB 0x84D8 |
| 57 | #define GL_TEXTURE25_ARB 0x84D9 |
| 58 | #define GL_TEXTURE26_ARB 0x84DA |
| 59 | #define GL_TEXTURE27_ARB 0x84DB |
| 60 | #define GL_TEXTURE28_ARB 0x84DC |
| 61 | #define GL_TEXTURE29_ARB 0x84DD |
| 62 | #define GL_TEXTURE30_ARB 0x84DE |
| 63 | #define GL_TEXTURE31_ARB 0x84DF |
| 64 | #define GL_ACTIVE_TEXTURE_ARB 0x84E0 |
| 65 | #define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 |
| 66 | #define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 |
| 67 | #endif |
| 68 | |
| 69 | //Multitexturing Functions |
| 70 | #if !defined(GL_ARB_multitexture) && !defined(HAVE_GLES) |
| 71 | #define GL_ARB_multitexture 1 |
| 72 | #ifdef GL_GLEXT_PROTOTYPES |
| 73 | extern void APIENTRY glActiveTextureARB (GLenum); |
| 74 | extern void APIENTRY glClientActiveTextureARB (GLenum); |
| 75 | extern void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); |
| 76 | extern void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); |
| 77 | extern void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); |
| 78 | extern void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); |
| 79 | extern void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); |
| 80 | extern void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); |
| 81 | extern void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); |
| 82 | extern void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); |
| 83 | extern void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); |
| 84 | extern void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); |
| 85 | extern void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); |
| 86 | extern void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); |
| 87 | extern void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); |
| 88 | extern void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); |
| 89 | extern void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); |
| 90 | extern void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); |
| 91 | extern void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); |
| 92 | extern void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); |
| 93 | extern void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); |
| 94 | extern void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); |
| 95 | extern void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); |
| 96 | extern void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); |
| 97 | extern void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); |
| 98 | extern void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); |
| 99 | extern void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); |
| 100 | extern void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); |
| 101 | extern void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); |
| 102 | extern void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); |
| 103 | extern void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); |
| 104 | extern void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); |
| 105 | extern void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); |
| 106 | extern void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); |
| 107 | #endif /* GL_GLEXT_PROTOTYPES */ |
| 108 | typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); |
| 109 | typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); |
| 110 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); |
| 111 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); |
| 112 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); |
| 113 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); |
| 114 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); |
| 115 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); |
| 116 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); |
| 117 | typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); |
| 118 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); |
| 119 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); |
| 120 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); |
| 121 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); |
| 122 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); |
| 123 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); |
| 124 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); |
| 125 | typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); |
| 126 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); |
| 127 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); |
| 128 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); |
| 129 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); |
| 130 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); |
| 131 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); |
| 132 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); |
| 133 | typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); |
| 134 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); |
| 135 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); |
| 136 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); |
| 137 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); |
| 138 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); |
| 139 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); |
| 140 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); |
| 141 | typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); |
| 142 | |
| 143 | extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB; |
| 144 | extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB; |
| 145 | extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB; |
| 146 | #endif |
| 147 | #endif |
| 148 | extern bool g_MultiTextureARBSupport; |
| 149 | |
| 150 | //Function for initializing multitexturing extensions |
| 151 | bool initializeMultiTexturingExtensions(); |
| 152 | |
| 153 | #endif |