29#ifdef USE_LOCAL_HEADERS
30# include "SDL_opengl.h"
32# include <SDL_opengl.h>
35extern void (APIENTRYP qglActiveTextureARB) (GLenum texture);
36extern void (APIENTRYP qglClientActiveTextureARB) (GLenum texture);
37extern void (APIENTRYP qglMultiTexCoord2fARB) (GLenum target, GLfloat s, GLfloat t);
39extern void (APIENTRYP qglLockArraysEXT) (GLint first, GLsizei count);
40extern void (APIENTRYP qglUnlockArraysEXT) (void);
49#define QGL_1_1_PROCS \
50 GLE(void, BindTexture, GLenum target, GLuint texture) \
51 GLE(void, BlendFunc, GLenum sfactor, GLenum dfactor) \
52 GLE(void, CallList, GLuint list) \
53 GLE(void, ClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) \
54 GLE(void, Clear, GLbitfield mask) \
55 GLE(void, ClearStencil, GLint s) \
56 GLE(void, ColorMask, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) \
57 GLE(void, CopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) \
58 GLE(void, CullFace, GLenum mode) \
59 GLE(void, DeleteTextures, GLsizei n, const GLuint *textures) \
60 GLE(void, DepthFunc, GLenum func) \
61 GLE(void, DepthMask, GLboolean flag) \
62 GLE(void, Disable, GLenum cap) \
63 GLE(void, DrawArrays, GLenum mode, GLint first, GLsizei count) \
64 GLE(void, DrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) \
65 GLE(void, DrawPixels, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) \
66 GLE(void, Enable, GLenum cap) \
67 GLE(void, Finish, void) \
68 GLE(void, Flush, void) \
69 GLE(void, Fogf, GLenum pname, GLfloat param) \
70 GLE(void, Fogfv, GLenum pname, const GLfloat *params) \
71 GLE(void, Fogi, GLenum pname, GLint param) \
72 GLE(void, GenTextures, GLsizei n, GLuint *textures ) \
73 GLE(void, GetBooleanv, GLenum pname, GLboolean *params) \
74 GLE(GLenum, GetError, void) \
75 GLE(void, GetIntegerv, GLenum pname, GLint *params) \
76 GLE(const GLubyte *, GetString, GLenum name) \
77 GLE(void, LineStipple, GLint factor, GLushort pattern) \
78 GLE(void, LineWidth, GLfloat width) \
79 GLE(void, PixelZoom, GLfloat xfactor, GLfloat yfactor) \
80 GLE(void, PolygonOffset, GLfloat factor, GLfloat units) \
81 GLE(void, ReadPixels, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) \
82 GLE(void, Scissor, GLint x, GLint y, GLsizei width, GLsizei height) \
83 GLE(void, StencilFunc, GLenum func, GLint ref, GLuint mask) \
84 GLE(void, StencilMask, GLuint mask) \
85 GLE(void, StencilOp, GLenum fail, GLenum zfail, GLenum zpass) \
86 GLE(void, TexImage2D, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) \
87 GLE(void, TexParameterf, GLenum target, GLenum pname, GLfloat param) \
88 GLE(void, TexParameteri, GLenum target, GLenum pname, GLint param) \
89 GLE(void, TexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) \
90 GLE(void, Translatef, GLfloat x, GLfloat y, GLfloat z) \
91 GLE(void, Viewport, GLint x, GLint y, GLsizei width, GLsizei height) \
94#define QGL_1_1_FIXED_FUNCTION_PROCS \
95 GLE(void, AlphaFunc, GLenum func, GLclampf ref) \
96 GLE(void, Color4f, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) \
97 GLE(void, ColorPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
98 GLE(void, DisableClientState, GLenum cap) \
99 GLE(void, EnableClientState, GLenum cap) \
100 GLE(void, LoadIdentity, void) \
101 GLE(void, LoadMatrixf, const GLfloat *m) \
102 GLE(void, MatrixMode, GLenum mode) \
103 GLE(void, PopMatrix, void) \
104 GLE(void, PushMatrix, void) \
105 GLE(void, ShadeModel, GLenum mode) \
106 GLE(void, TexCoordPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
107 GLE(void, TexEnvf, GLenum target, GLenum pname, GLfloat param) \
108 GLE(void, VertexPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) \
111#define QGL_DESKTOP_1_1_PROCS \
112 GLE(void, ClearDepth, GLclampd depth) \
113 GLE(void, DepthRange, GLclampd near_val, GLclampd far_val) \
114 GLE(void, DrawBuffer, GLenum mode) \
115 GLE(void, PolygonMode, GLenum face, GLenum mode) \
118#define QGL_DESKTOP_1_1_FIXED_FUNCTION_PROCS \
119 GLE(void, ArrayElement, GLint i) \
120 GLE(void, Begin, GLenum mode) \
121 GLE(void, ClipPlane, GLenum plane, const GLdouble *equation) \
122 GLE(void, Color3f, GLfloat red, GLfloat green, GLfloat blue) \
123 GLE(void, Color4ubv, const GLubyte *v) \
124 GLE(void, End, void) \
125 GLE(void, Frustum, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val) \
126 GLE(void, Ortho, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val) \
127 GLE(void, TexCoord2f, GLfloat s, GLfloat t) \
128 GLE(void, TexCoord2fv, const GLfloat *v) \
129 GLE(void, Vertex2f, GLfloat x, GLfloat y) \
130 GLE(void, Vertex3f, GLfloat x, GLfloat y, GLfloat z) \
131 GLE(void, Vertex3fv, const GLfloat *v) \
134#define QGL_ES_1_1_PROCS \
135 GLE(void, ClearDepthf, GLclampf depth) \
136 GLE(void, DepthRangef, GLclampf near_val, GLclampf far_val) \
139#define QGL_ES_1_1_FIXED_FUNCTION_PROCS \
140 GLE(void, ClipPlanef, GLenum plane, const GLfloat *equation) \
141 GLE(void, Frustumf, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) \
142 GLE(void, Orthof, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val) \
145#define QGL_1_3_PROCS \
146 GLE(void, ActiveTexture, GLenum texture) \
147 GLE(void, CompressedTexImage2D, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) \
148 GLE(void, CompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) \
151#define QGL_ARB_occlusion_query_PROCS \
152 GLE(void, GenQueries, GLsizei n, GLuint *ids) \
153 GLE(void, DeleteQueries, GLsizei n, const GLuint *ids) \
154 GLE(void, BeginQuery, GLenum target, GLuint id) \
155 GLE(void, EndQuery, GLenum target) \
156 GLE(void, GetQueryObjectiv, GLuint id, GLenum pname, GLint *params) \
157 GLE(void, GetQueryObjectuiv, GLuint id, GLenum pname, GLuint *params) \
160#define QGL_1_5_PROCS \
161 GLE(void, BindBuffer, GLenum target, GLuint buffer) \
162 GLE(void, DeleteBuffers, GLsizei n, const GLuint *buffers) \
163 GLE(void, GenBuffers, GLsizei n, GLuint *buffers) \
164 GLE(void, BufferData, GLenum target, GLsizeiptr size, const void *data, GLenum usage) \
165 GLE(void, BufferSubData, GLenum target, GLintptr offset, GLsizeiptr size, const void *data) \
168#define QGL_2_0_PROCS \
169 GLE(void, AttachShader, GLuint program, GLuint shader) \
170 GLE(void, BindAttribLocation, GLuint program, GLuint index, const GLchar *name) \
171 GLE(void, CompileShader, GLuint shader) \
172 GLE(GLuint, CreateProgram, void) \
173 GLE(GLuint, CreateShader, GLenum type) \
174 GLE(void, DeleteProgram, GLuint program) \
175 GLE(void, DeleteShader, GLuint shader) \
176 GLE(void, DetachShader, GLuint program, GLuint shader) \
177 GLE(void, DisableVertexAttribArray, GLuint index) \
178 GLE(void, EnableVertexAttribArray, GLuint index) \
179 GLE(void, GetActiveUniform, GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) \
180 GLE(void, GetProgramiv, GLuint program, GLenum pname, GLint *params) \
181 GLE(void, GetProgramInfoLog, GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) \
182 GLE(void, GetShaderiv, GLuint shader, GLenum pname, GLint *params) \
183 GLE(void, GetShaderInfoLog, GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) \
184 GLE(void, GetShaderSource, GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) \
185 GLE(GLint, GetUniformLocation, GLuint program, const GLchar *name) \
186 GLE(void, LinkProgram, GLuint program) \
187 GLE(void, ShaderSource, GLuint shader, GLsizei count, const GLchar* *string, const GLint *length) \
188 GLE(void, UseProgram, GLuint program) \
189 GLE(void, Uniform1f, GLint location, GLfloat v0) \
190 GLE(void, Uniform2f, GLint location, GLfloat v0, GLfloat v1) \
191 GLE(void, Uniform3f, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) \
192 GLE(void, Uniform4f, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) \
193 GLE(void, Uniform1i, GLint location, GLint v0) \
194 GLE(void, Uniform1fv, GLint location, GLsizei count, const GLfloat *value) \
195 GLE(void, UniformMatrix4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) \
196 GLE(void, ValidateProgram, GLuint program) \
197 GLE(void, VertexAttribPointer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) \
200#ifndef GL_NVX_gpu_memory_info
201#define GL_NVX_gpu_memory_info
202#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
203#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
204#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
205#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
206#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
210#ifndef GL_ATI_meminfo
211#define GL_ATI_meminfo
212#define GL_VBO_FREE_MEMORY_ATI 0x87FB
213#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
214#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
218#ifndef GL_ARB_texture_float
219#define GL_ARB_texture_float
220#define GL_TEXTURE_RED_TYPE_ARB 0x8C10
221#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11
222#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12
223#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13
224#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14
225#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15
226#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16
227#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17
228#define GL_RGBA32F_ARB 0x8814
229#define GL_RGB32F_ARB 0x8815
230#define GL_ALPHA32F_ARB 0x8816
231#define GL_INTENSITY32F_ARB 0x8817
232#define GL_LUMINANCE32F_ARB 0x8818
233#define GL_LUMINANCE_ALPHA32F_ARB 0x8819
234#define GL_RGBA16F_ARB 0x881A
235#define GL_RGB16F_ARB 0x881B
236#define GL_ALPHA16F_ARB 0x881C
237#define GL_INTENSITY16F_ARB 0x881D
238#define GL_LUMINANCE16F_ARB 0x881E
239#define GL_LUMINANCE_ALPHA16F_ARB 0x881F
242#ifndef GL_ARB_half_float_pixel
243#define GL_ARB_half_float_pixel
244#define GL_HALF_FLOAT_ARB 0x140B
248#define QGL_3_0_PROCS \
249 GLE(const GLubyte *, GetStringi, GLenum name, GLuint index) \
252#define QGL_ARB_framebuffer_object_PROCS \
253 GLE(void, BindRenderbuffer, GLenum target, GLuint renderbuffer) \
254 GLE(void, DeleteRenderbuffers, GLsizei n, const GLuint *renderbuffers) \
255 GLE(void, GenRenderbuffers, GLsizei n, GLuint *renderbuffers) \
256 GLE(void, RenderbufferStorage, GLenum target, GLenum internalformat, GLsizei width, GLsizei height) \
257 GLE(void, BindFramebuffer, GLenum target, GLuint framebuffer) \
258 GLE(void, DeleteFramebuffers, GLsizei n, const GLuint *framebuffers) \
259 GLE(void, GenFramebuffers, GLsizei n, GLuint *framebuffers) \
260 GLE(GLenum, CheckFramebufferStatus, GLenum target) \
261 GLE(void, FramebufferTexture2D, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) \
262 GLE(void, FramebufferRenderbuffer, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) \
263 GLE(void, GenerateMipmap, GLenum target) \
264 GLE(void, BlitFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) \
265 GLE(void, RenderbufferStorageMultisample, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) \
268#define QGL_ARB_vertex_array_object_PROCS \
269 GLE(void, BindVertexArray, GLuint array) \
270 GLE(void, DeleteVertexArrays, GLsizei n, const GLuint *arrays) \
271 GLE(void, GenVertexArrays, GLsizei n, GLuint *arrays) \
273#ifndef GL_ARB_texture_compression_rgtc
274#define GL_ARB_texture_compression_rgtc
275#define GL_COMPRESSED_RED_RGTC1 0x8DBB
276#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
277#define GL_COMPRESSED_RG_RGTC2 0x8DBD
278#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
281#ifndef GL_ARB_texture_compression_bptc
282#define GL_ARB_texture_compression_bptc
283#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
284#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
285#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
286#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
289#ifndef GL_ARB_depth_clamp
290#define GL_ARB_depth_clamp
291#define GL_DEPTH_CLAMP 0x864F
294#ifndef GL_ARB_seamless_cube_map
295#define GL_ARB_seamless_cube_map
296#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
300#define QGL_EXT_direct_state_access_PROCS \
301 GLE(GLvoid, BindMultiTextureEXT, GLenum texunit, GLenum target, GLuint texture) \
302 GLE(GLvoid, TextureParameterfEXT, GLuint texture, GLenum target, GLenum pname, GLfloat param) \
303 GLE(GLvoid, TextureParameteriEXT, GLuint texture, GLenum target, GLenum pname, GLint param) \
304 GLE(GLvoid, TextureImage2DEXT, GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) \
305 GLE(GLvoid, TextureSubImage2DEXT, GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) \
306 GLE(GLvoid, CopyTextureSubImage2DEXT, GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) \
307 GLE(GLvoid, CompressedTextureImage2DEXT, GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) \
308 GLE(GLvoid, CompressedTextureSubImage2DEXT, GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) \
309 GLE(GLvoid, GenerateTextureMipmapEXT, GLuint texture, GLenum target) \
310 GLE(GLvoid, ProgramUniform1iEXT, GLuint program, GLint location, GLint v0) \
311 GLE(GLvoid, ProgramUniform1fEXT, GLuint program, GLint location, GLfloat v0) \
312 GLE(GLvoid, ProgramUniform2fEXT, GLuint program, GLint location, GLfloat v0, GLfloat v1) \
313 GLE(GLvoid, ProgramUniform3fEXT, GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) \
314 GLE(GLvoid, ProgramUniform4fEXT, GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) \
315 GLE(GLvoid, ProgramUniform1fvEXT, GLuint program, GLint location, GLsizei count, const GLfloat *value) \
316 GLE(GLvoid, ProgramUniformMatrix4fvEXT, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) \
317 GLE(GLvoid, NamedRenderbufferStorageEXT, GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) \
318 GLE(GLvoid, NamedRenderbufferStorageMultisampleEXT, GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) \
319 GLE(GLenum, CheckNamedFramebufferStatusEXT, GLuint framebuffer, GLenum target) \
320 GLE(GLvoid, NamedFramebufferTexture2DEXT, GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) \
321 GLE(GLvoid, NamedFramebufferRenderbufferEXT, GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) \
323#define GLE(ret, name, ...) typedef ret APIENTRY name##proc(__VA_ARGS__);
325QGL_1_1_FIXED_FUNCTION_PROCS;
326QGL_DESKTOP_1_1_PROCS;
327QGL_DESKTOP_1_1_FIXED_FUNCTION_PROCS;
329QGL_ES_1_1_FIXED_FUNCTION_PROCS;
334QGL_ARB_occlusion_query_PROCS;
335QGL_ARB_framebuffer_object_PROCS;
336QGL_ARB_vertex_array_object_PROCS;
337QGL_EXT_direct_state_access_PROCS;
340extern int qglMajorVersion, qglMinorVersion;
341extern int qglesMajorVersion, qglesMinorVersion;
342#define QGL_VERSION_ATLEAST( major, minor ) ( qglMajorVersion > major || ( qglMajorVersion == major && qglMinorVersion >= minor ) )
343#define QGLES_VERSION_ATLEAST( major, minor ) ( qglesMajorVersion > major || ( qglesMajorVersion == major && qglesMinorVersion >= minor ) )