From http://www.jwz.org/xscreensaver/xscreensaver-5.34.tar.gz
[xscreensaver] / hacks / glx / jwzglesI.h
1 /* xscreensaver, Copyright (c) 2012-2015 Jamie Zawinski <jwz@jwz.org>
2  *
3  * Permission to use, copy, modify, distribute, and sell this software and its
4  * documentation for any purpose is hereby granted without fee, provided that
5  * the above copyright notice appear in all copies and that both that
6  * copyright notice and this permission notice appear in supporting
7  * documentation.  No representations are made about the suitability of this
8  * software for any purpose.  It is provided "as is" without express or 
9  * implied warranty.
10  */
11
12 /* A compatibility shim to allow OpenGL 1.3 source code to work in an
13    OpenGLES environment, where almost every OpenGL 1.3 function has
14    been "deprecated".  See jwzgles.c for details.
15  */
16
17 #ifndef __JWZGLES_I_H__
18 #define __JWZGLES_I_H__
19
20 #ifdef GL_VERSION_ES_CM_1_0  /* compiling against OpenGLES 1.x */
21
22 /* These OpenGL 1.3 constants are not present in OpenGLES 1.
23    Fortunately, it looks like they didn't re-use any of the numbers,
24    so we can just keep using the OpenGL 1.3 values.  I'm actually
25    kind of shocked that the GLES folks passed up that opportunity
26    for further clusterfuckery.
27  */
28 # define GLdouble double
29
30 # define GL_ACCUM_BUFFER_BIT                    0x00000200
31 # define GL_ALL_ATTRIB_BITS                     0x000FFFFF
32 # define GL_AUTO_NORMAL                         0x0D80
33 # define GL_BLEND_SRC_ALPHA                     0x80CB
34 # define GL_C3F_V3F                             0x2A24
35 # define GL_C4F_N3F_V3F                         0x2A26
36 # define GL_C4UB_V2F                            0x2A22
37 # define GL_C4UB_V3F                            0x2A23
38 # define GL_CLAMP                               0x2900
39 # define GL_COLOR_BUFFER_BIT                    0x00004000
40 # define GL_COLOR_MATERIAL_FACE                 0x0B55
41 # define GL_COLOR_MATERIAL_PARAMETER            0x0B56
42 # define GL_COMPILE                             0x1300
43 # define GL_CURRENT_BIT                         0x00000001
44 # define GL_DEPTH_BUFFER_BIT                    0x00000100
45 # define GL_DOUBLEBUFFER                        0x0C32
46 # define GL_ENABLE_BIT                          0x00002000
47 # define GL_EVAL_BIT                            0x00010000
48 # define GL_EYE_LINEAR                          0x2400
49 # define GL_EYE_PLANE                           0x2502
50 # define GL_FEEDBACK                            0x1C01
51 # define GL_FILL                                0x1B02
52 # define GL_FOG_BIT                             0x00000080
53 # define GL_HINT_BIT                            0x00008000
54 # define GL_INTENSITY                           0x8049
55 # define GL_LIGHTING_BIT                        0x00000040
56 # define GL_LIGHT_MODEL_COLOR_CONTROL           0x81F8
57 # define GL_LIGHT_MODEL_LOCAL_VIEWER            0x0B51
58 # define GL_LINE                                0x1B01
59 # define GL_LINE_BIT                            0x00000004
60 # define GL_LIST_BIT                            0x00020000
61 # define GL_N3F_V3F                             0x2A25
62 # define GL_OBJECT_LINEAR                       0x2401
63 # define GL_OBJECT_PLANE                        0x2501
64 # define GL_PIXEL_MODE_BIT                      0x00000020
65 # define GL_POINT_BIT                           0x00000002
66 # define GL_POLYGON                             0x0009
67 # define GL_POLYGON_BIT                         0x00000008
68 # define GL_POLYGON_MODE                        0x0B40
69 # define GL_POLYGON_SMOOTH                      0x0B41
70 # define GL_POLYGON_STIPPLE                     0x0B42
71 # define GL_POLYGON_STIPPLE_BIT                 0x00000010
72 # define GL_Q                                   0x2003
73 # define GL_QUADS                               0x0007
74 # define GL_QUAD_STRIP                          0x0008
75 # define GL_R                                   0x2002
76 # define GL_RENDER                              0x1C00
77 # define GL_RGBA_MODE                           0x0C31
78 # define GL_S                                   0x2000
79 # define GL_SCISSOR_BIT                         0x00080000
80 # define GL_SELECT                              0x1C02
81 # define GL_SEPARATE_SPECULAR_COLOR             0x81FA
82 # define GL_SINGLE_COLOR                        0x81F9
83 # define GL_SPHERE_MAP                          0x2402
84 # define GL_STENCIL_BUFFER_BIT                  0x00000400
85 # define GL_T                                   0x2001
86 # define GL_T2F_C3F_V3F                         0x2A2A
87 # define GL_T2F_C4F_N3F_V3F                     0x2A2C
88 # define GL_T2F_C4UB_V3F                        0x2A29
89 # define GL_T2F_N3F_V3F                         0x2A2B
90 # define GL_T2F_V3F                             0x2A27
91 # define GL_T4F_C4F_N3F_V4F                     0x2A2D
92 # define GL_T4F_V4F                             0x2A28
93 # define GL_TEXTURE_1D                          0x0DE0
94 # define GL_TEXTURE_ALPHA_SIZE                  0x805F
95 # define GL_TEXTURE_BIT                         0x00040000
96 # define GL_TEXTURE_BLUE_SIZE                   0x805E
97 # define GL_TEXTURE_BORDER                      0x1005
98 # define GL_TEXTURE_BORDER_COLOR                0x1004
99 # define GL_TEXTURE_COMPONENTS                  0x1003
100 # define GL_TEXTURE_GEN_MODE                    0x2500
101 # define GL_TEXTURE_GEN_Q                       0x0C63
102 # define GL_TEXTURE_GEN_R                       0x0C62
103 # define GL_TEXTURE_GEN_S                       0x0C60
104 # define GL_TEXTURE_GEN_T                       0x0C61
105 # define GL_TEXTURE_GREEN_SIZE                  0x805D
106 # define GL_TEXTURE_HEIGHT                      0x1001
107 # define GL_TEXTURE_INTENSITY_SIZE              0x8061
108 # define GL_TEXTURE_LUMINANCE_SIZE              0x8060
109 # define GL_TEXTURE_RED_SIZE                    0x805C
110 # define GL_TEXTURE_WIDTH                       0x1000
111 # define GL_TRANSFORM_BIT                       0x00001000
112 # define GL_UNPACK_ROW_LENGTH                   0x0CF2
113 # define GL_UNSIGNED_INT_8_8_8_8_REV            0x8367
114 # define GL_V2F                                 0x2A20
115 # define GL_V3F                                 0x2A21
116 # define GL_VIEWPORT_BIT                        0x00000800
117 # define GL_INT                                 0x1404
118 # define GL_DOUBLE                              0x140A
119
120 #endif
121
122
123 extern void jwzgles_reset (void);
124
125
126 /* Prototypes for the things re-implemented in jwzgles.c 
127  */
128
129 extern int  jwzgles_glGenLists (int n);
130 extern void jwzgles_glNewList (int id, int mode);
131 extern void jwzgles_glEndList (void);
132 extern void jwzgles_glDeleteLists (int list, int range);
133 extern void jwzgles_glBegin (int mode);
134 extern void jwzgles_glNormal3fv (const GLfloat *);
135 extern void jwzgles_glNormal3f (GLfloat x, GLfloat y, GLfloat z);
136 extern void jwzgles_glTexCoord1f (GLfloat s);
137 extern void jwzgles_glTexCoord2fv (const GLfloat *);
138 extern void jwzgles_glTexCoord2f (GLfloat s, GLfloat t);
139 extern void jwzgles_glTexCoord3fv (const GLfloat *);
140 extern void jwzgles_glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
141 extern void jwzgles_glTexCoord4fv (const GLfloat *);
142 extern void jwzgles_glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
143 extern void jwzgles_glVertex2f (GLfloat x, GLfloat y);
144 extern void jwzgles_glVertex2dv (const GLdouble *);
145 extern void jwzgles_glVertex2fv (const GLfloat *);
146 extern void jwzgles_glVertex2i (GLint x, GLint y);
147 extern void jwzgles_glVertex3f (GLfloat x, GLfloat y, GLfloat z);
148 extern void jwzgles_glVertex3dv (const GLdouble *);
149 extern void jwzgles_glVertex3fv (const GLfloat *);
150 extern void jwzgles_glVertex3i (GLint x, GLint y, GLint z);
151 extern void jwzgles_glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
152 extern void jwzgles_glVertex4fv (const GLfloat *);
153 extern void jwzgles_glVertex4i (GLint x, GLint y, GLint z, GLint w);
154 extern void jwzgles_glEnd (void);
155 extern void jwzgles_glCallList (int id);
156 extern void jwzgles_glClearIndex(GLfloat c);
157 extern void jwzgles_glBitmap (GLsizei, GLsizei, GLfloat, GLfloat, GLfloat,
158                               GLfloat, const GLubyte *);
159 extern void jwzgles_glPushAttrib(int);
160 extern void jwzgles_glPopAttrib(void);
161
162
163 /* These functions are present in both OpenGL 1.3 and in OpenGLES 1,
164    but are allowed within glNewList/glEndList, so we must wrap them
165    to allow them to be recorded.
166  */
167 extern void jwzgles_glActiveTexture (GLuint);
168 extern void jwzgles_glBindTexture (GLuint, GLuint);
169 extern void jwzgles_glBlendFunc (GLuint, GLuint);
170 extern void jwzgles_glClear (GLuint);
171 extern void jwzgles_glClearColor (GLclampf, GLclampf, GLclampf, GLclampf);
172 extern void jwzgles_glClearStencil (GLuint);
173 extern void jwzgles_glColorMask (GLuint, GLuint, GLuint, GLuint);
174 extern void jwzgles_glCullFace (GLuint);
175 extern void jwzgles_glDepthFunc (GLuint);
176 extern void jwzgles_glDepthMask (GLuint);
177 extern void jwzgles_glDisable (GLuint);
178 extern void jwzgles_glDrawArrays (GLuint, GLuint, GLuint);
179 extern GLboolean jwzgles_glIsEnabled (GLuint);
180 extern void jwzgles_glEnable (GLuint);
181 extern void jwzgles_glFrontFace (GLuint);
182 extern void jwzgles_glHint (GLuint, GLuint);
183 extern void jwzgles_glLineWidth (GLfloat);
184 extern void jwzgles_glLoadIdentity (void);
185 extern void jwzgles_glLogicOp (GLuint);
186 extern void jwzgles_glMatrixMode (GLuint);
187 extern void jwzgles_glMultMatrixf (const GLfloat *);
188 extern void jwzgles_glPointSize (GLfloat);
189 extern void jwzgles_glPolygonOffset (GLfloat, GLfloat);
190 extern void jwzgles_glPopMatrix (void);
191 extern void jwzgles_glPushMatrix (void);
192 extern void jwzgles_glScissor (GLuint, GLuint, GLuint, GLuint);
193 extern void jwzgles_glShadeModel (GLuint);
194 extern void jwzgles_glStencilFunc (GLuint, GLuint, GLuint);
195 extern void jwzgles_glStencilMask (GLuint);
196 extern void jwzgles_glStencilOp (GLuint, GLuint, GLuint);
197 extern void jwzgles_glViewport (GLuint, GLuint, GLuint, GLuint);
198 extern void jwzgles_glTranslatef (GLfloat, GLfloat, GLfloat);
199 extern void jwzgles_glRotatef (GLfloat, GLfloat, GLfloat, GLfloat);
200 extern void jwzgles_glRotated (GLdouble, GLdouble x, GLdouble y, GLdouble z);
201 extern void jwzgles_glScalef (GLfloat, GLfloat, GLfloat);
202 extern void jwzgles_glColor3f (GLfloat, GLfloat, GLfloat);
203 extern void jwzgles_glColor4f (GLfloat, GLfloat, GLfloat, GLfloat);
204 extern void jwzgles_glColor3fv (const GLfloat *);
205 extern void jwzgles_glColor4fv (const GLfloat *);
206 extern void jwzgles_glColor3s (GLshort, GLshort, GLshort);
207 extern void jwzgles_glColor4s (GLshort, GLshort, GLshort, GLshort);
208 extern void jwzgles_glColor3sv (const GLshort *);
209 extern void jwzgles_glColor4sv (const GLshort *);
210 extern void jwzgles_glColor3us (GLushort, GLushort, GLushort);
211 extern void jwzgles_glColor4us (GLushort, GLushort, GLushort, GLushort);
212 extern void jwzgles_glColor3usv (const GLushort *);
213 extern void jwzgles_glColor4usv (const GLushort *);
214 extern void jwzgles_glColor3d (GLdouble, GLdouble, GLdouble);
215 extern void jwzgles_glColor4d (GLdouble, GLdouble, GLdouble, GLdouble);
216 extern void jwzgles_glColor3dv (const GLdouble *);
217 extern void jwzgles_glColor4dv (const GLdouble *);
218 extern void jwzgles_glColor4i (GLint, GLint, GLint, GLint);
219 extern void jwzgles_glColor3i (GLint, GLint, GLint);
220 extern void jwzgles_glColor3iv (const GLint *);
221 extern void jwzgles_glColor4iv (const GLint *);
222 extern void jwzgles_glColor4ui (GLuint, GLuint, GLuint, GLuint);
223 extern void jwzgles_glColor3ui (GLuint, GLuint, GLuint);
224 extern void jwzgles_glColor3uiv (const GLuint *);
225 extern void jwzgles_glColor4uiv (const GLuint *);
226 extern void jwzgles_glColor4b (GLbyte, GLbyte, GLbyte, GLbyte);
227 extern void jwzgles_glColor3b (GLbyte, GLbyte, GLbyte);
228 extern void jwzgles_glColor4bv (const GLbyte *);
229 extern void jwzgles_glColor3bv (const GLbyte *);
230 extern void jwzgles_glColor4ub (GLubyte, GLubyte, GLubyte, GLubyte);
231 extern void jwzgles_glColor3ub (GLubyte, GLubyte, GLubyte);
232 extern void jwzgles_glColor4ubv (const GLubyte *);
233 extern void jwzgles_glColor3ubv (const GLubyte *);
234 extern void jwzgles_glMaterialf (GLuint, GLuint, GLfloat);
235 extern void jwzgles_glMateriali (GLuint, GLuint, GLuint);
236 extern void jwzgles_glMaterialfv (GLuint, GLuint, const GLfloat *);
237 extern void jwzgles_glMaterialiv (GLuint, GLuint, const GLint *);
238 extern void jwzgles_glFinish (void);
239 extern void jwzgles_glFlush (void);
240 extern void jwzgles_glPixelStorei (GLuint, GLuint);
241 extern void jwzgles_glEnableClientState (GLuint);
242 extern void jwzgles_glDisableClientState (GLuint);
243
244 extern void jwzgles_glInitNames (void);
245 extern void jwzgles_glPushName (GLuint);
246 extern GLuint jwzgles_glPopName (void);
247 extern GLuint jwzgles_glRenderMode (GLuint);
248 extern void jwzgles_glSelectBuffer (GLsizei, GLuint *);
249 extern void jwzgles_glLightf (GLenum, GLenum, GLfloat);
250 extern void jwzgles_glLighti (GLenum, GLenum, GLint);
251 extern void jwzgles_glLightfv (GLenum, GLenum, const GLfloat *);
252 extern void jwzgles_glLightiv (GLenum, GLenum, const GLint *);
253 extern void jwzgles_glLightModelf (GLenum, GLfloat);
254 extern void jwzgles_glLightModeli (GLenum, GLint);
255 extern void jwzgles_glLightModelfv (GLenum, const GLfloat *);
256 extern void jwzgles_glLightModeliv (GLenum, const GLint *);
257 extern void jwzgles_glGenTextures (GLuint, GLuint *);
258 extern void jwzgles_glFrustum (GLfloat, GLfloat, GLfloat, GLfloat,
259                                GLfloat, GLfloat);
260 extern void jwzgles_glOrtho (GLfloat, GLfloat, GLfloat, GLfloat, 
261                              GLfloat, GLfloat);
262 extern void jwzgles_glTexImage1D (GLenum target, GLint level,
263                                   GLint internalFormat,
264                                   GLsizei width, GLint border,
265                                   GLenum format, GLenum type,
266                                   const GLvoid *pixels);
267 extern void jwzgles_glTexImage2D (GLenum target,
268                                   GLint         level,
269                                   GLint         internalFormat,
270                                   GLsizei       width,
271                                   GLsizei       height,
272                                   GLint         border,
273                                   GLenum        format,
274                                   GLenum        type,
275                                   const GLvoid *data);
276 extern void jwzgles_glTexSubImage2D (GLenum target, GLint level,
277                                      GLint xoffset, GLint yoffset,
278                                      GLsizei width, GLsizei height,
279                                      GLenum format, GLenum type,
280                                      const GLvoid *pixels);
281 extern void jwzgles_glCopyTexImage2D (GLenum target, GLint level, 
282                                       GLenum internalformat,
283                                       GLint x, GLint y, 
284                                       GLsizei width, GLsizei height, 
285                                       GLint border);
286 extern void jwzgles_glInterleavedArrays (GLenum, GLsizei, const GLvoid *);
287 extern void jwzgles_glTexEnvf (GLuint, GLuint, GLfloat);
288 extern void jwzgles_glTexEnvi (GLuint, GLuint, GLuint);
289 extern void jwzgles_glTexParameterf (GLuint, GLuint, GLfloat);
290 extern void jwzgles_glTexParameteri (GLuint, GLuint, GLuint);
291 extern void jwzgles_glTexGeni (GLenum, GLenum, GLint);
292 extern void jwzgles_glTexGenfv (GLenum, GLenum, const GLfloat *);
293 extern void jwzgles_glGetTexGenfv (GLenum, GLenum, GLfloat *);
294 extern void jwzgles_glRectf (GLfloat, GLfloat, GLfloat, GLfloat);
295 extern void jwzgles_glRecti (GLint, GLint, GLint, GLint);
296 extern void jwzgles_glLightModelfv (GLenum, const GLfloat *);
297 extern void jwzgles_glClearDepth (GLfloat);
298 extern GLboolean jwzgles_glIsList (GLuint);
299 extern void jwzgles_glColorMaterial (GLenum, GLenum);
300 extern void jwzgles_glPolygonMode (GLenum, GLenum);
301 extern void jwzgles_glFogf (GLenum, GLfloat);
302 extern void jwzgles_glFogi (GLenum, GLint);
303 extern void jwzgles_glFogfv (GLenum, const GLfloat *);
304 extern void jwzgles_glFogiv (GLenum, const GLint *);
305 extern void jwzgles_glAlphaFunc (GLenum, GLfloat);
306 extern void jwzgles_glClipPlane (GLenum, const GLdouble *);
307 extern void jwzgles_glDrawBuffer (GLenum);
308 extern void jwzgles_glDeleteTextures (GLuint, const GLuint *);
309
310 extern void jwzgles_gluPerspective (GLdouble fovy, GLdouble aspect, 
311                                     GLdouble near, GLdouble far);
312 extern void jwzgles_gluLookAt (GLfloat eyex, GLfloat eyey, GLfloat eyez,
313                                GLfloat centerx, GLfloat centery, 
314                                GLfloat centerz,
315                                GLfloat upx, GLfloat upy, GLfloat upz);
316 extern GLint jwzgles_gluProject (GLdouble objx, GLdouble objy, GLdouble objz, 
317                                  const GLdouble modelMatrix[16], 
318                                  const GLdouble projMatrix[16],
319                                  const GLint viewport[4],
320                                  GLdouble *winx, GLdouble *winy, 
321                                  GLdouble *winz);
322 extern int jwzgles_gluBuild2DMipmaps (GLenum target,
323                                       GLint internalFormat,
324                                       GLsizei width,
325                                       GLsizei height,
326                                       GLenum format,
327                                       GLenum type,
328                                       const GLvoid *data);
329 extern void jwzgles_glGetFloatv (GLenum pname, GLfloat *params);
330 extern void jwzgles_glGetPointerv (GLenum pname, GLvoid *params);
331 extern void jwzgles_glGetDoublev (GLenum pname, GLdouble *params);
332 extern void jwzgles_glGetIntegerv (GLenum pname, GLint *params);
333 extern void jwzgles_glGetBooleanv (GLenum pname, GLboolean *params);
334 extern void jwzgles_glVertexPointer (GLuint, GLuint, GLuint, const void *);
335 extern void jwzgles_glNormalPointer (GLenum, GLuint, const void *);
336 extern void jwzgles_glColorPointer (GLuint, GLuint, GLuint, const void *);
337 extern void jwzgles_glTexCoordPointer (GLuint, GLuint, GLuint, const void *);
338 extern void jwzgles_glBindBuffer (GLuint, GLuint);
339 extern void jwzgles_glBufferData (GLenum, GLsizeiptr, const void *, GLenum);
340 extern const char *jwzgles_gluErrorString (GLenum error);
341
342 #endif /* __JWZGLES_I_H__ */