1 | /* $Id: extensions.c,v 1.2 2000-03-01 18:49:28 jeroen Exp $ */
|
---|
2 |
|
---|
3 | /*
|
---|
4 | * Mesa 3-D graphics library
|
---|
5 | * Version: 3.1
|
---|
6 | *
|
---|
7 | * Copyright (C) 1999 Brian Paul All Rights Reserved.
|
---|
8 | *
|
---|
9 | * Permission is hereby granted, free of charge, to any person obtaining a
|
---|
10 | * copy of this software and associated documentation files (the "Software"),
|
---|
11 | * to deal in the Software without restriction, including without limitation
|
---|
12 | * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
---|
13 | * and/or sell copies of the Software, and to permit persons to whom the
|
---|
14 | * Software is furnished to do so, subject to the following conditions:
|
---|
15 | *
|
---|
16 | * The above copyright notice and this permission notice shall be included
|
---|
17 | * in all copies or substantial portions of the Software.
|
---|
18 | *
|
---|
19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
---|
20 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
---|
21 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
---|
22 | * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
---|
23 | * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
---|
24 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
---|
25 | */
|
---|
26 |
|
---|
27 |
|
---|
28 | #ifndef XFree86Server
|
---|
29 | #include <stdlib.h>
|
---|
30 | #else
|
---|
31 | #include "GL/xf86glx.h"
|
---|
32 | #endif
|
---|
33 | #include "types.h"
|
---|
34 | #include "context.h"
|
---|
35 | #include "extensions.h"
|
---|
36 | #include "simple_list.h"
|
---|
37 |
|
---|
38 |
|
---|
39 | #define MAX_EXT_NAMELEN 80
|
---|
40 |
|
---|
41 | struct extension {
|
---|
42 | struct extension *next, *prev;
|
---|
43 | int enabled;
|
---|
44 | char name[MAX_EXT_NAMELEN+1];
|
---|
45 | void (*notify)( GLcontext *, GLboolean );
|
---|
46 | };
|
---|
47 |
|
---|
48 |
|
---|
49 |
|
---|
50 | static struct { int enabled; const char *name; } default_extensions[] = {
|
---|
51 | { ALWAYS_ENABLED, "GL_EXT_blend_color" },
|
---|
52 | { DEFAULT_OFF, "ARB_imaging" },
|
---|
53 | { DEFAULT_ON, "GL_EXT_blend_minmax" },
|
---|
54 | { DEFAULT_ON, "GL_EXT_blend_logic_op" },
|
---|
55 | { DEFAULT_ON, "GL_EXT_blend_subtract" },
|
---|
56 | { DEFAULT_ON, "GL_EXT_paletted_texture" },
|
---|
57 | { DEFAULT_ON, "GL_EXT_point_parameters" },
|
---|
58 | { ALWAYS_ENABLED, "GL_EXT_polygon_offset" },
|
---|
59 | { ALWAYS_ENABLED, "GL_EXT_vertex_array" },
|
---|
60 | { ALWAYS_ENABLED, "GL_EXT_texture_object" },
|
---|
61 | { DEFAULT_ON, "GL_EXT_texture3D" },
|
---|
62 | { ALWAYS_ENABLED, "GL_MESA_window_pos" },
|
---|
63 | { ALWAYS_ENABLED, "GL_MESA_resize_buffers" },
|
---|
64 | { DEFAULT_ON, "GL_EXT_shared_texture_palette" },
|
---|
65 | { ALWAYS_ENABLED, "GL_EXT_rescale_normal" },
|
---|
66 | { ALWAYS_ENABLED, "GL_EXT_abgr" },
|
---|
67 | { ALWAYS_ENABLED, "GL_SGIS_texture_edge_clamp" },
|
---|
68 | { ALWAYS_ENABLED, "GL_EXT_stencil_wrap" },
|
---|
69 | { DEFAULT_ON, "GL_INGR_blend_func_separate" },
|
---|
70 | { DEFAULT_ON, "GL_ARB_multitexture" },
|
---|
71 | { ALWAYS_ENABLED, "GL_NV_texgen_reflection" },
|
---|
72 | { DEFAULT_ON, "GL_PGI_misc_hints" },
|
---|
73 | { DEFAULT_ON, "GL_EXT_compiled_vertex_array" },
|
---|
74 | { DEFAULT_ON, "GL_EXT_clip_volume_hint" },
|
---|
75 |
|
---|
76 | /* These obviously won't make it before 3.3:
|
---|
77 | */
|
---|
78 | { DEFAULT_OFF, "GL_EXT_vertex_array_set" },
|
---|
79 | { DEFAULT_OFF, "GL_EXT_texture_env" },
|
---|
80 | { DEFAULT_OFF, "GL_EXT_fog_coord" },
|
---|
81 | };
|
---|
82 |
|
---|
83 |
|
---|
84 | int gl_extensions_add( GLcontext *ctx,
|
---|
85 | int state,
|
---|
86 | const char *name,
|
---|
87 | void (*notify)(void) )
|
---|
88 | {
|
---|
89 | (void) notify;
|
---|
90 |
|
---|
91 | if (ctx->Extensions.ext_string == 0)
|
---|
92 | {
|
---|
93 | struct extension *t = MALLOC_STRUCT(extension);
|
---|
94 | t->enabled = state;
|
---|
95 | strncpy(t->name, name, MAX_EXT_NAMELEN);
|
---|
96 | t->name[MAX_EXT_NAMELEN] = 0;
|
---|
97 | t->notify = (void (*)(GLcontext *, GLboolean)) notify;
|
---|
98 | insert_at_tail( ctx->Extensions.ext_list, t );
|
---|
99 | return 0;
|
---|
100 | }
|
---|
101 | return 1;
|
---|
102 | }
|
---|
103 |
|
---|
104 |
|
---|
105 | static int set_extension( GLcontext *ctx, const char *name, GLuint state )
|
---|
106 | {
|
---|
107 | struct extension *i;
|
---|
108 | foreach( i, ctx->Extensions.ext_list )
|
---|
109 | if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0)
|
---|
110 | break;
|
---|
111 |
|
---|
112 | if (i == ctx->Extensions.ext_list) return 1;
|
---|
113 |
|
---|
114 | if (i->enabled && !(i->enabled & ALWAYS_ENABLED))
|
---|
115 | {
|
---|
116 | if (i->notify) i->notify( ctx, state );
|
---|
117 | i->enabled = state;
|
---|
118 | }
|
---|
119 |
|
---|
120 | return 0;
|
---|
121 | }
|
---|
122 |
|
---|
123 |
|
---|
124 | int gl_extensions_enable( GLcontext *ctx, const char *name )
|
---|
125 | {
|
---|
126 | if (ctx->Extensions.ext_string == 0)
|
---|
127 | return set_extension( ctx, name, 1 );
|
---|
128 | return 1;
|
---|
129 | }
|
---|
130 |
|
---|
131 |
|
---|
132 | int gl_extensions_disable( GLcontext *ctx, const char *name )
|
---|
133 | {
|
---|
134 | if (ctx->Extensions.ext_string == 0)
|
---|
135 | return set_extension( ctx, name, 0 );
|
---|
136 | return 1;
|
---|
137 | }
|
---|
138 |
|
---|
139 |
|
---|
140 | /*
|
---|
141 | * Test if the named extension is enabled in this context.
|
---|
142 | */
|
---|
143 | GLboolean gl_extension_is_enabled( GLcontext *ctx, const char *name)
|
---|
144 | {
|
---|
145 | struct extension *i;
|
---|
146 | foreach( i, ctx->Extensions.ext_list )
|
---|
147 | if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0) {
|
---|
148 | if (i->enabled)
|
---|
149 | return GL_TRUE;
|
---|
150 | else
|
---|
151 | return GL_FALSE;
|
---|
152 | }
|
---|
153 |
|
---|
154 | return GL_FALSE;
|
---|
155 | }
|
---|
156 |
|
---|
157 |
|
---|
158 | void gl_extensions_dtr( GLcontext *ctx )
|
---|
159 | {
|
---|
160 | struct extension *i, *nexti;
|
---|
161 |
|
---|
162 | if (ctx->Extensions.ext_string) {
|
---|
163 | FREE( ctx->Extensions.ext_string );
|
---|
164 | ctx->Extensions.ext_string = 0;
|
---|
165 | }
|
---|
166 |
|
---|
167 | if (ctx->Extensions.ext_list) {
|
---|
168 | foreach_s( i, nexti, ctx->Extensions.ext_list ) {
|
---|
169 | remove_from_list( i );
|
---|
170 | FREE( i );
|
---|
171 | }
|
---|
172 |
|
---|
173 | FREE(ctx->Extensions.ext_list);
|
---|
174 | ctx->Extensions.ext_list = 0;
|
---|
175 | }
|
---|
176 | }
|
---|
177 |
|
---|
178 |
|
---|
179 | void gl_extensions_ctr( GLcontext *ctx )
|
---|
180 | {
|
---|
181 | GLuint i;
|
---|
182 |
|
---|
183 | ctx->Extensions.ext_string = 0;
|
---|
184 | ctx->Extensions.ext_list = MALLOC_STRUCT(extension);
|
---|
185 | make_empty_list( ctx->Extensions.ext_list );
|
---|
186 |
|
---|
187 | for (i = 0 ; i < Elements(default_extensions) ; i++) {
|
---|
188 | gl_extensions_add( ctx,
|
---|
189 | default_extensions[i].enabled,
|
---|
190 | default_extensions[i].name,
|
---|
191 | 0 );
|
---|
192 | }
|
---|
193 | }
|
---|
194 |
|
---|
195 |
|
---|
196 | const char *gl_extensions_get_string( GLcontext *ctx )
|
---|
197 | {
|
---|
198 | if (ctx->Extensions.ext_string == 0)
|
---|
199 | {
|
---|
200 | struct extension *i;
|
---|
201 | char *str;
|
---|
202 | GLuint len = 0;
|
---|
203 | foreach (i, ctx->Extensions.ext_list)
|
---|
204 | if (i->enabled)
|
---|
205 | len += strlen(i->name) + 1;
|
---|
206 |
|
---|
207 | if (len == 0)
|
---|
208 | return "";
|
---|
209 |
|
---|
210 | str = (char *)MALLOC(len * sizeof(char));
|
---|
211 | ctx->Extensions.ext_string = str;
|
---|
212 |
|
---|
213 | foreach (i, ctx->Extensions.ext_list)
|
---|
214 | if (i->enabled) {
|
---|
215 | strcpy(str, i->name);
|
---|
216 | str += strlen(str);
|
---|
217 | *str++ = ' ';
|
---|
218 | }
|
---|
219 |
|
---|
220 | *(str-1) = 0;
|
---|
221 | }
|
---|
222 |
|
---|
223 | return ctx->Extensions.ext_string;
|
---|
224 | }
|
---|
225 |
|
---|
226 |
|
---|
227 |
|
---|
228 | /*
|
---|
229 | * Return the address of an extension function.
|
---|
230 | * This is meant to be called by glXGetProcAddress(), wglGetProcAddress(),
|
---|
231 | * or similar function.
|
---|
232 | * NOTE: this function could be optimized to binary search a sorted
|
---|
233 | * list of function names.
|
---|
234 | */
|
---|
235 | void (*gl_get_proc_address( const GLubyte *procName ))()
|
---|
236 | {
|
---|
237 | typedef void (*gl_function)();
|
---|
238 | struct proc {
|
---|
239 | const char *name;
|
---|
240 | gl_function address;
|
---|
241 | };
|
---|
242 | static struct proc procTable[] = {
|
---|
243 | /* OpenGL 1.0 functions */
|
---|
244 | { "glAccum", (gl_function) glAccum },
|
---|
245 | { "glAlphaFunc", (gl_function) glAlphaFunc },
|
---|
246 | { "glBegin", (gl_function) glBegin },
|
---|
247 | { "glBitmap", (gl_function) glBitmap },
|
---|
248 | { "glAccum", (gl_function) glAccum },
|
---|
249 | { "glAlphaFunc", (gl_function) glAlphaFunc },
|
---|
250 | { "glBegin", (gl_function) glBegin },
|
---|
251 | { "glBitmap", (gl_function) glBitmap },
|
---|
252 | { "glBlendFunc", (gl_function) glBlendFunc },
|
---|
253 | { "glCallList", (gl_function) glCallList },
|
---|
254 | { "glCallLists", (gl_function) glCallLists },
|
---|
255 | { "glClear", (gl_function) glClear },
|
---|
256 | { "glClearAccum", (gl_function) glClearAccum },
|
---|
257 | { "glClearColor", (gl_function) glClearColor },
|
---|
258 | { "glClearDepth", (gl_function) glClearDepth },
|
---|
259 | { "glClearIndex", (gl_function) glClearIndex },
|
---|
260 | { "glClearStencil", (gl_function) glClearStencil },
|
---|
261 | { "glClipPlane", (gl_function) glClipPlane },
|
---|
262 | { "glColor3b", (gl_function) glColor3b },
|
---|
263 | { "glColor3bv", (gl_function) glColor3bv },
|
---|
264 | { "glColor3d", (gl_function) glColor3d },
|
---|
265 | { "glColor3dv", (gl_function) glColor3dv },
|
---|
266 | { "glColor3f", (gl_function) glColor3f },
|
---|
267 | { "glColor3fv", (gl_function) glColor3fv },
|
---|
268 | { "glColor3i", (gl_function) glColor3i },
|
---|
269 | { "glColor3iv", (gl_function) glColor3iv },
|
---|
270 | { "glColor3s", (gl_function) glColor3s },
|
---|
271 | { "glColor3sv", (gl_function) glColor3sv },
|
---|
272 | { "glColor3ub", (gl_function) glColor3ub },
|
---|
273 | { "glColor3ubv", (gl_function) glColor3ubv },
|
---|
274 | { "glColor3ui", (gl_function) glColor3ui },
|
---|
275 | { "glColor3uiv", (gl_function) glColor3uiv },
|
---|
276 | { "glColor3us", (gl_function) glColor3us },
|
---|
277 | { "glColor3usv", (gl_function) glColor3usv },
|
---|
278 | { "glColor4b", (gl_function) glColor4b },
|
---|
279 | { "glColor4bv", (gl_function) glColor4bv },
|
---|
280 | { "glColor4d", (gl_function) glColor4d },
|
---|
281 | { "glColor4dv", (gl_function) glColor4dv },
|
---|
282 | { "glColor4f", (gl_function) glColor4f },
|
---|
283 | { "glColor4fv", (gl_function) glColor4fv },
|
---|
284 | { "glColor4i", (gl_function) glColor4i },
|
---|
285 | { "glColor4iv", (gl_function) glColor4iv },
|
---|
286 | { "glColor4s", (gl_function) glColor4s },
|
---|
287 | { "glColor4sv", (gl_function) glColor4sv },
|
---|
288 | { "glColor4ub", (gl_function) glColor4ub },
|
---|
289 | { "glColor4ubv", (gl_function) glColor4ubv },
|
---|
290 | { "glColor4ui", (gl_function) glColor4ui },
|
---|
291 | { "glColor4uiv", (gl_function) glColor4uiv },
|
---|
292 | { "glColor4us", (gl_function) glColor4us },
|
---|
293 | { "glColor4usv", (gl_function) glColor4usv },
|
---|
294 | { "glColorMask", (gl_function) glColorMask },
|
---|
295 | { "glColorMaterial", (gl_function) glColorMaterial },
|
---|
296 | { "glCopyPixels", (gl_function) glCopyPixels },
|
---|
297 | { "glCullFace", (gl_function) glCullFace },
|
---|
298 | { "glDeleteLists", (gl_function) glDeleteLists },
|
---|
299 | { "glDepthFunc", (gl_function) glDepthFunc },
|
---|
300 | { "glDepthMask", (gl_function) glDepthMask },
|
---|
301 | { "glDepthRange", (gl_function) glDepthRange },
|
---|
302 | { "glDisable", (gl_function) glDisable },
|
---|
303 | { "glDrawBuffer", (gl_function) glDrawBuffer },
|
---|
304 | { "glDrawPixels", (gl_function) glDrawPixels },
|
---|
305 | { "glEdgeFlag", (gl_function) glEdgeFlag },
|
---|
306 | { "glEdgeFlagv", (gl_function) glEdgeFlagv },
|
---|
307 | { "glEnable", (gl_function) glEnable },
|
---|
308 | { "glEnd", (gl_function) glEnd },
|
---|
309 | { "glEndList", (gl_function) glEndList },
|
---|
310 | { "glEvalCoord1d", (gl_function) glEvalCoord1d },
|
---|
311 | { "glEvalCoord1dv", (gl_function) glEvalCoord1dv },
|
---|
312 | { "glEvalCoord1f", (gl_function) glEvalCoord1f },
|
---|
313 | { "glEvalCoord1fv", (gl_function) glEvalCoord1fv },
|
---|
314 | { "glEvalCoord2d", (gl_function) glEvalCoord2d },
|
---|
315 | { "glEvalCoord2dv", (gl_function) glEvalCoord2dv },
|
---|
316 | { "glEvalCoord2f", (gl_function) glEvalCoord2f },
|
---|
317 | { "glEvalCoord2fv", (gl_function) glEvalCoord2fv },
|
---|
318 | { "glEvalMesh1", (gl_function) glEvalMesh1 },
|
---|
319 | { "glEvalMesh2", (gl_function) glEvalMesh2 },
|
---|
320 | { "glEvalPoint1", (gl_function) glEvalPoint1 },
|
---|
321 | { "glEvalPoint2", (gl_function) glEvalPoint2 },
|
---|
322 | { "glFeedbackBuffer", (gl_function) glFeedbackBuffer },
|
---|
323 | { "glFinish", (gl_function) glFinish },
|
---|
324 | { "glFlush", (gl_function) glFlush },
|
---|
325 | { "glFogf", (gl_function) glFogf },
|
---|
326 | { "glFogfv", (gl_function) glFogfv },
|
---|
327 | { "glFogi", (gl_function) glFogi },
|
---|
328 | { "glFogiv", (gl_function) glFogiv },
|
---|
329 | { "glFrontFace", (gl_function) glFrontFace },
|
---|
330 | { "glFrustum", (gl_function) glFrustum },
|
---|
331 | { "glGenLists", (gl_function) glGenLists },
|
---|
332 | { "glGetBooleanv", (gl_function) glGetBooleanv },
|
---|
333 | { "glGetClipPlane", (gl_function) glGetClipPlane },
|
---|
334 | { "glGetDoublev", (gl_function) glGetDoublev },
|
---|
335 | { "glGetError", (gl_function) glGetError },
|
---|
336 | { "glGetFloatv", (gl_function) glGetFloatv },
|
---|
337 | { "glGetIntegerv", (gl_function) glGetIntegerv },
|
---|
338 | { "glGetLightfv", (gl_function) glGetLightfv },
|
---|
339 | { "glGetLightiv", (gl_function) glGetLightiv },
|
---|
340 | { "glGetMapdv", (gl_function) glGetMapdv },
|
---|
341 | { "glGetMapfv", (gl_function) glGetMapfv },
|
---|
342 | { "glGetMapiv", (gl_function) glGetMapiv },
|
---|
343 | { "glGetMaterialfv", (gl_function) glGetMaterialfv },
|
---|
344 | { "glGetMaterialiv", (gl_function) glGetMaterialiv },
|
---|
345 | { "glGetPixelMapfv", (gl_function) glGetPixelMapfv },
|
---|
346 | { "glGetPixelMapuiv", (gl_function) glGetPixelMapuiv },
|
---|
347 | { "glGetPixelMapusv", (gl_function) glGetPixelMapusv },
|
---|
348 | { "glGetPolygonStipple", (gl_function) glGetPolygonStipple },
|
---|
349 | { "glGetString", (gl_function) glGetString },
|
---|
350 | { "glGetTexEnvfv", (gl_function) glGetTexEnvfv },
|
---|
351 | { "glGetTexEnviv", (gl_function) glGetTexEnviv },
|
---|
352 | { "glGetTexGendv", (gl_function) glGetTexGendv },
|
---|
353 | { "glGetTexGenfv", (gl_function) glGetTexGenfv },
|
---|
354 | { "glGetTexGeniv", (gl_function) glGetTexGeniv },
|
---|
355 | { "glGetTexImage", (gl_function) glGetTexImage },
|
---|
356 | { "glGetTexLevelParameterfv", (gl_function) glGetTexLevelParameterfv },
|
---|
357 | { "glGetTexLevelParameteriv", (gl_function) glGetTexLevelParameteriv },
|
---|
358 | { "glGetTexParameterfv", (gl_function) glGetTexParameterfv },
|
---|
359 | { "glGetTexParameteriv", (gl_function) glGetTexParameteriv },
|
---|
360 | { "glHint", (gl_function) glHint },
|
---|
361 | { "glIndexMask", (gl_function) glIndexMask },
|
---|
362 | { "glIndexd", (gl_function) glIndexd },
|
---|
363 | { "glIndexdv", (gl_function) glIndexdv },
|
---|
364 | { "glIndexf", (gl_function) glIndexf },
|
---|
365 | { "glIndexfv", (gl_function) glIndexfv },
|
---|
366 | { "glIndexi", (gl_function) glIndexi },
|
---|
367 | { "glIndexiv", (gl_function) glIndexiv },
|
---|
368 | { "glIndexs", (gl_function) glIndexs },
|
---|
369 | { "glIndexsv", (gl_function) glIndexsv },
|
---|
370 | { "glInitNames", (gl_function) glInitNames },
|
---|
371 | { "glIsEnabled", (gl_function) glIsEnabled },
|
---|
372 | { "glIsList", (gl_function) glIsList },
|
---|
373 | { "glLightModelf", (gl_function) glLightModelf },
|
---|
374 | { "glLightModelfv", (gl_function) glLightModelfv },
|
---|
375 | { "glLightModeli", (gl_function) glLightModeli },
|
---|
376 | { "glLightModeliv", (gl_function) glLightModeliv },
|
---|
377 | { "glLightf", (gl_function) glLightf },
|
---|
378 | { "glLightfv", (gl_function) glLightfv },
|
---|
379 | { "glLighti", (gl_function) glLighti },
|
---|
380 | { "glLightiv", (gl_function) glLightiv },
|
---|
381 | { "glLineStipple", (gl_function) glLineStipple },
|
---|
382 | { "glLineWidth", (gl_function) glLineWidth },
|
---|
383 | { "glListBase", (gl_function) glListBase },
|
---|
384 | { "glLoadIdentity", (gl_function) glLoadIdentity },
|
---|
385 | { "glLoadMatrixd", (gl_function) glLoadMatrixd },
|
---|
386 | { "glLoadMatrixf", (gl_function) glLoadMatrixf },
|
---|
387 | { "glLoadName", (gl_function) glLoadName },
|
---|
388 | { "glLogicOp", (gl_function) glLogicOp },
|
---|
389 | { "glMap1d", (gl_function) glMap1d },
|
---|
390 | { "glMap1f", (gl_function) glMap1f },
|
---|
391 | { "glMap2d", (gl_function) glMap2d },
|
---|
392 | { "glMap2f", (gl_function) glMap2f },
|
---|
393 | { "glMapGrid1d", (gl_function) glMapGrid1d },
|
---|
394 | { "glMapGrid1f", (gl_function) glMapGrid1f },
|
---|
395 | { "glMapGrid2d", (gl_function) glMapGrid2d },
|
---|
396 | { "glMapGrid2f", (gl_function) glMapGrid2f },
|
---|
397 | { "glMaterialf", (gl_function) glMaterialf },
|
---|
398 | { "glMaterialfv", (gl_function) glMaterialfv },
|
---|
399 | { "glMateriali", (gl_function) glMateriali },
|
---|
400 | { "glMaterialiv", (gl_function) glMaterialiv },
|
---|
401 | { "glMatrixMode", (gl_function) glMatrixMode },
|
---|
402 | { "glMultMatrixd", (gl_function) glMultMatrixd },
|
---|
403 | { "glMultMatrixf", (gl_function) glMultMatrixf },
|
---|
404 | { "glNewList", (gl_function) glNewList },
|
---|
405 | { "glNormal3b", (gl_function) glNormal3b },
|
---|
406 | { "glNormal3bv", (gl_function) glNormal3bv },
|
---|
407 | { "glNormal3d", (gl_function) glNormal3d },
|
---|
408 | { "glNormal3dv", (gl_function) glNormal3dv },
|
---|
409 | { "glNormal3f", (gl_function) glNormal3f },
|
---|
410 | { "glNormal3fv", (gl_function) glNormal3fv },
|
---|
411 | { "glNormal3i", (gl_function) glNormal3i },
|
---|
412 | { "glNormal3iv", (gl_function) glNormal3iv },
|
---|
413 | { "glNormal3s", (gl_function) glNormal3s },
|
---|
414 | { "glNormal3sv", (gl_function) glNormal3sv },
|
---|
415 | { "glOrtho", (gl_function) glOrtho },
|
---|
416 | { "glPassThrough", (gl_function) glPassThrough },
|
---|
417 | { "glPixelMapfv", (gl_function) glPixelMapfv },
|
---|
418 | { "glPixelMapuiv", (gl_function) glPixelMapuiv },
|
---|
419 | { "glPixelMapusv", (gl_function) glPixelMapusv },
|
---|
420 | { "glPixelStoref", (gl_function) glPixelStoref },
|
---|
421 | { "glPixelStorei", (gl_function) glPixelStorei },
|
---|
422 | { "glPixelTransferf", (gl_function) glPixelTransferf },
|
---|
423 | { "glPixelTransferi", (gl_function) glPixelTransferi },
|
---|
424 | { "glPixelZoom", (gl_function) glPixelZoom },
|
---|
425 | { "glPointSize", (gl_function) glPointSize },
|
---|
426 | { "glPolygonMode", (gl_function) glPolygonMode },
|
---|
427 | { "glPolygonOffset", (gl_function) glPolygonOffset },
|
---|
428 | { "glPolygonStipple", (gl_function) glPolygonStipple },
|
---|
429 | { "glPopAttrib", (gl_function) glPopAttrib },
|
---|
430 | { "glPopMatrix", (gl_function) glPopMatrix },
|
---|
431 | { "glPopName", (gl_function) glPopName },
|
---|
432 | { "glPushAttrib", (gl_function) glPushAttrib },
|
---|
433 | { "glPushMatrix", (gl_function) glPushMatrix },
|
---|
434 | { "glPushName", (gl_function) glPushName },
|
---|
435 | { "glRasterPos2d", (gl_function) glRasterPos2d },
|
---|
436 | { "glRasterPos2dv", (gl_function) glRasterPos2dv },
|
---|
437 | { "glRasterPos2f", (gl_function) glRasterPos2f },
|
---|
438 | { "glRasterPos2fv", (gl_function) glRasterPos2fv },
|
---|
439 | { "glRasterPos2i", (gl_function) glRasterPos2i },
|
---|
440 | { "glRasterPos2iv", (gl_function) glRasterPos2iv },
|
---|
441 | { "glRasterPos2s", (gl_function) glRasterPos2s },
|
---|
442 | { "glRasterPos2sv", (gl_function) glRasterPos2sv },
|
---|
443 | { "glRasterPos3d", (gl_function) glRasterPos3d },
|
---|
444 | { "glRasterPos3dv", (gl_function) glRasterPos3dv },
|
---|
445 | { "glRasterPos3f", (gl_function) glRasterPos3f },
|
---|
446 | { "glRasterPos3fv", (gl_function) glRasterPos3fv },
|
---|
447 | { "glRasterPos3i", (gl_function) glRasterPos3i },
|
---|
448 | { "glRasterPos3iv", (gl_function) glRasterPos3iv },
|
---|
449 | { "glRasterPos3s", (gl_function) glRasterPos3s },
|
---|
450 | { "glRasterPos3sv", (gl_function) glRasterPos3sv },
|
---|
451 | { "glRasterPos4d", (gl_function) glRasterPos4d },
|
---|
452 | { "glRasterPos4dv", (gl_function) glRasterPos4dv },
|
---|
453 | { "glRasterPos4f", (gl_function) glRasterPos4f },
|
---|
454 | { "glRasterPos4fv", (gl_function) glRasterPos4fv },
|
---|
455 | { "glRasterPos4i", (gl_function) glRasterPos4i },
|
---|
456 | { "glRasterPos4iv", (gl_function) glRasterPos4iv },
|
---|
457 | { "glRasterPos4s", (gl_function) glRasterPos4s },
|
---|
458 | { "glRasterPos4sv", (gl_function) glRasterPos4sv },
|
---|
459 | { "glReadBuffer", (gl_function) glReadBuffer },
|
---|
460 | { "glReadPixels", (gl_function) glReadPixels },
|
---|
461 | { "glRectd", (gl_function) glRectd },
|
---|
462 | { "glRectdv", (gl_function) glRectdv },
|
---|
463 | { "glRectf", (gl_function) glRectf },
|
---|
464 | { "glRectfv", (gl_function) glRectfv },
|
---|
465 | { "glRecti", (gl_function) glRecti },
|
---|
466 | { "glRectiv", (gl_function) glRectiv },
|
---|
467 | { "glRects", (gl_function) glRects },
|
---|
468 | { "glRectsv", (gl_function) glRectsv },
|
---|
469 | { "glRenderMode", (gl_function) glRenderMode },
|
---|
470 | { "glRotated", (gl_function) glRotated },
|
---|
471 | { "glRotatef", (gl_function) glRotatef },
|
---|
472 | { "glScaled", (gl_function) glScaled },
|
---|
473 | { "glScalef", (gl_function) glScalef },
|
---|
474 | { "glScissor", (gl_function) glScissor },
|
---|
475 | { "glSelectBuffer", (gl_function) glSelectBuffer },
|
---|
476 | { "glShadeModel", (gl_function) glShadeModel },
|
---|
477 | { "glStencilFunc", (gl_function) glStencilFunc },
|
---|
478 | { "glStencilMask", (gl_function) glStencilMask },
|
---|
479 | { "glStencilOp", (gl_function) glStencilOp },
|
---|
480 | { "glTexCoord1d", (gl_function) glTexCoord1d },
|
---|
481 | { "glTexCoord1dv", (gl_function) glTexCoord1dv },
|
---|
482 | { "glTexCoord1f", (gl_function) glTexCoord1f },
|
---|
483 | { "glTexCoord1fv", (gl_function) glTexCoord1fv },
|
---|
484 | { "glTexCoord1i", (gl_function) glTexCoord1i },
|
---|
485 | { "glTexCoord1iv", (gl_function) glTexCoord1iv },
|
---|
486 | { "glTexCoord1s", (gl_function) glTexCoord1s },
|
---|
487 | { "glTexCoord1sv", (gl_function) glTexCoord1sv },
|
---|
488 | { "glTexCoord2d", (gl_function) glTexCoord2d },
|
---|
489 | { "glTexCoord2dv", (gl_function) glTexCoord2dv },
|
---|
490 | { "glTexCoord2f", (gl_function) glTexCoord2f },
|
---|
491 | { "glTexCoord2fv", (gl_function) glTexCoord2fv },
|
---|
492 | { "glTexCoord2i", (gl_function) glTexCoord2i },
|
---|
493 | { "glTexCoord2iv", (gl_function) glTexCoord2iv },
|
---|
494 | { "glTexCoord2s", (gl_function) glTexCoord2s },
|
---|
495 | { "glTexCoord2sv", (gl_function) glTexCoord2sv },
|
---|
496 | { "glTexCoord3d", (gl_function) glTexCoord3d },
|
---|
497 | { "glTexCoord3dv", (gl_function) glTexCoord3dv },
|
---|
498 | { "glTexCoord3f", (gl_function) glTexCoord3f },
|
---|
499 | { "glTexCoord3fv", (gl_function) glTexCoord3fv },
|
---|
500 | { "glTexCoord3i", (gl_function) glTexCoord3i },
|
---|
501 | { "glTexCoord3iv", (gl_function) glTexCoord3iv },
|
---|
502 | { "glTexCoord3s", (gl_function) glTexCoord3s },
|
---|
503 | { "glTexCoord3sv", (gl_function) glTexCoord3sv },
|
---|
504 | { "glTexCoord4d", (gl_function) glTexCoord4d },
|
---|
505 | { "glTexCoord4dv", (gl_function) glTexCoord4dv },
|
---|
506 | { "glTexCoord4f", (gl_function) glTexCoord4f },
|
---|
507 | { "glTexCoord4fv", (gl_function) glTexCoord4fv },
|
---|
508 | { "glTexCoord4i", (gl_function) glTexCoord4i },
|
---|
509 | { "glTexCoord4iv", (gl_function) glTexCoord4iv },
|
---|
510 | { "glTexCoord4s", (gl_function) glTexCoord4s },
|
---|
511 | { "glTexCoord4sv", (gl_function) glTexCoord4sv },
|
---|
512 | { "glTexEnvf", (gl_function) glTexEnvf },
|
---|
513 | { "glTexEnvfv", (gl_function) glTexEnvfv },
|
---|
514 | { "glTexEnvi", (gl_function) glTexEnvi },
|
---|
515 | { "glTexEnviv", (gl_function) glTexEnviv },
|
---|
516 | { "glTexGend", (gl_function) glTexGend },
|
---|
517 | { "glTexGendv", (gl_function) glTexGendv },
|
---|
518 | { "glTexGenf", (gl_function) glTexGenf },
|
---|
519 | { "glTexGenfv", (gl_function) glTexGenfv },
|
---|
520 | { "glTexGeni", (gl_function) glTexGeni },
|
---|
521 | { "glTexGeniv", (gl_function) glTexGeniv },
|
---|
522 | { "glTexImage1D", (gl_function) glTexImage1D },
|
---|
523 | { "glTexImage2D", (gl_function) glTexImage2D },
|
---|
524 | { "glTexParameterf", (gl_function) glTexParameterf },
|
---|
525 | { "glTexParameterfv", (gl_function) glTexParameterfv },
|
---|
526 | { "glTexParameteri", (gl_function) glTexParameteri },
|
---|
527 | { "glTexParameteriv", (gl_function) glTexParameteriv },
|
---|
528 | { "glTranslated", (gl_function) glTranslated },
|
---|
529 | { "glTranslatef", (gl_function) glTranslatef },
|
---|
530 | { "glVertex2d", (gl_function) glVertex2d },
|
---|
531 | { "glVertex2dv", (gl_function) glVertex2dv },
|
---|
532 | { "glVertex2f", (gl_function) glVertex2f },
|
---|
533 | { "glVertex2fv", (gl_function) glVertex2fv },
|
---|
534 | { "glVertex2i", (gl_function) glVertex2i },
|
---|
535 | { "glVertex2iv", (gl_function) glVertex2iv },
|
---|
536 | { "glVertex2s", (gl_function) glVertex2s },
|
---|
537 | { "glVertex2sv", (gl_function) glVertex2sv },
|
---|
538 | { "glVertex3d", (gl_function) glVertex3d },
|
---|
539 | { "glVertex3dv", (gl_function) glVertex3dv },
|
---|
540 | { "glVertex3f", (gl_function) glVertex3f },
|
---|
541 | { "glVertex3fv", (gl_function) glVertex3fv },
|
---|
542 | { "glVertex3i", (gl_function) glVertex3i },
|
---|
543 | { "glVertex3iv", (gl_function) glVertex3iv },
|
---|
544 | { "glVertex3s", (gl_function) glVertex3s },
|
---|
545 | { "glVertex3sv", (gl_function) glVertex3sv },
|
---|
546 | { "glVertex4d", (gl_function) glVertex4d },
|
---|
547 | { "glVertex4dv", (gl_function) glVertex4dv },
|
---|
548 | { "glVertex4f", (gl_function) glVertex4f },
|
---|
549 | { "glVertex4fv", (gl_function) glVertex4fv },
|
---|
550 | { "glVertex4i", (gl_function) glVertex4i },
|
---|
551 | { "glVertex4iv", (gl_function) glVertex4iv },
|
---|
552 | { "glVertex4s", (gl_function) glVertex4s },
|
---|
553 | { "glVertex4sv", (gl_function) glVertex4sv },
|
---|
554 | { "glViewport", (gl_function) glViewport },
|
---|
555 |
|
---|
556 | /* OpenGL 1.1 functions */
|
---|
557 | { "glAreTexturesResident", (gl_function) glAreTexturesResident },
|
---|
558 | { "glArrayElement", (gl_function) glArrayElement },
|
---|
559 | { "glBindTexture", (gl_function) glBindTexture },
|
---|
560 | { "glColorPointer", (gl_function) glColorPointer },
|
---|
561 | { "glCopyTexImage1D", (gl_function) glCopyTexImage1D },
|
---|
562 | { "glCopyTexImage2D", (gl_function) glCopyTexImage2D },
|
---|
563 | { "glCopyTexSubImage1D", (gl_function) glCopyTexSubImage1D },
|
---|
564 | { "glCopyTexSubImage2D", (gl_function) glCopyTexSubImage2D },
|
---|
565 | { "glDeleteTextures", (gl_function) glDeleteTextures },
|
---|
566 | { "glDisableClientState", (gl_function) glDisableClientState },
|
---|
567 | { "glDrawArrays", (gl_function) glDrawArrays },
|
---|
568 | { "glDrawElements", (gl_function) glDrawElements },
|
---|
569 | { "glEdgeFlagPointer", (gl_function) glEdgeFlagPointer },
|
---|
570 | { "glEnableClientState", (gl_function) glEnableClientState },
|
---|
571 | { "glGenTextures", (gl_function) glGenTextures },
|
---|
572 | { "glGetPointerv", (gl_function) glGetPointerv },
|
---|
573 | { "glIndexPointer", (gl_function) glIndexPointer },
|
---|
574 | { "glIndexub", (gl_function) glIndexub },
|
---|
575 | { "glIndexubv", (gl_function) glIndexubv },
|
---|
576 | { "glInterleavedArrays", (gl_function) glInterleavedArrays },
|
---|
577 | { "glIsTexture", (gl_function) glIsTexture },
|
---|
578 | { "glNormalPointer", (gl_function) glNormalPointer },
|
---|
579 | { "glPopClientAttrib", (gl_function) glPopClientAttrib },
|
---|
580 | { "glPrioritizeTextures", (gl_function) glPrioritizeTextures },
|
---|
581 | { "glPushClientAttrib", (gl_function) glPushClientAttrib },
|
---|
582 | { "glTexCoordPointer", (gl_function) glTexCoordPointer },
|
---|
583 | { "glTexSubImage1D", (gl_function) glTexSubImage1D },
|
---|
584 | { "glTexSubImage2D", (gl_function) glTexSubImage2D },
|
---|
585 | { "glVertexPointer", (gl_function) glVertexPointer },
|
---|
586 |
|
---|
587 | /* OpenGL 1.2 functions */
|
---|
588 | { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D },
|
---|
589 | { "glDrawRangeElements", (gl_function) glDrawRangeElements },
|
---|
590 | { "glTexImage3D", (gl_function) glTexImage3D },
|
---|
591 | { "glTexSubImage3D", (gl_function) glTexSubImage3D },
|
---|
592 |
|
---|
593 | /* ARB_imaging functions */
|
---|
594 | { "glBlendColor", (gl_function) glBlendColor },
|
---|
595 | { "glBlendEquation", (gl_function) glBlendEquation },
|
---|
596 | { "glColorSubTable", (gl_function) glColorSubTable },
|
---|
597 | { "glColorTable", (gl_function) glColorTable },
|
---|
598 | { "glColorTableParameterfv", (gl_function) glColorTableParameterfv },
|
---|
599 | { "glColorTableParameteriv", (gl_function) glColorTableParameteriv },
|
---|
600 | { "glConvolutionFilter1D", (gl_function) glConvolutionFilter1D },
|
---|
601 | { "glConvolutionFilter2D", (gl_function) glConvolutionFilter2D },
|
---|
602 | { "glConvolutionParameterf", (gl_function) glConvolutionParameterf },
|
---|
603 | { "glConvolutionParameterfv", (gl_function) glConvolutionParameterfv },
|
---|
604 | { "glConvolutionParameteri", (gl_function) glConvolutionParameteri },
|
---|
605 | { "glConvolutionParameteriv", (gl_function) glConvolutionParameteriv },
|
---|
606 | { "glCopyColorSubTable", (gl_function) glCopyColorSubTable },
|
---|
607 | { "glCopyColorTable", (gl_function) glCopyColorTable },
|
---|
608 | { "glCopyConvolutionFilter1D", (gl_function) glCopyConvolutionFilter1D },
|
---|
609 | { "glCopyConvolutionFilter2D", (gl_function) glCopyConvolutionFilter2D },
|
---|
610 | { "glGetColorTable", (gl_function) glGetColorTable },
|
---|
611 | { "glGetColorTableParameterfv", (gl_function) glGetColorTableParameterfv },
|
---|
612 | { "glGetColorTableParameteriv", (gl_function) glGetColorTableParameteriv },
|
---|
613 | { "glGetConvolutionFilter", (gl_function) glGetConvolutionFilter },
|
---|
614 | { "glGetConvolutionParameterfv", (gl_function) glGetConvolutionParameterfv },
|
---|
615 | { "glGetConvolutionParameteriv", (gl_function) glGetConvolutionParameteriv },
|
---|
616 | { "glGetHistogram", (gl_function) glGetHistogram },
|
---|
617 | { "glGetHistogramParameterfv", (gl_function) glGetHistogramParameterfv },
|
---|
618 | { "glGetHistogramParameteriv", (gl_function) glGetHistogramParameteriv },
|
---|
619 | { "glGetMinmax", (gl_function) glGetMinmax },
|
---|
620 | { "glGetMinmaxParameterfv", (gl_function) glGetMinmaxParameterfv },
|
---|
621 | { "glGetMinmaxParameteriv", (gl_function) glGetMinmaxParameteriv },
|
---|
622 | { "glGetSeparableFilter", (gl_function) glGetSeparableFilter },
|
---|
623 | { "glHistogram", (gl_function) glHistogram },
|
---|
624 | { "glMinmax", (gl_function) glMinmax },
|
---|
625 | { "glResetHistogram", (gl_function) glResetHistogram },
|
---|
626 | { "glResetMinmax", (gl_function) glResetMinmax },
|
---|
627 | { "glSeparableFilter2D", (gl_function) glSeparableFilter2D },
|
---|
628 |
|
---|
629 | /* GL_EXT_paletted_texture */
|
---|
630 | { "glColorTableEXT", (gl_function) glColorTableEXT },
|
---|
631 | { "glColorSubTableEXT", (gl_function) glColorSubTableEXT },
|
---|
632 | { "glGetColorTableEXT", (gl_function) glGetColorTableEXT },
|
---|
633 | { "glGetColorTableParameterfvEXT", (gl_function) glGetColorTableParameterfvEXT },
|
---|
634 | { "glGetColorTableParameterivEXT", (gl_function) glGetColorTableParameterivEXT },
|
---|
635 |
|
---|
636 | /* GL_EXT_compiled_vertex_array */
|
---|
637 | { "glLockArraysEXT", (gl_function) glLockArraysEXT },
|
---|
638 | { "glUnlockArraysEXT", (gl_function) glUnlockArraysEXT },
|
---|
639 |
|
---|
640 | /* GL_EXT_point_parameters */
|
---|
641 | { "glPointParameterfEXT", (gl_function) glPointParameterfEXT },
|
---|
642 | { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT },
|
---|
643 |
|
---|
644 | /* GL_EXT_polygon_offset */
|
---|
645 | { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT },
|
---|
646 |
|
---|
647 | /* GL_EXT_blend_minmax */
|
---|
648 | { "glBlendEquationEXT", (gl_function) glBlendEquationEXT },
|
---|
649 |
|
---|
650 | /* GL_EXT_blend_color */
|
---|
651 | { "glBlendColorEXT", (gl_function) glBlendColorEXT },
|
---|
652 |
|
---|
653 | /* GL_EXT_vertex_arrays */
|
---|
654 | { "glVertexPointerEXT", (gl_function) glVertexPointerEXT },
|
---|
655 | { "glNormalPointerEXT", (gl_function) glNormalPointerEXT },
|
---|
656 | { "glColorPointerEXT", (gl_function) glColorPointerEXT },
|
---|
657 | { "glIndexPointerEXT", (gl_function) glIndexPointerEXT },
|
---|
658 | { "glTexCoordPointerEXT", (gl_function) glTexCoordPointerEXT },
|
---|
659 | { "glEdgeFlagPointerEXT", (gl_function) glEdgeFlagPointerEXT },
|
---|
660 | { "glGetPointervEXT", (gl_function) glGetPointervEXT },
|
---|
661 | { "glArrayElementEXT", (gl_function) glArrayElementEXT },
|
---|
662 | { "glDrawArraysEXT", (gl_function) glDrawArraysEXT },
|
---|
663 |
|
---|
664 | /* GL_EXT_texture_object */
|
---|
665 | { "glGenTexturesEXT", (gl_function) glGenTexturesEXT },
|
---|
666 | { "glDeleteTexturesEXT", (gl_function) glDeleteTexturesEXT },
|
---|
667 | { "glBindTextureEXT", (gl_function) glBindTextureEXT },
|
---|
668 | { "glPrioritizeTexturesEXT", (gl_function) glPrioritizeTexturesEXT },
|
---|
669 | { "glAreTexturesResidentEXT", (gl_function) glAreTexturesResidentEXT },
|
---|
670 | { "glIsTextureEXT", (gl_function) glIsTextureEXT },
|
---|
671 |
|
---|
672 | /* GL_EXT_texture3D */
|
---|
673 | { "glTexImage3DEXT", (gl_function) glTexImage3DEXT },
|
---|
674 | { "glTexSubImage3DEXT", (gl_function) glTexSubImage3DEXT },
|
---|
675 | { "glCopyTexSubImage3DEXT", (gl_function) glCopyTexSubImage3DEXT },
|
---|
676 |
|
---|
677 | /* GL_ARB_multitexture */
|
---|
678 | { "glActiveTextureARB", (gl_function) glActiveTextureARB },
|
---|
679 | { "glClientActiveTextureARB", (gl_function) glClientActiveTextureARB },
|
---|
680 | { "glMultiTexCoord1dARB", (gl_function) glMultiTexCoord1dARB },
|
---|
681 | { "glMultiTexCoord1dvARB", (gl_function) glMultiTexCoord1dvARB },
|
---|
682 | { "glMultiTexCoord1fARB", (gl_function) glMultiTexCoord1fARB },
|
---|
683 | { "glMultiTexCoord1fvARB", (gl_function) glMultiTexCoord1fvARB },
|
---|
684 | { "glMultiTexCoord1iARB", (gl_function) glMultiTexCoord1iARB },
|
---|
685 | { "glMultiTexCoord1ivARB", (gl_function) glMultiTexCoord1ivARB },
|
---|
686 | { "glMultiTexCoord1sARB", (gl_function) glMultiTexCoord1sARB },
|
---|
687 | { "glMultiTexCoord1svARB", (gl_function) glMultiTexCoord1svARB },
|
---|
688 | { "glMultiTexCoord2dARB", (gl_function) glMultiTexCoord2dARB },
|
---|
689 | { "glMultiTexCoord2dvARB", (gl_function) glMultiTexCoord2dvARB },
|
---|
690 | { "glMultiTexCoord2fARB", (gl_function) glMultiTexCoord2fARB },
|
---|
691 | { "glMultiTexCoord2fvARB", (gl_function) glMultiTexCoord2fvARB },
|
---|
692 | { "glMultiTexCoord2iARB", (gl_function) glMultiTexCoord2iARB },
|
---|
693 | { "glMultiTexCoord2ivARB", (gl_function) glMultiTexCoord2ivARB },
|
---|
694 | { "glMultiTexCoord2sARB", (gl_function) glMultiTexCoord2sARB },
|
---|
695 | { "glMultiTexCoord2svARB", (gl_function) glMultiTexCoord2svARB },
|
---|
696 | { "glMultiTexCoord3dARB", (gl_function) glMultiTexCoord3dARB },
|
---|
697 | { "glMultiTexCoord3dvARB", (gl_function) glMultiTexCoord3dvARB },
|
---|
698 | { "glMultiTexCoord3fARB", (gl_function) glMultiTexCoord3fARB },
|
---|
699 | { "glMultiTexCoord3fvARB", (gl_function) glMultiTexCoord3fvARB },
|
---|
700 | { "glMultiTexCoord3iARB", (gl_function) glMultiTexCoord3iARB },
|
---|
701 | { "glMultiTexCoord3ivARB", (gl_function) glMultiTexCoord3ivARB },
|
---|
702 | { "glMultiTexCoord3sARB", (gl_function) glMultiTexCoord3sARB },
|
---|
703 | { "glMultiTexCoord3svARB", (gl_function) glMultiTexCoord3svARB },
|
---|
704 | { "glMultiTexCoord4dARB", (gl_function) glMultiTexCoord4dARB },
|
---|
705 | { "glMultiTexCoord4dvARB", (gl_function) glMultiTexCoord4dvARB },
|
---|
706 | { "glMultiTexCoord4fARB", (gl_function) glMultiTexCoord4fARB },
|
---|
707 | { "glMultiTexCoord4fvARB", (gl_function) glMultiTexCoord4fvARB },
|
---|
708 | { "glMultiTexCoord4iARB", (gl_function) glMultiTexCoord4iARB },
|
---|
709 | { "glMultiTexCoord4ivARB", (gl_function) glMultiTexCoord4ivARB },
|
---|
710 | { "glMultiTexCoord4sARB", (gl_function) glMultiTexCoord4sARB },
|
---|
711 | { "glMultiTexCoord4svARB", (gl_function) glMultiTexCoord4svARB },
|
---|
712 |
|
---|
713 | /* GL_INGR_blend_func_separate */
|
---|
714 | { "glBlendFuncSeparateINGR", (gl_function) glBlendFuncSeparateINGR },
|
---|
715 |
|
---|
716 | /* GL_MESA_window_pos */
|
---|
717 | { "glWindowPos2iMESA", (gl_function) glWindowPos2iMESA },
|
---|
718 | { "glWindowPos2sMESA", (gl_function) glWindowPos2sMESA },
|
---|
719 | { "glWindowPos2fMESA", (gl_function) glWindowPos2fMESA },
|
---|
720 | { "glWindowPos2dMESA", (gl_function) glWindowPos2dMESA },
|
---|
721 | { "glWindowPos2ivMESA", (gl_function) glWindowPos2ivMESA },
|
---|
722 | { "glWindowPos2svMESA", (gl_function) glWindowPos2svMESA },
|
---|
723 | { "glWindowPos2fvMESA", (gl_function) glWindowPos2fvMESA },
|
---|
724 | { "glWindowPos2dvMESA", (gl_function) glWindowPos2dvMESA },
|
---|
725 | { "glWindowPos3iMESA", (gl_function) glWindowPos3iMESA },
|
---|
726 | { "glWindowPos3sMESA", (gl_function) glWindowPos3sMESA },
|
---|
727 | { "glWindowPos3fMESA", (gl_function) glWindowPos3fMESA },
|
---|
728 | { "glWindowPos3dMESA", (gl_function) glWindowPos3dMESA },
|
---|
729 | { "glWindowPos3ivMESA", (gl_function) glWindowPos3ivMESA },
|
---|
730 | { "glWindowPos3svMESA", (gl_function) glWindowPos3svMESA },
|
---|
731 | { "glWindowPos3fvMESA", (gl_function) glWindowPos3fvMESA },
|
---|
732 | { "glWindowPos3dvMESA", (gl_function) glWindowPos3dvMESA },
|
---|
733 | { "glWindowPos4iMESA", (gl_function) glWindowPos4iMESA },
|
---|
734 | { "glWindowPos4sMESA", (gl_function) glWindowPos4sMESA },
|
---|
735 | { "glWindowPos4fMESA", (gl_function) glWindowPos4fMESA },
|
---|
736 | { "glWindowPos4dMESA", (gl_function) glWindowPos4dMESA },
|
---|
737 | { "glWindowPos4ivMESA", (gl_function) glWindowPos4ivMESA },
|
---|
738 | { "glWindowPos4svMESA", (gl_function) glWindowPos4svMESA },
|
---|
739 | { "glWindowPos4fvMESA", (gl_function) glWindowPos4fvMESA },
|
---|
740 | { "glWindowPos4dvMESA", (gl_function) glWindowPos4dvMESA },
|
---|
741 |
|
---|
742 | /* GL_MESA_resize_buffers */
|
---|
743 | { "glResizeBuffersMESA", (gl_function) glResizeBuffersMESA },
|
---|
744 |
|
---|
745 | /* GL_EXT_compiled_vertex_array */
|
---|
746 | { "glLockArraysEXT", (gl_function) glLockArraysEXT },
|
---|
747 | { "glUnlockArraysEXT", (gl_function) glUnlockArraysEXT },
|
---|
748 |
|
---|
749 | { NULL, NULL } /* end of list token */
|
---|
750 | };
|
---|
751 | GLuint i;
|
---|
752 |
|
---|
753 | for (i = 0; procTable[i].address; i++) {
|
---|
754 | if (strcmp((const char *) procName, procTable[i].name) == 0)
|
---|
755 | return procTable[i].address;
|
---|
756 | }
|
---|
757 |
|
---|
758 | return NULL;
|
---|
759 | }
|
---|