include/SDL_opengl.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 06 Mar 2002 11:23:08 +0000
changeset 297 f6ffac90895c
parent 251 b8688cfdc232
child 312 d62b9aeaf0ea
permissions -rw-r--r--
Updated copyright information for 2002
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Library General Public
     7     License as published by the Free Software Foundation; either
     8     version 2 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Library General Public License for more details.
    14 
    15     You should have received a copy of the GNU Library General Public
    16     License along with this library; if not, write to the Free
    17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 
    23 #ifdef SAVE_RCSID
    24 static char rcsid =
    25  "@(#) $Id$";
    26 #endif
    27 
    28 /* This is a simple file to encapsulate the OpenGL API headers */
    29 
    30 #ifdef WIN32
    31 #define WIN32_LEAN_AND_MEAN
    32 #include <windows.h>
    33 #endif
    34 #if defined(__APPLE__) && defined(__MACH__)
    35 #include <OpenGL/gl.h>	/* Header File For The OpenGL Library */
    36 #include <OpenGL/glu.h>	/* Header File For The GLU Library */
    37 #else
    38 #ifndef NO_SDL_GLEXT
    39 #define __glext_h_  /* Don't let gl.h include glext.h */
    40 #endif
    41 #include <GL/gl.h>	/* Header File For The OpenGL Library */
    42 #include <GL/glu.h>	/* Header File For The GLU Library */
    43 #ifndef NO_SDL_GLEXT
    44 #undef __glext_h_
    45 #endif
    46 #endif
    47 
    48 /* This file taken from "GLext.h" from the Jeff Molofee OpenGL tutorials.
    49    It is included here because glext.h is not available on some systems.
    50    If you don't want this version included, simply define "NO_SDL_GLEXT"
    51  */
    52 #ifndef NO_SDL_GLEXT
    53 #if !defined(__glext_h_) && !defined(GL_GLEXT_LEGACY)
    54 #define __glext_h_
    55 
    56 #ifdef __cplusplus
    57 extern "C" {
    58 #endif
    59 
    60 #ifndef APIENTRY
    61 #define APIENTRY
    62 #endif
    63 
    64 /*
    65 ** Copyright 1992-1999 Silicon Graphics, Inc.
    66 ** All Rights Reserved.
    67 **
    68 ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
    69 ** the contents of this file may not be disclosed to third parties, copied or
    70 ** duplicated in any form, in whole or in part, without the prior written
    71 ** permission of Silicon Graphics, Inc.
    72 **
    73 ** RESTRICTED RIGHTS LEGEND:
    74 ** Use, duplication or disclosure by the Government is subject to restrictions
    75 ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
    76 ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
    77 ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
    78 ** rights reserved under the Copyright Laws of the United States.
    79 */
    80 
    81 #define GL_ARB_multitexture                 1
    82 #define GL_EXT_abgr                         1
    83 #define GL_EXT_bgra                         1
    84 #define GL_EXT_clip_volume_hint             1
    85 #define GL_EXT_compiled_vertex_array        1
    86 #define GL_EXT_cull_vertex                  1
    87 #define GL_EXT_packed_pixels                1
    88 #define GL_EXT_point_parameters             1
    89 #define GL_EXT_stencil_wrap                 1
    90 #define GL_EXT_texture_env_add              1
    91 #define GL_EXT_texture_env_combine          1
    92 #define GL_EXT_vertex_array                 1
    93 #define GL_NV_texgen_reflection             1
    94 #define GL_NV_texture_env_combine4          1
    95 #define GL_WIN_swap_hint                    1
    96 
    97 /* EXT_abgr */
    98 #define GL_ABGR_EXT                         0x8000
    99 
   100 /* EXT_packed_pixels */
   101 #define GL_UNSIGNED_BYTE_3_3_2_EXT          0x8032
   102 #define GL_UNSIGNED_SHORT_4_4_4_4_EXT       0x8033
   103 #define GL_UNSIGNED_SHORT_5_5_5_1_EXT       0x8034
   104 #define GL_UNSIGNED_INT_8_8_8_8_EXT         0x8035
   105 #define GL_UNSIGNED_INT_10_10_10_2_EXT      0x8036
   106 
   107 /* EXT_vertex_array */
   108 #define GL_VERTEX_ARRAY_EXT                 0x8074
   109 #define GL_NORMAL_ARRAY_EXT                 0x8075
   110 #define GL_COLOR_ARRAY_EXT                  0x8076
   111 #define GL_INDEX_ARRAY_EXT                  0x8077
   112 #define GL_TEXTURE_COORD_ARRAY_EXT          0x8078
   113 #define GL_EDGE_FLAG_ARRAY_EXT              0x8079
   114 #define GL_VERTEX_ARRAY_SIZE_EXT            0x807A
   115 #define GL_VERTEX_ARRAY_TYPE_EXT            0x807B
   116 #define GL_VERTEX_ARRAY_STRIDE_EXT          0x807C
   117 #define GL_VERTEX_ARRAY_COUNT_EXT           0x807D
   118 #define GL_NORMAL_ARRAY_TYPE_EXT            0x807E
   119 #define GL_NORMAL_ARRAY_STRIDE_EXT          0x807F
   120 #define GL_NORMAL_ARRAY_COUNT_EXT           0x8080
   121 #define GL_COLOR_ARRAY_SIZE_EXT             0x8081
   122 #define GL_COLOR_ARRAY_TYPE_EXT             0x8082
   123 #define GL_COLOR_ARRAY_STRIDE_EXT           0x8083
   124 #define GL_COLOR_ARRAY_COUNT_EXT            0x8084
   125 #define GL_INDEX_ARRAY_TYPE_EXT             0x8085
   126 #define GL_INDEX_ARRAY_STRIDE_EXT           0x8086
   127 #define GL_INDEX_ARRAY_COUNT_EXT            0x8087
   128 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT     0x8088
   129 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT     0x8089
   130 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT   0x808A
   131 #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT    0x808B
   132 #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT       0x808C
   133 #define GL_EDGE_FLAG_ARRAY_COUNT_EXT        0x808D
   134 #define GL_VERTEX_ARRAY_POINTER_EXT         0x808E
   135 #define GL_NORMAL_ARRAY_POINTER_EXT         0x808F
   136 #define GL_COLOR_ARRAY_POINTER_EXT          0x8090
   137 #define GL_INDEX_ARRAY_POINTER_EXT          0x8091
   138 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT  0x8092
   139 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT      0x8093
   140 
   141 /* EXT_bgra */
   142 #define GL_BGR_EXT                          0x80E0
   143 #define GL_BGRA_EXT                         0x80E1
   144 
   145 /* EXT_clip_volume_hint */
   146 #define GL_CLIP_VOLUME_CLIPPING_HINT_EXT    0x80F0
   147 
   148 /* EXT_point_parameters */
   149 #define GL_POINT_SIZE_MIN_EXT               0x8126
   150 #define GL_POINT_SIZE_MAX_EXT               0x8127
   151 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT    0x8128
   152 #define GL_DISTANCE_ATTENUATION_EXT         0x8129
   153 
   154 /* EXT_compiled_vertex_array */
   155 #define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT     0x81A8
   156 #define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT     0x81A9
   157 
   158 /* EXT_cull_vertex */
   159 #define GL_CULL_VERTEX_EXT                  0x81AA
   160 #define GL_CULL_VERTEX_EYE_POSITION_EXT     0x81AB
   161 #define GL_CULL_VERTEX_OBJECT_POSITION_EXT  0x81AC
   162 
   163 /* ARB_multitexture */
   164 #define GL_ACTIVE_TEXTURE_ARB               0x84E0
   165 #define GL_CLIENT_ACTIVE_TEXTURE_ARB        0x84E1
   166 #define GL_MAX_TEXTURE_UNITS_ARB            0x84E2
   167 #define GL_TEXTURE0_ARB                     0x84C0
   168 #define GL_TEXTURE1_ARB                     0x84C1
   169 #define GL_TEXTURE2_ARB                     0x84C2
   170 #define GL_TEXTURE3_ARB                     0x84C3
   171 #define GL_TEXTURE4_ARB                     0x84C4
   172 #define GL_TEXTURE5_ARB                     0x84C5
   173 #define GL_TEXTURE6_ARB                     0x84C6
   174 #define GL_TEXTURE7_ARB                     0x84C7
   175 #define GL_TEXTURE8_ARB                     0x84C8
   176 #define GL_TEXTURE9_ARB                     0x84C9
   177 #define GL_TEXTURE10_ARB                    0x84CA
   178 #define GL_TEXTURE11_ARB                    0x84CB
   179 #define GL_TEXTURE12_ARB                    0x84CC
   180 #define GL_TEXTURE13_ARB                    0x84CD
   181 #define GL_TEXTURE14_ARB                    0x84CE
   182 #define GL_TEXTURE15_ARB                    0x84CF
   183 #define GL_TEXTURE16_ARB                    0x84D0
   184 #define GL_TEXTURE17_ARB                    0x84D1
   185 #define GL_TEXTURE18_ARB                    0x84D2
   186 #define GL_TEXTURE19_ARB                    0x84D3
   187 #define GL_TEXTURE20_ARB                    0x84D4
   188 #define GL_TEXTURE21_ARB                    0x84D5
   189 #define GL_TEXTURE22_ARB                    0x84D6
   190 #define GL_TEXTURE23_ARB                    0x84D7
   191 #define GL_TEXTURE24_ARB                    0x84D8
   192 #define GL_TEXTURE25_ARB                    0x84D9
   193 #define GL_TEXTURE26_ARB                    0x84DA
   194 #define GL_TEXTURE27_ARB                    0x84DB
   195 #define GL_TEXTURE28_ARB                    0x84DC
   196 #define GL_TEXTURE29_ARB                    0x84DD
   197 #define GL_TEXTURE30_ARB                    0x84DE
   198 #define GL_TEXTURE31_ARB                    0x84DF
   199 
   200 /* EXT_stencil_wrap */
   201 #define GL_INCR_WRAP_EXT                    0x8507
   202 #define GL_DECR_WRAP_EXT                    0x8508
   203 
   204 /* NV_texgen_reflection */
   205 #define GL_NORMAL_MAP_NV                    0x8511
   206 #define GL_REFLECTION_MAP_NV                0x8512
   207 
   208 /* EXT_texture_env_combine */
   209 #define GL_COMBINE_EXT                      0x8570
   210 #define GL_COMBINE_RGB_EXT                  0x8571
   211 #define GL_COMBINE_ALPHA_EXT                0x8572
   212 #define GL_RGB_SCALE_EXT                    0x8573
   213 #define GL_ADD_SIGNED_EXT                   0x8574
   214 #define GL_INTERPOLATE_EXT                  0x8575
   215 #define GL_CONSTANT_EXT                     0x8576
   216 #define GL_PRIMARY_COLOR_EXT                0x8577
   217 #define GL_PREVIOUS_EXT                     0x8578
   218 #define GL_SOURCE0_RGB_EXT                  0x8580
   219 #define GL_SOURCE1_RGB_EXT                  0x8581
   220 #define GL_SOURCE2_RGB_EXT                  0x8582
   221 #define GL_SOURCE0_ALPHA_EXT                0x8588
   222 #define GL_SOURCE1_ALPHA_EXT                0x8589
   223 #define GL_SOURCE2_ALPHA_EXT                0x858A
   224 #define GL_OPERAND0_RGB_EXT                 0x8590
   225 #define GL_OPERAND1_RGB_EXT                 0x8591
   226 #define GL_OPERAND2_RGB_EXT                 0x8592
   227 #define GL_OPERAND0_ALPHA_EXT               0x8598
   228 #define GL_OPERAND1_ALPHA_EXT               0x8599
   229 #define GL_OPERAND2_ALPHA_EXT               0x859A
   230 
   231 /* NV_texture_env_combine4 */
   232 #define GL_COMBINE4_NV                      0x8503
   233 #define GL_SOURCE3_RGB_NV                   0x8583
   234 #define GL_SOURCE3_ALPHA_NV                 0x858B
   235 #define GL_OPERAND3_RGB_NV                  0x8593
   236 #define GL_OPERAND3_ALPHA_NV                0x859B
   237 
   238 /*************************************************************/
   239 
   240 /* EXT_vertex_array */
   241 typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
   242 typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
   243 typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
   244 typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
   245 typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
   246 typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
   247 typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
   248 typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
   249 typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
   250 
   251 /* ARB_multitexture */
   252 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
   253 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
   254 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
   255 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
   256 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
   257 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
   258 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
   259 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
   260 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
   261 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
   262 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
   263 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
   264 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
   265 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
   266 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
   267 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
   268 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
   269 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
   270 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
   271 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
   272 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
   273 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
   274 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
   275 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
   276 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
   277 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
   278 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
   279 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
   280 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
   281 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
   282 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
   283 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
   284 typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target);
   285 typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum target);
   286 
   287 /* EXT_compiled_vertex_array */
   288 typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
   289 typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void);
   290 
   291 /* EXT_cull_vertex */
   292 typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params);
   293 typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params);
   294 
   295 /* WIN_swap_hint */
   296 typedef void (APIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
   297 
   298 /* EXT_point_parameter */
   299 typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
   300 typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
   301 
   302 #ifdef __cplusplus
   303 }
   304 #endif
   305 
   306 #endif /* __glext_h_ */
   307 #endif /* NO_SDL_GLEXT */