UFO: Alien Invasion
Loading...
Searching...
No Matches
r_gl.h
Go to the documentation of this file.
1
5
6/*
7Copyright (C) 1997-2001 Id Software, Inc.
8
9This program is free software; you can redistribute it and/or
10modify it under the terms of the GNU General Public License
11as published by the Free Software Foundation; either version 2
12of the License, or (at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
18See the GNU General Public License for more details.
19
20You should have received a copy of the GNU General Public License
21along with this program; if not, write to the Free Software
22Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
24*/
25
26#pragma once
27
28#ifdef ANDROID
30#include <stdlib.h>
31#else
32#include <SDL_opengl.h>
33#endif
34
35inline 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 */
47typedef 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 */
82QGL_EXTERN void (APIENTRY* qglActiveTexture)(GLenum texture);
83QGL_EXTERN void (APIENTRY* qglClientActiveTexture)(GLenum texture);
84
85/* vertex buffer objects */
87QGL_EXTERN void (APIENTRY* qglDeleteBuffers) (GLuint count, GLuint* id);
88QGL_EXTERN void (APIENTRY* qglBindBuffer) (GLenum target, GLuint id);
89QGL_EXTERN void (APIENTRY* qglBufferData) (GLenum target, GLsizei size, const GLvoid* data, GLenum usage);
90
91/* vertex attribute arrays */
92QGL_EXTERN void (APIENTRY* qglEnableVertexAttribArray)(GLuint index);
93QGL_EXTERN void (APIENTRY* qglDisableVertexAttribArray)(GLuint index);
95
96/* glsl vertex and fragment shaders and programs */
97QGL_EXTERN GLuint (APIENTRY* qglCreateShader)(GLenum type);
98QGL_EXTERN void (APIENTRY* qglDeleteShader)(GLuint id);
99QGL_EXTERN void (APIENTRY* qglShaderSource)(GLuint id, GLuint count, GLchar** sources, GLuint* len);
100QGL_EXTERN void (APIENTRY* qglCompileShader)(GLuint id);
102QGL_EXTERN void (APIENTRY* qglGetShaderInfoLog)(GLuint id, GLuint maxlen, GLuint* len, GLchar* dest);
103QGL_EXTERN GLuint (APIENTRY* qglCreateProgram)(void);
104QGL_EXTERN void (APIENTRY* qglDeleteProgram)(GLuint id);
105QGL_EXTERN void (APIENTRY* qglAttachShader)(GLuint prog, GLuint shader);
106QGL_EXTERN void (APIENTRY* qglDetachShader)(GLuint prog, GLuint shader);
107QGL_EXTERN void (APIENTRY* qglLinkProgram)(GLuint id);
108QGL_EXTERN void (APIENTRY* qglUseProgram)(GLuint id);
109QGL_EXTERN void (APIENTRY* qglGetProgramiv)(GLuint id, GLenum field, GLuint* dest);
110QGL_EXTERN void (APIENTRY* qglGetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
111QGL_EXTERN void (APIENTRY* qglGetProgramInfoLog)(GLuint id, GLuint maxlen, GLuint* len, GLchar* dest);
112QGL_EXTERN GLint (APIENTRY* qglGetUniformLocation)(GLuint id, const GLchar* name);
113QGL_EXTERN void (APIENTRY* qglUniform1i)(GLint location, GLint i);
114QGL_EXTERN void (APIENTRY* qglUniform1f)(GLint location, GLfloat f);
115QGL_EXTERN void (APIENTRY* qglUniform1fv)(GLint location, int count, GLfloat* f);
116QGL_EXTERN void (APIENTRY* qglUniform2fv)(GLint location, int count, GLfloat* f);
117QGL_EXTERN void (APIENTRY* qglUniform3fv)(GLint location, int count, GLfloat* f);
118QGL_EXTERN void (APIENTRY* qglUniform4fv)(GLint location, int count, GLfloat* f);
119QGL_EXTERN GLint (APIENTRY* qglGetAttribLocation)(GLuint id, const GLchar* name);
120QGL_EXTERN void (APIENTRY* qglUniformMatrix4fv)(GLint location, int count, GLboolean transpose, GLfloat* v);
121
122/* frame buffer objects (fbo) */
123QGL_EXTERN GLboolean (APIENTRY* qglIsRenderbufferEXT) (GLuint);
124QGL_EXTERN void (APIENTRY* qglBindRenderbufferEXT) (GLenum, GLuint);
125QGL_EXTERN void (APIENTRY* qglDeleteRenderbuffersEXT) (GLsizei, const GLuint*);
126QGL_EXTERN void (APIENTRY* qglGenRenderbuffersEXT) (GLsizei, GLuint*);
127QGL_EXTERN void (APIENTRY* qglRenderbufferStorageEXT) (GLenum, GLenum, GLsizei, GLsizei);
128QGL_EXTERN void (APIENTRY* qglRenderbufferStorageMultisampleEXT) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
129QGL_EXTERN void (APIENTRY* qglGetRenderbufferParameterivEXT) (GLenum, GLenum, GLint*);
130QGL_EXTERN GLboolean (APIENTRY* qglIsFramebufferEXT) (GLuint);
131QGL_EXTERN void (APIENTRY* qglBindFramebufferEXT) (GLenum, GLuint);
132QGL_EXTERN void (APIENTRY* qglDeleteFramebuffersEXT) (GLsizei, const GLuint*);
133QGL_EXTERN void (APIENTRY* qglGenFramebuffersEXT) (GLsizei, GLuint*);
134QGL_EXTERN GLenum (APIENTRY* qglCheckFramebufferStatusEXT) (GLenum);
135QGL_EXTERN void (APIENTRY* qglFramebufferTexture1DEXT) (GLenum, GLenum, GLenum, GLuint, GLint);
136QGL_EXTERN void (APIENTRY* qglFramebufferTexture2DEXT) (GLenum, GLenum, GLenum, GLuint, GLint);
137QGL_EXTERN void (APIENTRY* qglFramebufferTexture3DEXT) (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
138QGL_EXTERN void (APIENTRY* qglFramebufferRenderbufferEXT) (GLenum, GLenum, GLenum, GLuint);
139QGL_EXTERN void (APIENTRY* qglGetFramebufferAttachmentParameterivEXT) (GLenum, GLenum, GLenum, GLint*);
140QGL_EXTERN void (APIENTRY* qglGenerateMipmapEXT) (GLenum);
141QGL_EXTERN void (APIENTRY* qglDrawBuffers) (GLsizei, const GLenum*);
143
144/* multitexture */
147
148/* vertex buffer objects */
152typedef 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 */
175typedef GLint (APIENTRY* GetUniformLocation_t)(GLuint id, const GLchar* name);
176typedef void (APIENTRY* Uniform1i_t)(GLint location, GLint i);
177typedef void (APIENTRY* Uniform1f_t)(GLint location, GLfloat f);
178typedef void (APIENTRY* Uniform1fv_t)(GLint location, int count, GLfloat* f);
179typedef void (APIENTRY* Uniform2fv_t)(GLint location, int count, GLfloat* f);
180typedef void (APIENTRY* Uniform3fv_t)(GLint location, int count, GLfloat* f);
181typedef void (APIENTRY* Uniform4fv_t)(GLint location, int count, GLfloat* f);
182typedef GLint (APIENTRY* GetAttribLocation_t)(GLuint id, const GLchar* name);
183typedef void (APIENTRY* UniformMatrix4fv_t)(GLint location, int count, GLboolean transpose, GLfloat* v);
184
185/* frame buffer objects (fbo) */
voidpf void uLong size
Definition ioapi.h:42
QGL_EXTERN GLuint GLchar ** sources
Definition r_gl.h:99
void(APIENTRY * BlitFramebuffer_t)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)
Definition r_gl.h:205
void(APIENTRY * Uniform1i_t)(GLint location, GLint i)
Definition r_gl.h:176
void(APIENTRY * Uniform4fv_t)(GLint location, int count, GLfloat *f)
Definition r_gl.h:181
void(APIENTRY * FramebufferRenderbufferEXT_t)(GLenum, GLenum, GLenum, GLuint)
Definition r_gl.h:201
#define QGL_EXTERN
Definition r_gl.h:71
void(APIENTRY * UseProgram_t)(GLuint id)
Definition r_gl.h:171
void(APIENTRY * GetProgramInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
Definition r_gl.h:174
void(APIENTRY * Uniform1fv_t)(GLint location, int count, GLfloat *f)
Definition r_gl.h:178
void(APIENTRY * DrawBuffers_t)(GLsizei, const GLenum *)
Definition r_gl.h:204
GLboolean(APIENTRY * IsRenderbufferEXT_t)(GLuint)
Definition r_gl.h:186
void(APIENTRY * GetShaderiv_t)(GLuint id, GLenum field, GLuint *dest)
Definition r_gl.h:164
QGL_EXTERN GLuint GLchar GLuint * len
Definition r_gl.h:99
QGL_EXTERN void(APIENTRY *qglActiveTexture)(GLenum texture)
void(APIENTRY * GetShaderInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
Definition r_gl.h:165
void(APIENTRY * LinkProgram_t)(GLuint id)
Definition r_gl.h:170
void(APIENTRY * EnableVertexAttribArray_t)(GLuint index)
Definition r_gl.h:155
GLuint(APIENTRY * CreateShader_t)(GLenum type)
Definition r_gl.h:160
void(APIENTRY * FramebufferTexture3DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)
Definition r_gl.h:200
QGL_EXTERN GLenum GLuint * dest
Definition r_gl.h:101
QGL_EXTERN GLuint count
Definition r_gl.h:99
void(APIENTRY * FramebufferTexture1DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint)
Definition r_gl.h:198
void(APIENTRY * FramebufferTexture2DEXT_t)(GLenum, GLenum, GLenum, GLuint, GLint)
Definition r_gl.h:199
void(APIENTRY * DetachShader_t)(GLuint prog, GLuint shader)
Definition r_gl.h:169
QGL_EXTERN GLint
Definition r_gl.h:135
void(APIENTRY * DeleteBuffers_t)(GLuint count, GLuint *id)
Definition r_gl.h:150
QGL_EXTERN int GLboolean GLfloat * v
Definition r_gl.h:120
QGL_EXTERN GLsizei const GLvoid * data
Definition r_gl.h:89
QGL_EXTERN const GLuint *QGL_EXTERN GLuint *QGL_EXTERN GLsizei
Definition r_gl.h:127
void(APIENTRY * BindRenderbufferEXT_t)(GLenum, GLuint)
Definition r_gl.h:187
void(APIENTRY * GetActiveUniforms_t)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
Definition r_gl.h:172
void(APIENTRY * RenderbufferStorageMultisampleEXT_t)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)
Definition r_gl.h:191
QGL_EXTERN GLuint GLsizei GLsizei * length
Definition r_gl.h:110
void(APIENTRY * DeleteProgram_t)(GLuint id)
Definition r_gl.h:167
GLboolean(APIENTRY * IsFramebufferEXT_t)(GLuint)
Definition r_gl.h:193
void(APIENTRY * DeleteRenderbuffersEXT_t)(GLsizei, const GLuint *)
Definition r_gl.h:188
QGL_EXTERN GLuint index
Definition r_gl.h:110
void(APIENTRY * Uniform3fv_t)(GLint location, int count, GLfloat *f)
Definition r_gl.h:180
QGL_EXTERN GLfloat f
Definition r_gl.h:114
QGL_EXTERN GLuint maxlen
Definition r_gl.h:102
QGL_EXTERN GLint i
Definition r_gl.h:113
void(APIENTRY * ShaderSource_t)(GLuint id, GLuint count, GLchar **sources, GLuint *len)
Definition r_gl.h:162
QGL_EXTERN GLuint shader
Definition r_gl.h:105
void(APIENTRY * GenBuffers_t)(GLuint count, GLuint *id)
Definition r_gl.h:149
void(APIENTRY * GenFramebuffersEXT_t)(GLsizei, GLuint *)
Definition r_gl.h:196
void(APIENTRY * VertexAttribPointer_t)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
Definition r_gl.h:157
QGL_EXTERN GLint GLenum type
Definition r_gl.h:94
void(APIENTRY * UniformMatrix4fv_t)(GLint location, int count, GLboolean transpose, GLfloat *v)
Definition r_gl.h:183
void(APIENTRY * GenerateMipmapEXT_t)(GLenum)
Definition r_gl.h:203
void(APIENTRY * DeleteShader_t)(GLuint id)
Definition r_gl.h:161
GLint(APIENTRY * GetAttribLocation_t)(GLuint id, const GLchar *name)
Definition r_gl.h:182
void(APIENTRY * Uniform2fv_t)(GLint location, int count, GLfloat *f)
Definition r_gl.h:179
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 * RenderbufferStorageEXT_t)(GLenum, GLenum, GLsizei, GLsizei)
Definition r_gl.h:190
QGL_EXTERN GLsizei const GLvoid GLenum usage
Definition r_gl.h:89
void(APIENTRY * ClientActiveTexture_t)(GLenum texture)
Definition r_gl.h:146
GLenum(APIENTRY * CheckFramebufferStatusEXT_t)(GLenum)
Definition r_gl.h:197
void(APIENTRY * BindFramebufferEXT_t)(GLenum, GLuint)
Definition r_gl.h:194
void(APIENTRY * ActiveTexture_t)(GLenum texture)
Definition r_gl.h:145
QGL_EXTERN GLint GLenum GLboolean GLsizei stride
Definition r_gl.h:94
void(APIENTRY * CompileShader_t)(GLuint id)
Definition r_gl.h:163
GLuint(APIENTRY * CreateProgram_t)(void)
Definition r_gl.h:166
QGL_EXTERN GLuint GLsizei GLsizei GLint GLenum GLchar * name
Definition r_gl.h:110
QGL_EXTERN const GLenum *QGL_EXTERN GLbitfield
Definition r_gl.h:142
QGL_EXTERN GLint GLenum GLboolean normalized
Definition r_gl.h:94
void(APIENTRY * GetRenderbufferParameterivEXT_t)(GLenum, GLenum, GLint *)
Definition r_gl.h:192
QGL_EXTERN GLboolean(APIENTRY *qglIsRenderbufferEXT)(GLuint)
void(APIENTRY * Uniform1f_t)(GLint location, GLfloat f)
Definition r_gl.h:177
GLuint glElementIndex_t
Definition r_gl.h:57
QGL_EXTERN GLenum field
Definition r_gl.h:101
QGL_EXTERN GLuint * id
Definition r_gl.h:86
GLint(APIENTRY * GetUniformLocation_t)(GLuint id, const GLchar *name)
Definition r_gl.h:175
QGL_EXTERN int GLboolean transpose
Definition r_gl.h:120
void(APIENTRY * GetProgramiv_t)(GLuint id, GLenum field, GLuint *dest)
Definition r_gl.h:173
void(APIENTRY * BindBuffer_t)(GLenum target, GLuint id)
Definition r_gl.h:151
QGL_EXTERN GLint GLenum GLboolean GLsizei const GLvoid * pointer
Definition r_gl.h:94
void(APIENTRY * AttachShader_t)(GLuint prog, GLuint shader)
Definition r_gl.h:168
QGL_EXTERN GLuint
Definition r_gl.h:124
QGL_EXTERN GLuint GLsizei bufSize
Definition r_gl.h:110
void R_DrawArrays(GLint first, GLsizei count)
Definition r_gl.h:35
void(APIENTRY * GenRenderbuffersEXT_t)(GLsizei, GLuint *)
Definition r_gl.h:189
QGL_EXTERN const GLuint *QGL_EXTERN GLuint *QGL_EXTERN GLenum
Definition r_gl.h:127
void(APIENTRY * DisableVertexAttribArray_t)(GLuint index)
Definition r_gl.h:156
void(APIENTRY * GetFramebufferAttachmentParameterivEXT_t)(GLenum, GLenum, GLenum, GLint *)
Definition r_gl.h:202
OpenGL-ES to OpenGL compatibility layer.
#define APIENTRY