UFO: Alien Invasion
Doxygen documentation generating
r_gl.h
Go to the documentation of this file.
1 
6 /*
7 Copyright (C) 1997-2001 Id Software, Inc.
8 
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 
18 See the GNU General Public License for more details.
19 
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 
24 */
25 
26 #pragma once
27 
28 #ifdef ANDROID
29 #include "../../ports/android/r_gles_android.h"
30 #include <stdlib.h>
31 #else
32 #include <SDL_opengl.h>
33 #endif
34 
35 inline void R_DrawArrays (GLint first, GLsizei count) {
36 #ifdef GL_VERSION_ES_CM_1_0
37  const int cnt = count / 4;
38  for (int i = 0; i < cnt; i++)
39  glDrawArrays(GL_TRIANGLE_FAN, i * 4, 4);
40 #else
41  glDrawArrays(GL_QUADS, first, count);
42 #endif
43 }
44 
45 #ifdef GL_VERSION_ES_CM_1_0
46 /* glDrawElements() cannot be invoked with GL_UNSIGNED_INT on GLES */
47 typedef GLushort glElementIndex_t;
48 #define GL_ELEMENT_INDEX_TYPE GL_UNSIGNED_SHORT
49 
50 #define glOrtho glOrthof
51 #define glFrustum glFrustumf
52 #define glFogi glFogx
53 #define glDepthRange glDepthRangef
54 /* Stub, so that we won't clutter the code with #ifdefs */
55 #define glPolygonMode(x, y)
56 #else
58 #define GL_ELEMENT_INDEX_TYPE GL_UNSIGNED_INT
59 #endif
60 
62 #ifndef GL_READ_FRAMEBUFFER_EXT
63 #define GL_READ_FRAMEBUFFER_EXT 0x8CA8
64 #endif
65 
66 #ifndef GL_DRAW_FRAMEBUFFER_EXT
67 #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
68 #endif
69 
70 #ifndef QGL_EXTERN
71 #define QGL_EXTERN extern
72 #endif
73 
74 /* internally defined convenience constant */
75 /* @todo sanitize those */
76 #define GL_TANGENT_ARRAY -1
77 #define GL_NEXT_VERTEX_ARRAY -2
78 #define GL_NEXT_NORMAL_ARRAY -3
79 #define GL_NEXT_TANGENT_ARRAY -4
80 
81 /* multitexture */
82 QGL_EXTERN void (APIENTRY* qglActiveTexture)(GLenum texture);
83 QGL_EXTERN void (APIENTRY* qglClientActiveTexture)(GLenum texture);
84 
85 /* vertex buffer objects */
86 QGL_EXTERN void (APIENTRY* qglGenBuffers) (GLuint count, GLuint* id);
87 QGL_EXTERN void (APIENTRY* qglDeleteBuffers) (GLuint count, GLuint* id);
88 QGL_EXTERN void (APIENTRY* qglBindBuffer) (GLenum target, GLuint id);
89 QGL_EXTERN void (APIENTRY* qglBufferData) (GLenum target, GLsizei size, const GLvoid* data, GLenum usage);
90 
91 /* vertex attribute arrays */
92 QGL_EXTERN void (APIENTRY* qglEnableVertexAttribArray)(GLuint index);
93 QGL_EXTERN void (APIENTRY* qglDisableVertexAttribArray)(GLuint index);
95 
96 /* glsl vertex and fragment shaders and programs */
97 QGL_EXTERN GLuint (APIENTRY* qglCreateShader)(GLenum type);
98 QGL_EXTERN void (APIENTRY* qglDeleteShader)(GLuint id);
99 QGL_EXTERN void (APIENTRY* qglShaderSource)(GLuint id, GLuint count, GLchar** sources, GLuint* len);
100 QGL_EXTERN void (APIENTRY* qglCompileShader)(GLuint id);
102 QGL_EXTERN void (APIENTRY* qglGetShaderInfoLog)(GLuint id, GLuint maxlen, GLuint* len, GLchar* dest);
103 QGL_EXTERN GLuint (APIENTRY* qglCreateProgram)(void);
104 QGL_EXTERN void (APIENTRY* qglDeleteProgram)(GLuint id);
105 QGL_EXTERN void (APIENTRY* qglAttachShader)(GLuint prog, GLuint shader);
106 QGL_EXTERN void (APIENTRY* qglDetachShader)(GLuint prog, GLuint shader);
107 QGL_EXTERN void (APIENTRY* qglLinkProgram)(GLuint id);
108 QGL_EXTERN void (APIENTRY* qglUseProgram)(GLuint id);
109 QGL_EXTERN void (APIENTRY* qglGetProgramiv)(GLuint id, GLenum field, GLuint* dest);
110 QGL_EXTERN void (APIENTRY* qglGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
111 QGL_EXTERN void (APIENTRY* qglGetProgramInfoLog)(GLuint id, GLuint maxlen, GLuint* len, GLchar* dest);
112 QGL_EXTERN GLint (APIENTRY* qglGetUniformLocation)(GLuint id, const GLchar* name);
113 QGL_EXTERN void (APIENTRY* qglUniform1i)(GLint location, GLint i);
114 QGL_EXTERN void (APIENTRY* qglUniform1f)(GLint location, GLfloat f);
115 QGL_EXTERN void (APIENTRY* qglUniform1fv)(GLint location, int count, GLfloat* f);
116 QGL_EXTERN void (APIENTRY* qglUniform2fv)(GLint location, int count, GLfloat* f);
117 QGL_EXTERN void (APIENTRY* qglUniform3fv)(GLint location, int count, GLfloat* f);
118 QGL_EXTERN void (APIENTRY* qglUniform4fv)(GLint location, int count, GLfloat* f);
119 QGL_EXTERN GLint (APIENTRY* qglGetAttribLocation)(GLuint id, const GLchar* name);
120 QGL_EXTERN void (APIENTRY* qglUniformMatrix4fv)(GLint location, int count, GLboolean transpose, GLfloat* v);
121 
122 /* frame buffer objects (fbo) */
123 QGL_EXTERN GLboolean (APIENTRY* qglIsRenderbufferEXT) (GLuint);
124 QGL_EXTERN void (APIENTRY* qglBindRenderbufferEXT) (GLenum, GLuint);
125 QGL_EXTERN void (APIENTRY* qglDeleteRenderbuffersEXT) (GLsizei, const GLuint*);
126 QGL_EXTERN void (APIENTRY* qglGenRenderbuffersEXT) (GLsizei, GLuint*);
127 QGL_EXTERN void (APIENTRY* qglRenderbufferStorageEXT) (GLenum, GLenum, GLsizei, GLsizei);
128 QGL_EXTERN void (APIENTRY* qglRenderbufferStorageMultisampleEXT) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
129 QGL_EXTERN void (APIENTRY* qglGetRenderbufferParameterivEXT) (GLenum, GLenum, GLint*);
130 QGL_EXTERN GLboolean (APIENTRY* qglIsFramebufferEXT) (GLuint);
131 QGL_EXTERN void (APIENTRY* qglBindFramebufferEXT) (GLenum, GLuint);
132 QGL_EXTERN void (APIENTRY* qglDeleteFramebuffersEXT) (GLsizei, const GLuint*);
133 QGL_EXTERN void (APIENTRY* qglGenFramebuffersEXT) (GLsizei, GLuint*);
134 QGL_EXTERN GLenum (APIENTRY* qglCheckFramebufferStatusEXT) (GLenum);
135 QGL_EXTERN void (APIENTRY* qglFramebufferTexture1DEXT) (GLenum, GLenum, GLenum, GLuint, GLint);
136 QGL_EXTERN void (APIENTRY* qglFramebufferTexture2DEXT) (GLenum, GLenum, GLenum, GLuint, GLint);
137 QGL_EXTERN void (APIENTRY* qglFramebufferTexture3DEXT) (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
138 QGL_EXTERN void (APIENTRY* qglFramebufferRenderbufferEXT) (GLenum, GLenum, GLenum, GLuint);
139 QGL_EXTERN void (APIENTRY* qglGetFramebufferAttachmentParameterivEXT) (GLenum, GLenum, GLenum, GLint*);
140 QGL_EXTERN void (APIENTRY* qglGenerateMipmapEXT) (GLenum);
141 QGL_EXTERN void (APIENTRY* qglDrawBuffers) (GLsizei, const GLenum*);
143 
144 /* multitexture */
145 typedef void (APIENTRY* ActiveTexture_t)(GLenum texture);
147 
148 /* vertex buffer objects */
151 typedef void (APIENTRY* BindBuffer_t) (GLenum target, GLuint id);
152 typedef void (APIENTRY* BufferData_t) (GLenum target, GLsizei size, const GLvoid* data, GLenum usage);
153 
154 /* vertex attribute arrays */
158 
159 /* glsl vertex and fragment shaders and programs */
175 typedef GLint (APIENTRY* GetUniformLocation_t)(GLuint id, const GLchar* name);
176 typedef void (APIENTRY* Uniform1i_t)(GLint location, GLint i);
177 typedef void (APIENTRY* Uniform1f_t)(GLint location, GLfloat f);
178 typedef void (APIENTRY* Uniform1fv_t)(GLint location, int count, GLfloat* f);
179 typedef void (APIENTRY* Uniform2fv_t)(GLint location, int count, GLfloat* f);
180 typedef void (APIENTRY* Uniform3fv_t)(GLint location, int count, GLfloat* f);
181 typedef void (APIENTRY* Uniform4fv_t)(GLint location, int count, GLfloat* f);
182 typedef GLint (APIENTRY* GetAttribLocation_t)(GLuint id, const GLchar* name);
183 typedef void (APIENTRY* UniformMatrix4fv_t)(GLint location, int count, GLboolean transpose, GLfloat* v);
184 
185 /* frame buffer objects (fbo) */
204 typedef void (APIENTRY* DrawBuffers_t) (GLsizei, const GLenum*);
QGL_EXTERN const GLuint *QGL_EXTERN GLuint *QGL_EXTERN GLsizei
Definition: r_gl.h:127
GLenum(APIENTRY * CheckFramebufferStatusEXT_t)(GLenum)
Definition: r_gl.h:197
void(APIENTRY * Uniform3fv_t)(GLint location, int count, GLfloat *f)
Definition: r_gl.h:180
void(APIENTRY * BindBuffer_t)(GLenum target, GLuint id)
Definition: r_gl.h:151
void(APIENTRY * DetachShader_t)(GLuint prog, GLuint shader)
Definition: r_gl.h:169
void(APIENTRY * Uniform1i_t)(GLint location, GLint i)
Definition: r_gl.h:176
QGL_EXTERN GLint GLenum type
Definition: r_gl.h:94
QGL_EXTERN GLuint
Definition: r_gl.h:124
void(APIENTRY * GetShaderInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
Definition: r_gl.h:165
QGL_EXTERN GLuint GLchar ** sources
Definition: r_gl.h:99
void(APIENTRY * DisableVertexAttribArray_t)(GLuint index)
Definition: r_gl.h:156
QGL_EXTERN GLint GLenum GLboolean GLsizei const GLvoid * pointer
Definition: r_gl.h:94
QGL_EXTERN GLint GLenum GLboolean normalized
Definition: r_gl.h:94
GLuint(APIENTRY * CreateShader_t)(GLenum type)
Definition: r_gl.h:160
QGL_EXTERN GLenum field
Definition: r_gl.h:101
void(APIENTRY * LinkProgram_t)(GLuint id)
Definition: r_gl.h:170
void(APIENTRY * DeleteProgram_t)(GLuint id)
Definition: r_gl.h:167
void(APIENTRY * ClientActiveTexture_t)(GLenum texture)
Definition: r_gl.h:146
QGL_EXTERN GLsizei const GLvoid * data
Definition: r_gl.h:89
void(APIENTRY * CompileShader_t)(GLuint id)
Definition: r_gl.h:163
void(APIENTRY * FramebufferTexture1DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint)
Definition: r_gl.h:198
void(APIENTRY * UniformMatrix4fv_t)(GLint location, int count, GLboolean transpose, GLfloat *v)
Definition: r_gl.h:183
QGL_EXTERN GLuint * id
Definition: r_gl.h:86
GLboolean(APIENTRY * IsFramebufferEXT_t)(GLuint)
Definition: r_gl.h:193
void(APIENTRY * BindRenderbufferEXT_t)(GLenum, GLuint)
Definition: r_gl.h:187
void(APIENTRY * BufferData_t)(GLenum target, GLsizei size, const GLvoid *data, GLenum usage)
Definition: r_gl.h:152
void(APIENTRY * DeleteFramebuffersEXT_t)(GLsizei, const GLuint *)
Definition: r_gl.h:195
void(APIENTRY * RenderbufferStorageMultisampleEXT_t)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)
Definition: r_gl.h:191
void(APIENTRY * GenFramebuffersEXT_t)(GLsizei, GLuint *)
Definition: r_gl.h:196
QGL_EXTERN GLuint maxlen
Definition: r_gl.h:102
void(APIENTRY * DeleteShader_t)(GLuint id)
Definition: r_gl.h:161
QGL_EXTERN GLuint shader
Definition: r_gl.h:105
void(APIENTRY * GetFramebufferAttachmentParameterivEXT_t)(GLenum, GLenum, GLenum, GLint *)
Definition: r_gl.h:202
void(APIENTRY * BindFramebufferEXT_t)(GLenum, GLuint)
Definition: r_gl.h:194
QGL_EXTERN GLuint GLsizei GLsizei * length
Definition: r_gl.h:110
#define QGL_EXTERN
Definition: r_gl.h:71
void(APIENTRY * GenRenderbuffersEXT_t)(GLsizei, GLuint *)
Definition: r_gl.h:189
void(APIENTRY * DrawBuffers_t)(GLsizei, const GLenum *)
Definition: r_gl.h:204
void(APIENTRY * EnableVertexAttribArray_t)(GLuint index)
Definition: r_gl.h:155
void(APIENTRY * RenderbufferStorageEXT_t)(GLenum, GLenum, GLsizei, GLsizei)
Definition: r_gl.h:190
GLuint glElementIndex_t
Definition: r_gl.h:57
void(APIENTRY * Uniform1f_t)(GLint location, GLfloat f)
Definition: r_gl.h:177
void(APIENTRY * DeleteRenderbuffersEXT_t)(GLsizei, const GLuint *)
Definition: r_gl.h:188
GLboolean(APIENTRY * IsRenderbufferEXT_t)(GLuint)
Definition: r_gl.h:186
GLuint(APIENTRY * CreateProgram_t)(void)
Definition: r_gl.h:166
QGL_EXTERN GLint GLenum GLboolean GLsizei stride
Definition: r_gl.h:94
void(APIENTRY * FramebufferTexture2DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint)
Definition: r_gl.h:199
QGL_EXTERN GLenum GLuint * dest
Definition: r_gl.h:101
QGL_EXTERN const GLuint *QGL_EXTERN GLuint *QGL_EXTERN GLenum
Definition: r_gl.h:127
QGL_EXTERN GLuint index
Definition: r_gl.h:110
void(APIENTRY * Uniform1fv_t)(GLint location, int count, GLfloat *f)
Definition: r_gl.h:178
QGL_EXTERN void(APIENTRY *qglActiveTexture)(GLenum texture)
void(APIENTRY * GetRenderbufferParameterivEXT_t)(GLenum, GLenum, GLint *)
Definition: r_gl.h:192
QGL_EXTERN GLuint count
Definition: r_gl.h:99
void(APIENTRY * AttachShader_t)(GLuint prog, GLuint shader)
Definition: r_gl.h:168
void(APIENTRY * FramebufferTexture3DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)
Definition: r_gl.h:200
QGL_EXTERN GLfloat f
Definition: r_gl.h:114
void(APIENTRY * ActiveTexture_t)(GLenum texture)
Definition: r_gl.h:145
void(APIENTRY * GetProgramiv_t)(GLuint id, GLenum field, GLuint *dest)
Definition: r_gl.h:173
void(APIENTRY * GetShaderiv_t)(GLuint id, GLenum field, GLuint *dest)
Definition: r_gl.h:164
QGL_EXTERN GLint i
Definition: r_gl.h:113
QGL_EXTERN GLuint GLchar GLuint * len
Definition: r_gl.h:99
void(APIENTRY * ShaderSource_t)(GLuint id, GLuint count, GLchar **sources, GLuint *len)
Definition: r_gl.h:162
QGL_EXTERN GLint
Definition: r_gl.h:135
QGL_EXTERN GLuint GLsizei GLsizei GLint GLenum GLchar * name
Definition: r_gl.h:110
void(APIENTRY * Uniform4fv_t)(GLint location, int count, GLfloat *f)
Definition: r_gl.h:181
GLint(APIENTRY * GetAttribLocation_t)(GLuint id, const GLchar *name)
Definition: r_gl.h:182
void(APIENTRY * GetActiveUniforms_t)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
Definition: r_gl.h:172
void R_DrawArrays(GLint first, GLsizei count)
Definition: r_gl.h:35
QGL_EXTERN GLsizei const GLvoid GLenum usage
Definition: r_gl.h:89
QGL_EXTERN int GLboolean transpose
Definition: r_gl.h:120
QGL_EXTERN const GLenum *QGL_EXTERN GLbitfield
Definition: r_gl.h:142
void(APIENTRY * GetProgramInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
Definition: r_gl.h:174
void(APIENTRY * FramebufferRenderbufferEXT_t)(GLenum, GLenum, GLenum, GLuint)
Definition: r_gl.h:201
void(APIENTRY * DeleteBuffers_t)(GLuint count, GLuint *id)
Definition: r_gl.h:150
void(APIENTRY * BlitFramebuffer_t)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)
Definition: r_gl.h:205
void(APIENTRY * GenerateMipmapEXT_t)(GLenum)
Definition: r_gl.h:203
void(APIENTRY * UseProgram_t)(GLuint id)
Definition: r_gl.h:171
void(APIENTRY * Uniform2fv_t)(GLint location, int count, GLfloat *f)
Definition: r_gl.h:179
QGL_EXTERN int GLboolean GLfloat * v
Definition: r_gl.h:120
QGL_EXTERN GLuint GLsizei bufSize
Definition: r_gl.h:110
QGL_EXTERN GLsizei size
Definition: r_gl.h:89
GLint(APIENTRY * GetUniformLocation_t)(GLuint id, const GLchar *name)
Definition: r_gl.h:175
void(APIENTRY * VertexAttribPointer_t)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
Definition: r_gl.h:157
QGL_EXTERN GLboolean(APIENTRY *qglIsRenderbufferEXT)(GLuint)
void(APIENTRY * GenBuffers_t)(GLuint count, GLuint *id)
Definition: r_gl.h:149
#define APIENTRY