1 #ifdef WINDOWS
2 #include <windows.h>
3 #endif // WINDOWS
4 #include <SDL.h>
5 #include "load_gl_extensions.h"
6 #include "client_serv.h"
7 #ifndef MAP_EDITOR
8 #include "text.h"
9 #endif
10 #include "errors.h"
11 #include "gl_init.h"
12
13 const char* gl_versions_str[] = { "1.1", "1.2", "1.3", "1.4", "1.5", "2.0", "2.1" };
14 const Uint16 gl_versions[] = { 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0200, 0x0201 };
15
16 Uint32 gl_version = 0;
17 Uint64 extensions = 0;
18 GLint texture_units = 1;
19
20 /* GL_VERSION_1_2 */
21 PFNGLCOPYTEXSUBIMAGE3DPROC ELglCopyTexSubImage3D = NULL;
22 PFNGLDRAWRANGEELEMENTSPROC ELglDrawRangeElements = NULL;
23 PFNGLTEXIMAGE3DPROC ELglTexImage3D = NULL;
24 PFNGLTEXSUBIMAGE3DPROC ELglTexSubImage3D = NULL;
25 /* GL_VERSION_1_2 */
26
27 /* GL_VERSION_1_3 */
28 PFNGLACTIVETEXTUREPROC ELglActiveTexture = NULL;
29 PFNGLCLIENTACTIVETEXTUREPROC ELglClientActiveTexture = NULL;
30 PFNGLCOMPRESSEDTEXIMAGE1DPROC ELglCompressedTexImage1D = NULL;
31 PFNGLCOMPRESSEDTEXIMAGE2DPROC ELglCompressedTexImage2D = NULL;
32 PFNGLCOMPRESSEDTEXIMAGE3DPROC ELglCompressedTexImage3D = NULL;
33 PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC ELglCompressedTexSubImage1D = NULL;
34 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC ELglCompressedTexSubImage2D = NULL;
35 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC ELglCompressedTexSubImage3D = NULL;
36 PFNGLGETCOMPRESSEDTEXIMAGEPROC ELglGetCompressedTexImage = NULL;
37 PFNGLLOADTRANSPOSEMATRIXDPROC ELglLoadTransposeMatrixd = NULL;
38 PFNGLLOADTRANSPOSEMATRIXFPROC ELglLoadTransposeMatrixf = NULL;
39 PFNGLMULTTRANSPOSEMATRIXDPROC ELglMultTransposeMatrixd = NULL;
40 PFNGLMULTTRANSPOSEMATRIXFPROC ELglMultTransposeMatrixf = NULL;
41 PFNGLMULTITEXCOORD1DPROC ELglMultiTexCoord1d = NULL;
42 PFNGLMULTITEXCOORD1DVPROC ELglMultiTexCoord1dv = NULL;
43 PFNGLMULTITEXCOORD1FPROC ELglMultiTexCoord1f = NULL;
44 PFNGLMULTITEXCOORD1FVPROC ELglMultiTexCoord1fv = NULL;
45 PFNGLMULTITEXCOORD1IPROC ELglMultiTexCoord1i = NULL;
46 PFNGLMULTITEXCOORD1IVPROC ELglMultiTexCoord1iv = NULL;
47 PFNGLMULTITEXCOORD1SPROC ELglMultiTexCoord1s = NULL;
48 PFNGLMULTITEXCOORD1SVPROC ELglMultiTexCoord1sv = NULL;
49 PFNGLMULTITEXCOORD2DPROC ELglMultiTexCoord2d = NULL;
50 PFNGLMULTITEXCOORD2DVPROC ELglMultiTexCoord2dv = NULL;
51 PFNGLMULTITEXCOORD2FPROC ELglMultiTexCoord2f = NULL;
52 PFNGLMULTITEXCOORD2FVPROC ELglMultiTexCoord2fv = NULL;
53 PFNGLMULTITEXCOORD2IPROC ELglMultiTexCoord2i = NULL;
54 PFNGLMULTITEXCOORD2IVPROC ELglMultiTexCoord2iv = NULL;
55 PFNGLMULTITEXCOORD2SPROC ELglMultiTexCoord2s = NULL;
56 PFNGLMULTITEXCOORD2SVPROC ELglMultiTexCoord2sv = NULL;
57 PFNGLMULTITEXCOORD3DPROC ELglMultiTexCoord3d = NULL;
58 PFNGLMULTITEXCOORD3DVPROC ELglMultiTexCoord3dv = NULL;
59 PFNGLMULTITEXCOORD3FPROC ELglMultiTexCoord3f = NULL;
60 PFNGLMULTITEXCOORD3FVPROC ELglMultiTexCoord3fv = NULL;
61 PFNGLMULTITEXCOORD3IPROC ELglMultiTexCoord3i = NULL;
62 PFNGLMULTITEXCOORD3IVPROC ELglMultiTexCoord3iv = NULL;
63 PFNGLMULTITEXCOORD3SPROC ELglMultiTexCoord3s = NULL;
64 PFNGLMULTITEXCOORD3SVPROC ELglMultiTexCoord3sv = NULL;
65 PFNGLMULTITEXCOORD4DPROC ELglMultiTexCoord4d = NULL;
66 PFNGLMULTITEXCOORD4DVPROC ELglMultiTexCoord4dv = NULL;
67 PFNGLMULTITEXCOORD4FPROC ELglMultiTexCoord4f = NULL;
68 PFNGLMULTITEXCOORD4FVPROC ELglMultiTexCoord4fv = NULL;
69 PFNGLMULTITEXCOORD4IPROC ELglMultiTexCoord4i = NULL;
70 PFNGLMULTITEXCOORD4IVPROC ELglMultiTexCoord4iv = NULL;
71 PFNGLMULTITEXCOORD4SPROC ELglMultiTexCoord4s = NULL;
72 PFNGLMULTITEXCOORD4SVPROC ELglMultiTexCoord4sv = NULL;
73 PFNGLSAMPLECOVERAGEPROC ELglSampleCoverage = NULL;
74 /* GL_VERSION_1_3 */
75
76 /* GL_VERSION_1_4 */
77 PFNGLBLENDCOLORPROC ELglBlendColor = NULL;
78 PFNGLBLENDEQUATIONPROC ELglBlendEquation = NULL;
79 PFNGLBLENDFUNCSEPARATEPROC ELglBlendFuncSeparate = NULL;
80 PFNGLFOGCOORDPOINTERPROC ELglFogCoordPointer = NULL;
81 PFNGLFOGCOORDDPROC ELglFogCoordd = NULL;
82 PFNGLFOGCOORDDVPROC ELglFogCoorddv = NULL;
83 PFNGLFOGCOORDFPROC ELglFogCoordf = NULL;
84 PFNGLFOGCOORDFVPROC ELglFogCoordfv = NULL;
85 PFNGLMULTIDRAWARRAYSPROC ELglMultiDrawArrays = NULL;
86 PFNGLMULTIDRAWELEMENTSPROC ELglMultiDrawElements = NULL;
87 PFNGLPOINTPARAMETERFPROC ELglPointParameterf = NULL;
88 PFNGLPOINTPARAMETERFVPROC ELglPointParameterfv = NULL;
89 PFNGLSECONDARYCOLOR3BPROC ELglSecondaryColor3b = NULL;
90 PFNGLSECONDARYCOLOR3BVPROC ELglSecondaryColor3bv = NULL;
91 PFNGLSECONDARYCOLOR3DPROC ELglSecondaryColor3d = NULL;
92 PFNGLSECONDARYCOLOR3DVPROC ELglSecondaryColor3dv = NULL;
93 PFNGLSECONDARYCOLOR3FPROC ELglSecondaryColor3f = NULL;
94 PFNGLSECONDARYCOLOR3FVPROC ELglSecondaryColor3fv = NULL;
95 PFNGLSECONDARYCOLOR3IPROC ELglSecondaryColor3i = NULL;
96 PFNGLSECONDARYCOLOR3IVPROC ELglSecondaryColor3iv = NULL;
97 PFNGLSECONDARYCOLOR3SPROC ELglSecondaryColor3s = NULL;
98 PFNGLSECONDARYCOLOR3SVPROC ELglSecondaryColor3sv = NULL;
99 PFNGLSECONDARYCOLOR3UBPROC ELglSecondaryColor3ub = NULL;
100 PFNGLSECONDARYCOLOR3UBVPROC ELglSecondaryColor3ubv = NULL;
101 PFNGLSECONDARYCOLOR3UIPROC ELglSecondaryColor3ui = NULL;
102 PFNGLSECONDARYCOLOR3UIVPROC ELglSecondaryColor3uiv = NULL;
103 PFNGLSECONDARYCOLOR3USPROC ELglSecondaryColor3us = NULL;
104 PFNGLSECONDARYCOLOR3USVPROC ELglSecondaryColor3usv = NULL;
105 PFNGLSECONDARYCOLORPOINTERPROC ELglSecondaryColorPointer = NULL;
106 PFNGLWINDOWPOS2DPROC ELglWindowPos2d = NULL;
107 PFNGLWINDOWPOS2DVPROC ELglWindowPos2dv = NULL;
108 PFNGLWINDOWPOS2FPROC ELglWindowPos2f = NULL;
109 PFNGLWINDOWPOS2FVPROC ELglWindowPos2fv = NULL;
110 PFNGLWINDOWPOS2IPROC ELglWindowPos2i = NULL;
111 PFNGLWINDOWPOS2IVPROC ELglWindowPos2iv = NULL;
112 PFNGLWINDOWPOS2SPROC ELglWindowPos2s = NULL;
113 PFNGLWINDOWPOS2SVPROC ELglWindowPos2sv = NULL;
114 PFNGLWINDOWPOS3DPROC ELglWindowPos3d = NULL;
115 PFNGLWINDOWPOS3DVPROC ELglWindowPos3dv = NULL;
116 PFNGLWINDOWPOS3FPROC ELglWindowPos3f = NULL;
117 PFNGLWINDOWPOS3FVPROC ELglWindowPos3fv = NULL;
118 PFNGLWINDOWPOS3IPROC ELglWindowPos3i = NULL;
119 PFNGLWINDOWPOS3IVPROC ELglWindowPos3iv = NULL;
120 PFNGLWINDOWPOS3SPROC ELglWindowPos3s = NULL;
121 PFNGLWINDOWPOS3SVPROC ELglWindowPos3sv = NULL;
122 /* GL_VERSION_1_4 */
123
124 /* GL_VERSION_1_5 */
125 PFNGLBEGINQUERYPROC ELglBeginQuery = NULL;
126 PFNGLBINDBUFFERPROC ELglBindBuffer = NULL;
127 PFNGLBUFFERDATAPROC ELglBufferData = NULL;
128 PFNGLBUFFERSUBDATAPROC ELglBufferSubData = NULL;
129 PFNGLDELETEBUFFERSPROC ELglDeleteBuffers = NULL;
130 PFNGLDELETEQUERIESPROC ELglDeleteQueries = NULL;
131 PFNGLENDQUERYPROC ELglEndQuery = NULL;
132 PFNGLGENBUFFERSPROC ELglGenBuffers = NULL;
133 PFNGLGENQUERIESPROC ELglGenQueries = NULL;
134 PFNGLGETBUFFERPARAMETERIVPROC ELglGetBufferParameteriv = NULL;
135 PFNGLGETBUFFERPOINTERVPROC ELglGetBufferPointerv = NULL;
136 PFNGLGETBUFFERSUBDATAPROC ELglGetBufferSubData = NULL;
137 PFNGLGETQUERYOBJECTIVPROC ELglGetQueryObjectiv = NULL;
138 PFNGLGETQUERYOBJECTUIVPROC ELglGetQueryObjectuiv = NULL;
139 PFNGLGETQUERYIVPROC ELglGetQueryiv = NULL;
140 PFNGLISBUFFERPROC ELglIsBuffer = NULL;
141 PFNGLISQUERYPROC ELglIsQuery = NULL;
142 PFNGLMAPBUFFERPROC ELglMapBuffer = NULL;
143 PFNGLUNMAPBUFFERPROC ELglUnmapBuffer = NULL;
144 /* GL_VERSION_1_5 */
145
146 /* GL_VERSION_2_0 */
147 PFNGLATTACHSHADERPROC ELglAttachShader = NULL;
148 PFNGLBINDATTRIBLOCATIONPROC ELglBindAttribLocation = NULL;
149 PFNGLBLENDEQUATIONSEPARATEPROC ELglBlendEquationSeparate = NULL;
150 PFNGLCOMPILESHADERPROC ELglCompileShader = NULL;
151 PFNGLCREATEPROGRAMPROC ELglCreateProgram = NULL;
152 PFNGLCREATESHADERPROC ELglCreateShader = NULL;
153 PFNGLDELETEPROGRAMPROC ELglDeleteProgram = NULL;
154 PFNGLDELETESHADERPROC ELglDeleteShader = NULL;
155 PFNGLDETACHSHADERPROC ELglDetachShader = NULL;
156 PFNGLDISABLEVERTEXATTRIBARRAYPROC ELglDisableVertexAttribArray = NULL;
157 PFNGLDRAWBUFFERSPROC ELglDrawBuffers = NULL;
158 PFNGLENABLEVERTEXATTRIBARRAYPROC ELglEnableVertexAttribArray = NULL;
159 PFNGLGETACTIVEATTRIBPROC ELglGetActiveAttrib = NULL;
160 PFNGLGETACTIVEUNIFORMPROC ELglGetActiveUniform = NULL;
161 PFNGLGETATTACHEDSHADERSPROC ELglGetAttachedShaders = NULL;
162 PFNGLGETATTRIBLOCATIONPROC ELglGetAttribLocation = NULL;
163 PFNGLGETPROGRAMINFOLOGPROC ELglGetProgramInfoLog = NULL;
164 PFNGLGETPROGRAMIVPROC ELglGetProgramiv = NULL;
165 PFNGLGETSHADERINFOLOGPROC ELglGetShaderInfoLog = NULL;
166 PFNGLGETSHADERSOURCEPROC ELglGetShaderSource = NULL;
167 PFNGLGETSHADERIVPROC ELglGetShaderiv = NULL;
168 PFNGLGETUNIFORMLOCATIONPROC ELglGetUniformLocation = NULL;
169 PFNGLGETUNIFORMFVPROC ELglGetUniformfv = NULL;
170 PFNGLGETUNIFORMIVPROC ELglGetUniformiv = NULL;
171 PFNGLGETVERTEXATTRIBPOINTERVPROC ELglGetVertexAttribPointerv = NULL;
172 PFNGLGETVERTEXATTRIBDVPROC ELglGetVertexAttribdv = NULL;
173 PFNGLGETVERTEXATTRIBFVPROC ELglGetVertexAttribfv = NULL;
174 PFNGLGETVERTEXATTRIBIVPROC ELglGetVertexAttribiv = NULL;
175 PFNGLISPROGRAMPROC ELglIsProgram = NULL;
176 PFNGLISSHADERPROC ELglIsShader = NULL;
177 PFNGLLINKPROGRAMPROC ELglLinkProgram = NULL;
178 PFNGLSHADERSOURCEPROC ELglShaderSource = NULL;
179 PFNGLSTENCILFUNCSEPARATEPROC ELglStencilFuncSeparate = NULL;
180 PFNGLSTENCILMASKSEPARATEPROC ELglStencilMaskSeparate = NULL;
181 PFNGLSTENCILOPSEPARATEPROC ELglStencilOpSeparate = NULL;
182 PFNGLUNIFORM1FPROC ELglUniform1f = NULL;
183 PFNGLUNIFORM1FVPROC ELglUniform1fv = NULL;
184 PFNGLUNIFORM1IPROC ELglUniform1i = NULL;
185 PFNGLUNIFORM1IVPROC ELglUniform1iv = NULL;
186 PFNGLUNIFORM2FPROC ELglUniform2f = NULL;
187 PFNGLUNIFORM2FVPROC ELglUniform2fv = NULL;
188 PFNGLUNIFORM2IPROC ELglUniform2i = NULL;
189 PFNGLUNIFORM2IVPROC ELglUniform2iv = NULL;
190 PFNGLUNIFORM3FPROC ELglUniform3f = NULL;
191 PFNGLUNIFORM3FVPROC ELglUniform3fv = NULL;
192 PFNGLUNIFORM3IPROC ELglUniform3i = NULL;
193 PFNGLUNIFORM3IVPROC ELglUniform3iv = NULL;
194 PFNGLUNIFORM4FPROC ELglUniform4f = NULL;
195 PFNGLUNIFORM4FVPROC ELglUniform4fv = NULL;
196 PFNGLUNIFORM4IPROC ELglUniform4i = NULL;
197 PFNGLUNIFORM4IVPROC ELglUniform4iv = NULL;
198 PFNGLUNIFORMMATRIX2FVPROC ELglUniformMatrix2fv = NULL;
199 PFNGLUNIFORMMATRIX3FVPROC ELglUniformMatrix3fv = NULL;
200 PFNGLUNIFORMMATRIX4FVPROC ELglUniformMatrix4fv = NULL;
201 PFNGLUSEPROGRAMPROC ELglUseProgram = NULL;
202 PFNGLVALIDATEPROGRAMPROC ELglValidateProgram = NULL;
203 PFNGLVERTEXATTRIB1DPROC ELglVertexAttrib1d = NULL;
204 PFNGLVERTEXATTRIB1DVPROC ELglVertexAttrib1dv = NULL;
205 PFNGLVERTEXATTRIB1FPROC ELglVertexAttrib1f = NULL;
206 PFNGLVERTEXATTRIB1FVPROC ELglVertexAttrib1fv = NULL;
207 PFNGLVERTEXATTRIB1SPROC ELglVertexAttrib1s = NULL;
208 PFNGLVERTEXATTRIB1SVPROC ELglVertexAttrib1sv = NULL;
209 PFNGLVERTEXATTRIB2DPROC ELglVertexAttrib2d = NULL;
210 PFNGLVERTEXATTRIB2DVPROC ELglVertexAttrib2dv = NULL;
211 PFNGLVERTEXATTRIB2FPROC ELglVertexAttrib2f = NULL;
212 PFNGLVERTEXATTRIB2FVPROC ELglVertexAttrib2fv = NULL;
213 PFNGLVERTEXATTRIB2SPROC ELglVertexAttrib2s = NULL;
214 PFNGLVERTEXATTRIB2SVPROC ELglVertexAttrib2sv = NULL;
215 PFNGLVERTEXATTRIB3DPROC ELglVertexAttrib3d = NULL;
216 PFNGLVERTEXATTRIB3DVPROC ELglVertexAttrib3dv = NULL;
217 PFNGLVERTEXATTRIB3FPROC ELglVertexAttrib3f = NULL;
218 PFNGLVERTEXATTRIB3FVPROC ELglVertexAttrib3fv = NULL;
219 PFNGLVERTEXATTRIB3SPROC ELglVertexAttrib3s = NULL;
220 PFNGLVERTEXATTRIB3SVPROC ELglVertexAttrib3sv = NULL;
221 PFNGLVERTEXATTRIB4NBVPROC ELglVertexAttrib4Nbv = NULL;
222 PFNGLVERTEXATTRIB4NIVPROC ELglVertexAttrib4Niv = NULL;
223 PFNGLVERTEXATTRIB4NSVPROC ELglVertexAttrib4Nsv = NULL;
224 PFNGLVERTEXATTRIB4NUBPROC ELglVertexAttrib4Nub = NULL;
225 PFNGLVERTEXATTRIB4NUBVPROC ELglVertexAttrib4Nubv = NULL;
226 PFNGLVERTEXATTRIB4NUIVPROC ELglVertexAttrib4Nuiv = NULL;
227 PFNGLVERTEXATTRIB4NUSVPROC ELglVertexAttrib4Nusv = NULL;
228 PFNGLVERTEXATTRIB4BVPROC ELglVertexAttrib4bv = NULL;
229 PFNGLVERTEXATTRIB4DPROC ELglVertexAttrib4d = NULL;
230 PFNGLVERTEXATTRIB4DVPROC ELglVertexAttrib4dv = NULL;
231 PFNGLVERTEXATTRIB4FPROC ELglVertexAttrib4f = NULL;
232 PFNGLVERTEXATTRIB4FVPROC ELglVertexAttrib4fv = NULL;
233 PFNGLVERTEXATTRIB4IVPROC ELglVertexAttrib4iv = NULL;
234 PFNGLVERTEXATTRIB4SPROC ELglVertexAttrib4s = NULL;
235 PFNGLVERTEXATTRIB4SVPROC ELglVertexAttrib4sv = NULL;
236 PFNGLVERTEXATTRIB4UBVPROC ELglVertexAttrib4ubv = NULL;
237 PFNGLVERTEXATTRIB4UIVPROC ELglVertexAttrib4uiv = NULL;
238 PFNGLVERTEXATTRIB4USVPROC ELglVertexAttrib4usv = NULL;
239 PFNGLVERTEXATTRIBPOINTERPROC ELglVertexAttribPointer = NULL;
240 /* GL_VERSION_2_0 */
241
242 /* GL_VERSION_2_1 */
243 PFNGLUNIFORMMATRIX2X3FVPROC ELglUniformMatrix2x3fv = NULL;
244 PFNGLUNIFORMMATRIX2X4FVPROC ELglUniformMatrix2x4fv = NULL;
245 PFNGLUNIFORMMATRIX3X2FVPROC ELglUniformMatrix3x2fv = NULL;
246 PFNGLUNIFORMMATRIX3X4FVPROC ELglUniformMatrix3x4fv = NULL;
247 PFNGLUNIFORMMATRIX4X2FVPROC ELglUniformMatrix4x2fv = NULL;
248 PFNGLUNIFORMMATRIX4X3FVPROC ELglUniformMatrix4x3fv = NULL;
249 /* GL_VERSION_2_1 */
250
251 GLboolean is_GL_VERSION_1_2 = GL_FALSE;
252 GLboolean is_GL_VERSION_1_3 = GL_FALSE;
253 GLboolean is_GL_VERSION_1_4 = GL_FALSE;
254 GLboolean is_GL_VERSION_1_5 = GL_FALSE;
255 GLboolean is_GL_VERSION_2_0 = GL_FALSE;
256 GLboolean is_GL_VERSION_2_1 = GL_FALSE;
257
258 int vertex_program_problem=0;
259 int multitexture_problem=0;
260
check_for_problem_drivers()261 static void check_for_problem_drivers()
262 {
263 const char *my_string;
264 int is_intel=0;
265
266
267 my_string = (const char*) glGetString (GL_VENDOR);
268 if (my_string == NULL)
269 {
270 const char *error_str = "glGetString() returned NULL for GL_VENDOR=0x%x";
271 DO_CHECK_GL_ERRORS();
272 LOG_ERROR(error_str, GL_VENDOR);
273 SDL_Quit();
274 #ifdef ELC
275 FATAL_ERROR_WINDOW(error_str, GL_VENDOR);
276 #endif
277 exit(1);
278 }
279 if(strstr(my_string,"Intel"))is_intel=1;
280 else
281 if(strstr(my_string,"SiS"))
282 {
283 multitexture_problem=1;
284 }
285 else
286 if(strstr(my_string,"S3 "))
287 {
288 multitexture_problem=1;
289 }
290
291 my_string = (const char*) glGetString (GL_VERSION);
292 /*
293 //should be fixed now
294 //OpenGL Version Format: 2.0.0
295 if(is_nvidia)
296 {
297 if(my_string[0]=='1')vertex_program_problem=1;
298 if(my_string[0]=='2' && my_string[2]=='0')vertex_program_problem=1;
299 }
300 */
301 if(is_intel)
302 {
303 my_string = (const char*) glGetString (GL_RENDERER);
304 if(strstr(my_string,"965") || strstr(my_string,"945"))vertex_program_problem=1;
305 }
306 #ifndef MAP_EDITOR
307 //log the problems
308 if(vertex_program_problem)
309 LOG_TO_CONSOLE (c_red2, "Your card reports having vertex program capabilities, but the support is buggy, so we disabled it.");
310
311 if(multitexture_problem)
312 LOG_TO_CONSOLE (c_red2, "Your card reports having multitexturing capabilities, but the support is buggy, so we disabled it.");
313 #endif //!MAP_EDITOR
314
315 }
316
317
318 /* GL_VERSION_1_2 */
el_init_GL_VERSION_1_2()319 static GLboolean el_init_GL_VERSION_1_2()
320 {
321 GLboolean r = GL_TRUE;
322
323 r = ((ELglCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)SDL_GL_GetProcAddress("glCopyTexSubImage3D")) != NULL) && r;
324 r = ((ELglDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)SDL_GL_GetProcAddress("glDrawRangeElements")) != NULL) && r;
325 r = ((ELglTexImage3D = (PFNGLTEXIMAGE3DPROC)SDL_GL_GetProcAddress("glTexImage3D")) != NULL) && r;
326 r = ((ELglTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)SDL_GL_GetProcAddress("glTexSubImage3D")) != NULL) && r;
327
328 return r;
329 }
330 /* GL_VERSION_1_2 */
331
332 /* GL_VERSION_1_3 */
el_init_GL_VERSION_1_3()333 static GLboolean el_init_GL_VERSION_1_3()
334 {
335 GLboolean r = GL_TRUE;
336
337 r = ((ELglActiveTexture = (PFNGLACTIVETEXTUREPROC)SDL_GL_GetProcAddress("glActiveTexture")) != NULL) && r;
338 r = ((ELglClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)SDL_GL_GetProcAddress("glClientActiveTexture")) != NULL) && r;
339 r = ((ELglCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)SDL_GL_GetProcAddress("glCompressedTexImage1D")) != NULL) && r;
340 r = ((ELglCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)SDL_GL_GetProcAddress("glCompressedTexImage2D")) != NULL) && r;
341 r = ((ELglCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)SDL_GL_GetProcAddress("glCompressedTexImage3D")) != NULL) && r;
342 r = ((ELglCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)SDL_GL_GetProcAddress("glCompressedTexSubImage1D")) != NULL) && r;
343 r = ((ELglCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)SDL_GL_GetProcAddress("glCompressedTexSubImage2D")) != NULL) && r;
344 r = ((ELglCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)SDL_GL_GetProcAddress("glCompressedTexSubImage3D")) != NULL) && r;
345 r = ((ELglGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)SDL_GL_GetProcAddress("glGetCompressedTexImage")) != NULL) && r;
346 r = ((ELglLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)SDL_GL_GetProcAddress("glLoadTransposeMatrixd")) != NULL) && r;
347 r = ((ELglLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)SDL_GL_GetProcAddress("glLoadTransposeMatrixf")) != NULL) && r;
348 r = ((ELglMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)SDL_GL_GetProcAddress("glMultTransposeMatrixd")) != NULL) && r;
349 r = ((ELglMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)SDL_GL_GetProcAddress("glMultTransposeMatrixf")) != NULL) && r;
350 r = ((ELglMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)SDL_GL_GetProcAddress("glMultiTexCoord1d")) != NULL) && r;
351 r = ((ELglMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)SDL_GL_GetProcAddress("glMultiTexCoord1dv")) != NULL) && r;
352 r = ((ELglMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)SDL_GL_GetProcAddress("glMultiTexCoord1f")) != NULL) && r;
353 r = ((ELglMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)SDL_GL_GetProcAddress("glMultiTexCoord1fv")) != NULL) && r;
354 r = ((ELglMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)SDL_GL_GetProcAddress("glMultiTexCoord1i")) != NULL) && r;
355 r = ((ELglMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)SDL_GL_GetProcAddress("glMultiTexCoord1iv")) != NULL) && r;
356 r = ((ELglMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)SDL_GL_GetProcAddress("glMultiTexCoord1s")) != NULL) && r;
357 r = ((ELglMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)SDL_GL_GetProcAddress("glMultiTexCoord1sv")) != NULL) && r;
358 r = ((ELglMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)SDL_GL_GetProcAddress("glMultiTexCoord2d")) != NULL) && r;
359 r = ((ELglMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)SDL_GL_GetProcAddress("glMultiTexCoord2dv")) != NULL) && r;
360 r = ((ELglMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)SDL_GL_GetProcAddress("glMultiTexCoord2f")) != NULL) && r;
361 r = ((ELglMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)SDL_GL_GetProcAddress("glMultiTexCoord2fv")) != NULL) && r;
362 r = ((ELglMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)SDL_GL_GetProcAddress("glMultiTexCoord2i")) != NULL) && r;
363 r = ((ELglMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)SDL_GL_GetProcAddress("glMultiTexCoord2iv")) != NULL) && r;
364 r = ((ELglMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)SDL_GL_GetProcAddress("glMultiTexCoord2s")) != NULL) && r;
365 r = ((ELglMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)SDL_GL_GetProcAddress("glMultiTexCoord2sv")) != NULL) && r;
366 r = ((ELglMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)SDL_GL_GetProcAddress("glMultiTexCoord3d")) != NULL) && r;
367 r = ((ELglMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)SDL_GL_GetProcAddress("glMultiTexCoord3dv")) != NULL) && r;
368 r = ((ELglMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)SDL_GL_GetProcAddress("glMultiTexCoord3f")) != NULL) && r;
369 r = ((ELglMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)SDL_GL_GetProcAddress("glMultiTexCoord3fv")) != NULL) && r;
370 r = ((ELglMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)SDL_GL_GetProcAddress("glMultiTexCoord3i")) != NULL) && r;
371 r = ((ELglMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)SDL_GL_GetProcAddress("glMultiTexCoord3iv")) != NULL) && r;
372 r = ((ELglMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)SDL_GL_GetProcAddress("glMultiTexCoord3s")) != NULL) && r;
373 r = ((ELglMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)SDL_GL_GetProcAddress("glMultiTexCoord3sv")) != NULL) && r;
374 r = ((ELglMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)SDL_GL_GetProcAddress("glMultiTexCoord4d")) != NULL) && r;
375 r = ((ELglMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)SDL_GL_GetProcAddress("glMultiTexCoord4dv")) != NULL) && r;
376 r = ((ELglMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)SDL_GL_GetProcAddress("glMultiTexCoord4f")) != NULL) && r;
377 r = ((ELglMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)SDL_GL_GetProcAddress("glMultiTexCoord4fv")) != NULL) && r;
378 r = ((ELglMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)SDL_GL_GetProcAddress("glMultiTexCoord4i")) != NULL) && r;
379 r = ((ELglMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)SDL_GL_GetProcAddress("glMultiTexCoord4iv")) != NULL) && r;
380 r = ((ELglMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)SDL_GL_GetProcAddress("glMultiTexCoord4s")) != NULL) && r;
381 r = ((ELglMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)SDL_GL_GetProcAddress("glMultiTexCoord4sv")) != NULL) && r;
382 r = ((ELglSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)SDL_GL_GetProcAddress("glSampleCoverage")) != NULL) && r;
383
384 return r;
385 }
386 /* GL_VERSION_1_3 */
387
388 /* GL_VERSION_1_4 */
el_init_GL_VERSION_1_4()389 static GLboolean el_init_GL_VERSION_1_4()
390 {
391 GLboolean r = GL_TRUE;
392
393 r = ((ELglBlendColor = (PFNGLBLENDCOLORPROC)SDL_GL_GetProcAddress("glBlendColor")) != NULL) && r;
394 r = ((ELglBlendEquation = (PFNGLBLENDEQUATIONPROC)SDL_GL_GetProcAddress("glBlendEquation")) != NULL) && r;
395 r = ((ELglBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)SDL_GL_GetProcAddress("glBlendFuncSeparate")) != NULL) && r;
396 r = ((ELglFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)SDL_GL_GetProcAddress("glFogCoordPointer")) != NULL) && r;
397 r = ((ELglFogCoordd = (PFNGLFOGCOORDDPROC)SDL_GL_GetProcAddress("glFogCoordd")) != NULL) && r;
398 r = ((ELglFogCoorddv = (PFNGLFOGCOORDDVPROC)SDL_GL_GetProcAddress("glFogCoorddv")) != NULL) && r;
399 r = ((ELglFogCoordf = (PFNGLFOGCOORDFPROC)SDL_GL_GetProcAddress("glFogCoordf")) != NULL) && r;
400 r = ((ELglFogCoordfv = (PFNGLFOGCOORDFVPROC)SDL_GL_GetProcAddress("glFogCoordfv")) != NULL) && r;
401 r = ((ELglMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)SDL_GL_GetProcAddress("glMultiDrawArrays")) != NULL) && r;
402 r = ((ELglMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)SDL_GL_GetProcAddress("glMultiDrawElements")) != NULL) && r;
403 r = ((ELglPointParameterf = (PFNGLPOINTPARAMETERFPROC)SDL_GL_GetProcAddress("glPointParameterf")) != NULL) && r;
404 r = ((ELglPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)SDL_GL_GetProcAddress("glPointParameterfv")) != NULL) && r;
405 r = ((ELglSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)SDL_GL_GetProcAddress("glSecondaryColor3b")) != NULL) && r;
406 r = ((ELglSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)SDL_GL_GetProcAddress("glSecondaryColor3bv")) != NULL) && r;
407 r = ((ELglSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)SDL_GL_GetProcAddress("glSecondaryColor3d")) != NULL) && r;
408 r = ((ELglSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)SDL_GL_GetProcAddress("glSecondaryColor3dv")) != NULL) && r;
409 r = ((ELglSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)SDL_GL_GetProcAddress("glSecondaryColor3f")) != NULL) && r;
410 r = ((ELglSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)SDL_GL_GetProcAddress("glSecondaryColor3fv")) != NULL) && r;
411 r = ((ELglSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)SDL_GL_GetProcAddress("glSecondaryColor3i")) != NULL) && r;
412 r = ((ELglSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)SDL_GL_GetProcAddress("glSecondaryColor3iv")) != NULL) && r;
413 r = ((ELglSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)SDL_GL_GetProcAddress("glSecondaryColor3s")) != NULL) && r;
414 r = ((ELglSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)SDL_GL_GetProcAddress("glSecondaryColor3sv")) != NULL) && r;
415 r = ((ELglSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)SDL_GL_GetProcAddress("glSecondaryColor3ub")) != NULL) && r;
416 r = ((ELglSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)SDL_GL_GetProcAddress("glSecondaryColor3ubv")) != NULL) && r;
417 r = ((ELglSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)SDL_GL_GetProcAddress("glSecondaryColor3ui")) != NULL) && r;
418 r = ((ELglSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)SDL_GL_GetProcAddress("glSecondaryColor3uiv")) != NULL) && r;
419 r = ((ELglSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)SDL_GL_GetProcAddress("glSecondaryColor3us")) != NULL) && r;
420 r = ((ELglSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)SDL_GL_GetProcAddress("glSecondaryColor3usv")) != NULL) && r;
421 r = ((ELglSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)SDL_GL_GetProcAddress("glSecondaryColorPointer")) != NULL) && r;
422 r = ((ELglWindowPos2d = (PFNGLWINDOWPOS2DPROC)SDL_GL_GetProcAddress("glWindowPos2d")) != NULL) && r;
423 r = ((ELglWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)SDL_GL_GetProcAddress("glWindowPos2dv")) != NULL) && r;
424 r = ((ELglWindowPos2f = (PFNGLWINDOWPOS2FPROC)SDL_GL_GetProcAddress("glWindowPos2f")) != NULL) && r;
425 r = ((ELglWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)SDL_GL_GetProcAddress("glWindowPos2fv")) != NULL) && r;
426 r = ((ELglWindowPos2i = (PFNGLWINDOWPOS2IPROC)SDL_GL_GetProcAddress("glWindowPos2i")) != NULL) && r;
427 r = ((ELglWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)SDL_GL_GetProcAddress("glWindowPos2iv")) != NULL) && r;
428 r = ((ELglWindowPos2s = (PFNGLWINDOWPOS2SPROC)SDL_GL_GetProcAddress("glWindowPos2s")) != NULL) && r;
429 r = ((ELglWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)SDL_GL_GetProcAddress("glWindowPos2sv")) != NULL) && r;
430 r = ((ELglWindowPos3d = (PFNGLWINDOWPOS3DPROC)SDL_GL_GetProcAddress("glWindowPos3d")) != NULL) && r;
431 r = ((ELglWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)SDL_GL_GetProcAddress("glWindowPos3dv")) != NULL) && r;
432 r = ((ELglWindowPos3f = (PFNGLWINDOWPOS3FPROC)SDL_GL_GetProcAddress("glWindowPos3f")) != NULL) && r;
433 r = ((ELglWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)SDL_GL_GetProcAddress("glWindowPos3fv")) != NULL) && r;
434 r = ((ELglWindowPos3i = (PFNGLWINDOWPOS3IPROC)SDL_GL_GetProcAddress("glWindowPos3i")) != NULL) && r;
435 r = ((ELglWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)SDL_GL_GetProcAddress("glWindowPos3iv")) != NULL) && r;
436 r = ((ELglWindowPos3s = (PFNGLWINDOWPOS3SPROC)SDL_GL_GetProcAddress("glWindowPos3s")) != NULL) && r;
437 r = ((ELglWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)SDL_GL_GetProcAddress("glWindowPos3sv")) != NULL) && r;
438
439 return r;
440 }
441 /* GL_VERSION_1_4 */
442
443 /* GL_VERSION_1_5 */
el_init_GL_VERSION_1_5()444 static GLboolean el_init_GL_VERSION_1_5()
445 {
446 GLboolean r = GL_TRUE;
447
448 r = ((ELglBeginQuery = (PFNGLBEGINQUERYPROC)SDL_GL_GetProcAddress("glBeginQuery")) != NULL) && r;
449 r = ((ELglBindBuffer = (PFNGLBINDBUFFERPROC)SDL_GL_GetProcAddress("glBindBuffer")) != NULL) && r;
450 r = ((ELglBufferData = (PFNGLBUFFERDATAPROC)SDL_GL_GetProcAddress("glBufferData")) != NULL) && r;
451 r = ((ELglBufferSubData = (PFNGLBUFFERSUBDATAPROC)SDL_GL_GetProcAddress("glBufferSubData")) != NULL) && r;
452 r = ((ELglDeleteBuffers = (PFNGLDELETEBUFFERSPROC)SDL_GL_GetProcAddress("glDeleteBuffers")) != NULL) && r;
453 r = ((ELglDeleteQueries = (PFNGLDELETEQUERIESPROC)SDL_GL_GetProcAddress("glDeleteQueries")) != NULL) && r;
454 r = ((ELglEndQuery = (PFNGLENDQUERYPROC)SDL_GL_GetProcAddress("glEndQuery")) != NULL) && r;
455 r = ((ELglGenBuffers = (PFNGLGENBUFFERSPROC)SDL_GL_GetProcAddress("glGenBuffers")) != NULL) && r;
456 r = ((ELglGenQueries = (PFNGLGENQUERIESPROC)SDL_GL_GetProcAddress("glGenQueries")) != NULL) && r;
457 r = ((ELglGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)SDL_GL_GetProcAddress("glGetBufferParameteriv")) != NULL) && r;
458 r = ((ELglGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)SDL_GL_GetProcAddress("glGetBufferPointerv")) != NULL) && r;
459 r = ((ELglGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)SDL_GL_GetProcAddress("glGetBufferSubData")) != NULL) && r;
460 r = ((ELglGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)SDL_GL_GetProcAddress("glGetQueryObjectiv")) != NULL) && r;
461 r = ((ELglGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)SDL_GL_GetProcAddress("glGetQueryObjectuiv")) != NULL) && r;
462 r = ((ELglGetQueryiv = (PFNGLGETQUERYIVPROC)SDL_GL_GetProcAddress("glGetQueryiv")) != NULL) && r;
463 r = ((ELglIsBuffer = (PFNGLISBUFFERPROC)SDL_GL_GetProcAddress("glIsBuffer")) != NULL) && r;
464 r = ((ELglIsQuery = (PFNGLISQUERYPROC)SDL_GL_GetProcAddress("glIsQuery")) != NULL) && r;
465 r = ((ELglMapBuffer = (PFNGLMAPBUFFERPROC)SDL_GL_GetProcAddress("glMapBuffer")) != NULL) && r;
466 r = ((ELglUnmapBuffer = (PFNGLUNMAPBUFFERPROC)SDL_GL_GetProcAddress("glUnmapBuffer")) != NULL) && r;
467
468 return r;
469 }
470 /* GL_VERSION_1_5 */
471
472 /* GL_VERSION_2_0 */
el_init_GL_VERSION_2_0()473 static GLboolean el_init_GL_VERSION_2_0()
474 {
475 GLboolean r = GL_TRUE;
476
477 r = ((ELglAttachShader = (PFNGLATTACHSHADERPROC)SDL_GL_GetProcAddress("glAttachShader")) != NULL) && r;
478 r = ((ELglBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)SDL_GL_GetProcAddress("glBindAttribLocation")) != NULL) && r;
479 r = ((ELglBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)SDL_GL_GetProcAddress("glBlendEquationSeparate")) != NULL) && r;
480 r = ((ELglCompileShader = (PFNGLCOMPILESHADERPROC)SDL_GL_GetProcAddress("glCompileShader")) != NULL) && r;
481 r = ((ELglCreateProgram = (PFNGLCREATEPROGRAMPROC)SDL_GL_GetProcAddress("glCreateProgram")) != NULL) && r;
482 r = ((ELglCreateShader = (PFNGLCREATESHADERPROC)SDL_GL_GetProcAddress("glCreateShader")) != NULL) && r;
483 r = ((ELglDeleteProgram = (PFNGLDELETEPROGRAMPROC)SDL_GL_GetProcAddress("glDeleteProgram")) != NULL) && r;
484 r = ((ELglDeleteShader = (PFNGLDELETESHADERPROC)SDL_GL_GetProcAddress("glDeleteShader")) != NULL) && r;
485 r = ((ELglDetachShader = (PFNGLDETACHSHADERPROC)SDL_GL_GetProcAddress("glDetachShader")) != NULL) && r;
486 r = ((ELglDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)SDL_GL_GetProcAddress("glDisableVertexAttribArray")) != NULL) && r;
487 r = ((ELglDrawBuffers = (PFNGLDRAWBUFFERSPROC)SDL_GL_GetProcAddress("glDrawBuffers")) != NULL) && r;
488 r = ((ELglEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)SDL_GL_GetProcAddress("glEnableVertexAttribArray")) != NULL) && r;
489 r = ((ELglGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)SDL_GL_GetProcAddress("glGetActiveAttrib")) != NULL) && r;
490 r = ((ELglGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)SDL_GL_GetProcAddress("glGetActiveUniform")) != NULL) && r;
491 r = ((ELglGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)SDL_GL_GetProcAddress("glGetAttachedShaders")) != NULL) && r;
492 r = ((ELglGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)SDL_GL_GetProcAddress("glGetAttribLocation")) != NULL) && r;
493 r = ((ELglGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)SDL_GL_GetProcAddress("glGetProgramInfoLog")) != NULL) && r;
494 r = ((ELglGetProgramiv = (PFNGLGETPROGRAMIVPROC)SDL_GL_GetProcAddress("glGetProgramiv")) != NULL) && r;
495 r = ((ELglGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)SDL_GL_GetProcAddress("glGetShaderInfoLog")) != NULL) && r;
496 r = ((ELglGetShaderSource = (PFNGLGETSHADERSOURCEPROC)SDL_GL_GetProcAddress("glGetShaderSource")) != NULL) && r;
497 r = ((ELglGetShaderiv = (PFNGLGETSHADERIVPROC)SDL_GL_GetProcAddress("glGetShaderiv")) != NULL) && r;
498 r = ((ELglGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)SDL_GL_GetProcAddress("glGetUniformLocation")) != NULL) && r;
499 r = ((ELglGetUniformfv = (PFNGLGETUNIFORMFVPROC)SDL_GL_GetProcAddress("glGetUniformfv")) != NULL) && r;
500 r = ((ELglGetUniformiv = (PFNGLGETUNIFORMIVPROC)SDL_GL_GetProcAddress("glGetUniformiv")) != NULL) && r;
501 r = ((ELglGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)SDL_GL_GetProcAddress("glGetVertexAttribPointerv")) != NULL) && r;
502 r = ((ELglGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)SDL_GL_GetProcAddress("glGetVertexAttribdv")) != NULL) && r;
503 r = ((ELglGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)SDL_GL_GetProcAddress("glGetVertexAttribfv")) != NULL) && r;
504 r = ((ELglGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)SDL_GL_GetProcAddress("glGetVertexAttribiv")) != NULL) && r;
505 r = ((ELglIsProgram = (PFNGLISPROGRAMPROC)SDL_GL_GetProcAddress("glIsProgram")) != NULL) && r;
506 r = ((ELglIsShader = (PFNGLISSHADERPROC)SDL_GL_GetProcAddress("glIsShader")) != NULL) && r;
507 r = ((ELglLinkProgram = (PFNGLLINKPROGRAMPROC)SDL_GL_GetProcAddress("glLinkProgram")) != NULL) && r;
508 r = ((ELglShaderSource = (PFNGLSHADERSOURCEPROC)SDL_GL_GetProcAddress("glShaderSource")) != NULL) && r;
509 r = ((ELglStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)SDL_GL_GetProcAddress("glStencilFuncSeparate")) != NULL) && r;
510 r = ((ELglStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)SDL_GL_GetProcAddress("glStencilMaskSeparate")) != NULL) && r;
511 r = ((ELglStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)SDL_GL_GetProcAddress("glStencilOpSeparate")) != NULL) && r;
512 r = ((ELglUniform1f = (PFNGLUNIFORM1FPROC)SDL_GL_GetProcAddress("glUniform1f")) != NULL) && r;
513 r = ((ELglUniform1fv = (PFNGLUNIFORM1FVPROC)SDL_GL_GetProcAddress("glUniform1fv")) != NULL) && r;
514 r = ((ELglUniform1i = (PFNGLUNIFORM1IPROC)SDL_GL_GetProcAddress("glUniform1i")) != NULL) && r;
515 r = ((ELglUniform1iv = (PFNGLUNIFORM1IVPROC)SDL_GL_GetProcAddress("glUniform1iv")) != NULL) && r;
516 r = ((ELglUniform2f = (PFNGLUNIFORM2FPROC)SDL_GL_GetProcAddress("glUniform2f")) != NULL) && r;
517 r = ((ELglUniform2fv = (PFNGLUNIFORM2FVPROC)SDL_GL_GetProcAddress("glUniform2fv")) != NULL) && r;
518 r = ((ELglUniform2i = (PFNGLUNIFORM2IPROC)SDL_GL_GetProcAddress("glUniform2i")) != NULL) && r;
519 r = ((ELglUniform2iv = (PFNGLUNIFORM2IVPROC)SDL_GL_GetProcAddress("glUniform2iv")) != NULL) && r;
520 r = ((ELglUniform3f = (PFNGLUNIFORM3FPROC)SDL_GL_GetProcAddress("glUniform3f")) != NULL) && r;
521 r = ((ELglUniform3fv = (PFNGLUNIFORM3FVPROC)SDL_GL_GetProcAddress("glUniform3fv")) != NULL) && r;
522 r = ((ELglUniform3i = (PFNGLUNIFORM3IPROC)SDL_GL_GetProcAddress("glUniform3i")) != NULL) && r;
523 r = ((ELglUniform3iv = (PFNGLUNIFORM3IVPROC)SDL_GL_GetProcAddress("glUniform3iv")) != NULL) && r;
524 r = ((ELglUniform4f = (PFNGLUNIFORM4FPROC)SDL_GL_GetProcAddress("glUniform4f")) != NULL) && r;
525 r = ((ELglUniform4fv = (PFNGLUNIFORM4FVPROC)SDL_GL_GetProcAddress("glUniform4fv")) != NULL) && r;
526 r = ((ELglUniform4i = (PFNGLUNIFORM4IPROC)SDL_GL_GetProcAddress("glUniform4i")) != NULL) && r;
527 r = ((ELglUniform4iv = (PFNGLUNIFORM4IVPROC)SDL_GL_GetProcAddress("glUniform4iv")) != NULL) && r;
528 r = ((ELglUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)SDL_GL_GetProcAddress("glUniformMatrix2fv")) != NULL) && r;
529 r = ((ELglUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)SDL_GL_GetProcAddress("glUniformMatrix3fv")) != NULL) && r;
530 r = ((ELglUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)SDL_GL_GetProcAddress("glUniformMatrix4fv")) != NULL) && r;
531 r = ((ELglUseProgram = (PFNGLUSEPROGRAMPROC)SDL_GL_GetProcAddress("glUseProgram")) != NULL) && r;
532 r = ((ELglValidateProgram = (PFNGLVALIDATEPROGRAMPROC)SDL_GL_GetProcAddress("glValidateProgram")) != NULL) && r;
533 r = ((ELglVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)SDL_GL_GetProcAddress("glVertexAttrib1d")) != NULL) && r;
534 r = ((ELglVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)SDL_GL_GetProcAddress("glVertexAttrib1dv")) != NULL) && r;
535 r = ((ELglVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)SDL_GL_GetProcAddress("glVertexAttrib1f")) != NULL) && r;
536 r = ((ELglVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)SDL_GL_GetProcAddress("glVertexAttrib1fv")) != NULL) && r;
537 r = ((ELglVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)SDL_GL_GetProcAddress("glVertexAttrib1s")) != NULL) && r;
538 r = ((ELglVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)SDL_GL_GetProcAddress("glVertexAttrib1sv")) != NULL) && r;
539 r = ((ELglVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)SDL_GL_GetProcAddress("glVertexAttrib2d")) != NULL) && r;
540 r = ((ELglVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)SDL_GL_GetProcAddress("glVertexAttrib2dv")) != NULL) && r;
541 r = ((ELglVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)SDL_GL_GetProcAddress("glVertexAttrib2f")) != NULL) && r;
542 r = ((ELglVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)SDL_GL_GetProcAddress("glVertexAttrib2fv")) != NULL) && r;
543 r = ((ELglVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)SDL_GL_GetProcAddress("glVertexAttrib2s")) != NULL) && r;
544 r = ((ELglVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)SDL_GL_GetProcAddress("glVertexAttrib2sv")) != NULL) && r;
545 r = ((ELglVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)SDL_GL_GetProcAddress("glVertexAttrib3d")) != NULL) && r;
546 r = ((ELglVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)SDL_GL_GetProcAddress("glVertexAttrib3dv")) != NULL) && r;
547 r = ((ELglVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)SDL_GL_GetProcAddress("glVertexAttrib3f")) != NULL) && r;
548 r = ((ELglVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)SDL_GL_GetProcAddress("glVertexAttrib3fv")) != NULL) && r;
549 r = ((ELglVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)SDL_GL_GetProcAddress("glVertexAttrib3s")) != NULL) && r;
550 r = ((ELglVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)SDL_GL_GetProcAddress("glVertexAttrib3sv")) != NULL) && r;
551 r = ((ELglVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)SDL_GL_GetProcAddress("glVertexAttrib4Nbv")) != NULL) && r;
552 r = ((ELglVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)SDL_GL_GetProcAddress("glVertexAttrib4Niv")) != NULL) && r;
553 r = ((ELglVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)SDL_GL_GetProcAddress("glVertexAttrib4Nsv")) != NULL) && r;
554 r = ((ELglVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)SDL_GL_GetProcAddress("glVertexAttrib4Nub")) != NULL) && r;
555 r = ((ELglVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)SDL_GL_GetProcAddress("glVertexAttrib4Nubv")) != NULL) && r;
556 r = ((ELglVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)SDL_GL_GetProcAddress("glVertexAttrib4Nuiv")) != NULL) && r;
557 r = ((ELglVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)SDL_GL_GetProcAddress("glVertexAttrib4Nusv")) != NULL) && r;
558 r = ((ELglVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)SDL_GL_GetProcAddress("glVertexAttrib4bv")) != NULL) && r;
559 r = ((ELglVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)SDL_GL_GetProcAddress("glVertexAttrib4d")) != NULL) && r;
560 r = ((ELglVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)SDL_GL_GetProcAddress("glVertexAttrib4dv")) != NULL) && r;
561 r = ((ELglVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)SDL_GL_GetProcAddress("glVertexAttrib4f")) != NULL) && r;
562 r = ((ELglVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)SDL_GL_GetProcAddress("glVertexAttrib4fv")) != NULL) && r;
563 r = ((ELglVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)SDL_GL_GetProcAddress("glVertexAttrib4iv")) != NULL) && r;
564 r = ((ELglVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)SDL_GL_GetProcAddress("glVertexAttrib4s")) != NULL) && r;
565 r = ((ELglVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)SDL_GL_GetProcAddress("glVertexAttrib4sv")) != NULL) && r;
566 r = ((ELglVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)SDL_GL_GetProcAddress("glVertexAttrib4ubv")) != NULL) && r;
567 r = ((ELglVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)SDL_GL_GetProcAddress("glVertexAttrib4uiv")) != NULL) && r;
568 r = ((ELglVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)SDL_GL_GetProcAddress("glVertexAttrib4usv")) != NULL) && r;
569 r = ((ELglVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)SDL_GL_GetProcAddress("glVertexAttribPointer")) != NULL) && r;
570
571 return r;
572 }
573 /* GL_VERSION_2_0 */
574
575 /* GL_VERSION_2_1 */
el_init_GL_VERSION_2_1()576 static GLboolean el_init_GL_VERSION_2_1()
577 {
578 GLboolean r = GL_TRUE;
579
580 r = ((ELglUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)SDL_GL_GetProcAddress("glUniformMatrix2x3fv")) != NULL) && r;
581 r = ((ELglUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)SDL_GL_GetProcAddress("glUniformMatrix2x4fv")) != NULL) && r;
582 r = ((ELglUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)SDL_GL_GetProcAddress("glUniformMatrix3x2fv")) != NULL) && r;
583 r = ((ELglUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)SDL_GL_GetProcAddress("glUniformMatrix3x4fv")) != NULL) && r;
584 r = ((ELglUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)SDL_GL_GetProcAddress("glUniformMatrix4x2fv")) != NULL) && r;
585 r = ((ELglUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)SDL_GL_GetProcAddress("glUniformMatrix4x3fv")) != NULL) && r;
586
587 return r;
588 }
589 /* GL_VERSION_2_1 */
590
591 /* GL_ARB_multitexture */
592 PFNGLACTIVETEXTUREARBPROC ELglActiveTextureARB = NULL;
593 PFNGLCLIENTACTIVETEXTUREARBPROC ELglClientActiveTextureARB = NULL;
594 PFNGLMULTITEXCOORD1DARBPROC ELglMultiTexCoord1dARB = NULL;
595 PFNGLMULTITEXCOORD1DVARBPROC ELglMultiTexCoord1dvARB = NULL;
596 PFNGLMULTITEXCOORD1FARBPROC ELglMultiTexCoord1fARB = NULL;
597 PFNGLMULTITEXCOORD1FVARBPROC ELglMultiTexCoord1fvARB = NULL;
598 PFNGLMULTITEXCOORD1IARBPROC ELglMultiTexCoord1iARB = NULL;
599 PFNGLMULTITEXCOORD1IVARBPROC ELglMultiTexCoord1ivARB = NULL;
600 PFNGLMULTITEXCOORD1SARBPROC ELglMultiTexCoord1sARB = NULL;
601 PFNGLMULTITEXCOORD1SVARBPROC ELglMultiTexCoord1svARB = NULL;
602 PFNGLMULTITEXCOORD2DARBPROC ELglMultiTexCoord2dARB = NULL;
603 PFNGLMULTITEXCOORD2DVARBPROC ELglMultiTexCoord2dvARB = NULL;
604 PFNGLMULTITEXCOORD2FARBPROC ELglMultiTexCoord2fARB = NULL;
605 PFNGLMULTITEXCOORD2FVARBPROC ELglMultiTexCoord2fvARB = NULL;
606 PFNGLMULTITEXCOORD2IARBPROC ELglMultiTexCoord2iARB = NULL;
607 PFNGLMULTITEXCOORD2IVARBPROC ELglMultiTexCoord2ivARB = NULL;
608 PFNGLMULTITEXCOORD2SARBPROC ELglMultiTexCoord2sARB = NULL;
609 PFNGLMULTITEXCOORD2SVARBPROC ELglMultiTexCoord2svARB = NULL;
610 PFNGLMULTITEXCOORD3DARBPROC ELglMultiTexCoord3dARB = NULL;
611 PFNGLMULTITEXCOORD3DVARBPROC ELglMultiTexCoord3dvARB = NULL;
612 PFNGLMULTITEXCOORD3FARBPROC ELglMultiTexCoord3fARB = NULL;
613 PFNGLMULTITEXCOORD3FVARBPROC ELglMultiTexCoord3fvARB = NULL;
614 PFNGLMULTITEXCOORD3IARBPROC ELglMultiTexCoord3iARB = NULL;
615 PFNGLMULTITEXCOORD3IVARBPROC ELglMultiTexCoord3ivARB = NULL;
616 PFNGLMULTITEXCOORD3SARBPROC ELglMultiTexCoord3sARB = NULL;
617 PFNGLMULTITEXCOORD3SVARBPROC ELglMultiTexCoord3svARB = NULL;
618 PFNGLMULTITEXCOORD4DARBPROC ELglMultiTexCoord4dARB = NULL;
619 PFNGLMULTITEXCOORD4DVARBPROC ELglMultiTexCoord4dvARB = NULL;
620 PFNGLMULTITEXCOORD4FARBPROC ELglMultiTexCoord4fARB = NULL;
621 PFNGLMULTITEXCOORD4FVARBPROC ELglMultiTexCoord4fvARB = NULL;
622 PFNGLMULTITEXCOORD4IARBPROC ELglMultiTexCoord4iARB = NULL;
623 PFNGLMULTITEXCOORD4IVARBPROC ELglMultiTexCoord4ivARB = NULL;
624 PFNGLMULTITEXCOORD4SARBPROC ELglMultiTexCoord4sARB = NULL;
625 PFNGLMULTITEXCOORD4SVARBPROC ELglMultiTexCoord4svARB = NULL;
626 /* GL_ARB_multitexture */
627
628 /* GL_EXT_compiled_vertex_array */
629 PFNGLLOCKARRAYSEXTPROC ELglLockArraysEXT = NULL;
630 PFNGLUNLOCKARRAYSEXTPROC ELglUnlockArraysEXT = NULL;
631 /* GL_EXT_compiled_vertex_array */
632
633 /* GL_EXT_draw_range_elements */
634 PFNGLDRAWRANGEELEMENTSEXTPROC ELglDrawRangeElementsEXT = NULL;
635 /* GL_EXT_draw_range_elements */
636
637 /* GL_ARB_point_parameters */
638 PFNGLPOINTPARAMETERFARBPROC ELglPointParameterfARB = NULL;
639 PFNGLPOINTPARAMETERFVARBPROC ELglPointParameterfvARB = NULL;
640 /* GL_ARB_point_parameters */
641
642 /* GL_ARB_vertex_buffer_object */
643 PFNGLBINDBUFFERARBPROC ELglBindBufferARB = NULL;
644 PFNGLBUFFERDATAARBPROC ELglBufferDataARB = NULL;
645 PFNGLBUFFERSUBDATAARBPROC ELglBufferSubDataARB = NULL;
646 PFNGLDELETEBUFFERSARBPROC ELglDeleteBuffersARB = NULL;
647 PFNGLGENBUFFERSARBPROC ELglGenBuffersARB = NULL;
648 PFNGLGETBUFFERPARAMETERIVARBPROC ELglGetBufferParameterivARB = NULL;
649 PFNGLGETBUFFERPOINTERVARBPROC ELglGetBufferPointervARB = NULL;
650 PFNGLGETBUFFERSUBDATAARBPROC ELglGetBufferSubDataARB = NULL;
651 PFNGLISBUFFERARBPROC ELglIsBufferARB = NULL;
652 PFNGLMAPBUFFERARBPROC ELglMapBufferARB = NULL;
653 PFNGLUNMAPBUFFERARBPROC ELglUnmapBufferARB = NULL;
654 /* GL_ARB_vertex_buffer_object */
655
656 /* GL_EXT_framebuffer_object */
657 PFNGLBINDFRAMEBUFFEREXTPROC ELglBindFramebufferEXT = NULL;
658 PFNGLBINDRENDERBUFFEREXTPROC ELglBindRenderbufferEXT = NULL;
659 PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC ELglCheckFramebufferStatusEXT = NULL;
660 PFNGLDELETEFRAMEBUFFERSEXTPROC ELglDeleteFramebuffersEXT = NULL;
661 PFNGLDELETERENDERBUFFERSEXTPROC ELglDeleteRenderbuffersEXT = NULL;
662 PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC ELglFramebufferRenderbufferEXT = NULL;
663 PFNGLFRAMEBUFFERTEXTURE1DEXTPROC ELglFramebufferTexture1DEXT = NULL;
664 PFNGLFRAMEBUFFERTEXTURE2DEXTPROC ELglFramebufferTexture2DEXT = NULL;
665 PFNGLFRAMEBUFFERTEXTURE3DEXTPROC ELglFramebufferTexture3DEXT = NULL;
666 PFNGLGENFRAMEBUFFERSEXTPROC ELglGenFramebuffersEXT = NULL;
667 PFNGLGENRENDERBUFFERSEXTPROC ELglGenRenderbuffersEXT = NULL;
668 PFNGLGENERATEMIPMAPEXTPROC ELglGenerateMipmapEXT = NULL;
669 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC ELglGetFramebufferAttachmentParameterivEXT = NULL;
670 PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC ELglGetRenderbufferParameterivEXT = NULL;
671 PFNGLISFRAMEBUFFEREXTPROC ELglIsFramebufferEXT = NULL;
672 PFNGLISRENDERBUFFEREXTPROC ELglIsRenderbufferEXT = NULL;
673 PFNGLRENDERBUFFERSTORAGEEXTPROC ELglRenderbufferStorageEXT = NULL;
674 /* GL_EXT_framebuffer_object */
675
676 /* GL_ARB_texture_compression */
677 PFNGLCOMPRESSEDTEXIMAGE1DARBPROC ELglCompressedTexImage1DARB = NULL;
678 PFNGLCOMPRESSEDTEXIMAGE2DARBPROC ELglCompressedTexImage2DARB = NULL;
679 PFNGLCOMPRESSEDTEXIMAGE3DARBPROC ELglCompressedTexImage3DARB = NULL;
680 PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC ELglCompressedTexSubImage1DARB = NULL;
681 PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC ELglCompressedTexSubImage2DARB = NULL;
682 PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC ELglCompressedTexSubImage3DARB = NULL;
683 PFNGLGETCOMPRESSEDTEXIMAGEARBPROC ELglGetCompressedTexImageARB = NULL;
684 /* GL_ARB_texture_compression */
685
686 /* GL_ARB_occlusion_query */
687 PFNGLBEGINQUERYARBPROC ELglBeginQueryARB = NULL;
688 PFNGLDELETEQUERIESARBPROC ELglDeleteQueriesARB = NULL;
689 PFNGLENDQUERYARBPROC ELglEndQueryARB = NULL;
690 PFNGLGENQUERIESARBPROC ELglGenQueriesARB = NULL;
691 PFNGLGETQUERYOBJECTIVARBPROC ELglGetQueryObjectivARB = NULL;
692 PFNGLGETQUERYOBJECTUIVARBPROC ELglGetQueryObjectuivARB = NULL;
693 PFNGLGETQUERYIVARBPROC ELglGetQueryivARB = NULL;
694 PFNGLISQUERYARBPROC ELglIsQueryARB = NULL;
695 /* GL_ARB_occlusion_query */
696
697 /* GL_ARB_vertex_program */
698 PFNGLBINDPROGRAMARBPROC ELglBindProgramARB = NULL;
699 PFNGLDELETEPROGRAMSARBPROC ELglDeleteProgramsARB = NULL;
700 PFNGLDISABLEVERTEXATTRIBARRAYARBPROC ELglDisableVertexAttribArrayARB = NULL;
701 PFNGLENABLEVERTEXATTRIBARRAYARBPROC ELglEnableVertexAttribArrayARB = NULL;
702 PFNGLGENPROGRAMSARBPROC ELglGenProgramsARB = NULL;
703 PFNGLGETPROGRAMENVPARAMETERDVARBPROC ELglGetProgramEnvParameterdvARB = NULL;
704 PFNGLGETPROGRAMENVPARAMETERFVARBPROC ELglGetProgramEnvParameterfvARB = NULL;
705 PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC ELglGetProgramLocalParameterdvARB = NULL;
706 PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC ELglGetProgramLocalParameterfvARB = NULL;
707 PFNGLGETPROGRAMSTRINGARBPROC ELglGetProgramStringARB = NULL;
708 PFNGLGETPROGRAMIVARBPROC ELglGetProgramivARB = NULL;
709 PFNGLGETVERTEXATTRIBPOINTERVARBPROC ELglGetVertexAttribPointervARB = NULL;
710 PFNGLGETVERTEXATTRIBDVARBPROC ELglGetVertexAttribdvARB = NULL;
711 PFNGLGETVERTEXATTRIBFVARBPROC ELglGetVertexAttribfvARB = NULL;
712 PFNGLGETVERTEXATTRIBIVARBPROC ELglGetVertexAttribivARB = NULL;
713 PFNGLISPROGRAMARBPROC ELglIsProgramARB = NULL;
714 PFNGLPROGRAMENVPARAMETER4DARBPROC ELglProgramEnvParameter4dARB = NULL;
715 PFNGLPROGRAMENVPARAMETER4DVARBPROC ELglProgramEnvParameter4dvARB = NULL;
716 PFNGLPROGRAMENVPARAMETER4FARBPROC ELglProgramEnvParameter4fARB = NULL;
717 PFNGLPROGRAMENVPARAMETER4FVARBPROC ELglProgramEnvParameter4fvARB = NULL;
718 PFNGLPROGRAMLOCALPARAMETER4DARBPROC ELglProgramLocalParameter4dARB = NULL;
719 PFNGLPROGRAMLOCALPARAMETER4DVARBPROC ELglProgramLocalParameter4dvARB = NULL;
720 PFNGLPROGRAMLOCALPARAMETER4FARBPROC ELglProgramLocalParameter4fARB = NULL;
721 PFNGLPROGRAMLOCALPARAMETER4FVARBPROC ELglProgramLocalParameter4fvARB = NULL;
722 PFNGLPROGRAMSTRINGARBPROC ELglProgramStringARB = NULL;
723 PFNGLVERTEXATTRIB1DARBPROC ELglVertexAttrib1dARB = NULL;
724 PFNGLVERTEXATTRIB1DVARBPROC ELglVertexAttrib1dvARB = NULL;
725 PFNGLVERTEXATTRIB1FARBPROC ELglVertexAttrib1fARB = NULL;
726 PFNGLVERTEXATTRIB1FVARBPROC ELglVertexAttrib1fvARB = NULL;
727 PFNGLVERTEXATTRIB1SARBPROC ELglVertexAttrib1sARB = NULL;
728 PFNGLVERTEXATTRIB1SVARBPROC ELglVertexAttrib1svARB = NULL;
729 PFNGLVERTEXATTRIB2DARBPROC ELglVertexAttrib2dARB = NULL;
730 PFNGLVERTEXATTRIB2DVARBPROC ELglVertexAttrib2dvARB = NULL;
731 PFNGLVERTEXATTRIB2FARBPROC ELglVertexAttrib2fARB = NULL;
732 PFNGLVERTEXATTRIB2FVARBPROC ELglVertexAttrib2fvARB = NULL;
733 PFNGLVERTEXATTRIB2SARBPROC ELglVertexAttrib2sARB = NULL;
734 PFNGLVERTEXATTRIB2SVARBPROC ELglVertexAttrib2svARB = NULL;
735 PFNGLVERTEXATTRIB3DARBPROC ELglVertexAttrib3dARB = NULL;
736 PFNGLVERTEXATTRIB3DVARBPROC ELglVertexAttrib3dvARB = NULL;
737 PFNGLVERTEXATTRIB3FARBPROC ELglVertexAttrib3fARB = NULL;
738 PFNGLVERTEXATTRIB3FVARBPROC ELglVertexAttrib3fvARB = NULL;
739 PFNGLVERTEXATTRIB3SARBPROC ELglVertexAttrib3sARB = NULL;
740 PFNGLVERTEXATTRIB3SVARBPROC ELglVertexAttrib3svARB = NULL;
741 PFNGLVERTEXATTRIB4NBVARBPROC ELglVertexAttrib4NbvARB = NULL;
742 PFNGLVERTEXATTRIB4NIVARBPROC ELglVertexAttrib4NivARB = NULL;
743 PFNGLVERTEXATTRIB4NSVARBPROC ELglVertexAttrib4NsvARB = NULL;
744 PFNGLVERTEXATTRIB4NUBARBPROC ELglVertexAttrib4NubARB = NULL;
745 PFNGLVERTEXATTRIB4NUBVARBPROC ELglVertexAttrib4NubvARB = NULL;
746 PFNGLVERTEXATTRIB4NUIVARBPROC ELglVertexAttrib4NuivARB = NULL;
747 PFNGLVERTEXATTRIB4NUSVARBPROC ELglVertexAttrib4NusvARB = NULL;
748 PFNGLVERTEXATTRIB4BVARBPROC ELglVertexAttrib4bvARB = NULL;
749 PFNGLVERTEXATTRIB4DARBPROC ELglVertexAttrib4dARB = NULL;
750 PFNGLVERTEXATTRIB4DVARBPROC ELglVertexAttrib4dvARB = NULL;
751 PFNGLVERTEXATTRIB4FARBPROC ELglVertexAttrib4fARB = NULL;
752 PFNGLVERTEXATTRIB4FVARBPROC ELglVertexAttrib4fvARB = NULL;
753 PFNGLVERTEXATTRIB4IVARBPROC ELglVertexAttrib4ivARB = NULL;
754 PFNGLVERTEXATTRIB4SARBPROC ELglVertexAttrib4sARB = NULL;
755 PFNGLVERTEXATTRIB4SVARBPROC ELglVertexAttrib4svARB = NULL;
756 PFNGLVERTEXATTRIB4UBVARBPROC ELglVertexAttrib4ubvARB = NULL;
757 PFNGLVERTEXATTRIB4UIVARBPROC ELglVertexAttrib4uivARB = NULL;
758 PFNGLVERTEXATTRIB4USVARBPROC ELglVertexAttrib4usvARB = NULL;
759 PFNGLVERTEXATTRIBPOINTERARBPROC ELglVertexAttribPointerARB = NULL;
760 /* GL_ARB_vertex_program */
761
762 /* GL_ARB_vertex_shader */
763 PFNGLBINDATTRIBLOCATIONARBPROC ELglBindAttribLocationARB = NULL;
764 PFNGLGETACTIVEATTRIBARBPROC ELglGetActiveAttribARB = NULL;
765 PFNGLGETATTRIBLOCATIONARBPROC ELglGetAttribLocationARB = NULL;
766 /* GL_ARB_vertex_shader */
767
768 /* GL_ARB_shader_objects */
769 PFNGLATTACHOBJECTARBPROC ELglAttachObjectARB = NULL;
770 PFNGLCOMPILESHADERARBPROC ELglCompileShaderARB = NULL;
771 PFNGLCREATEPROGRAMOBJECTARBPROC ELglCreateProgramObjectARB = NULL;
772 PFNGLCREATESHADEROBJECTARBPROC ELglCreateShaderObjectARB = NULL;
773 PFNGLDELETEOBJECTARBPROC ELglDeleteObjectARB = NULL;
774 PFNGLDETACHOBJECTARBPROC ELglDetachObjectARB = NULL;
775 PFNGLGETACTIVEUNIFORMARBPROC ELglGetActiveUniformARB = NULL;
776 PFNGLGETATTACHEDOBJECTSARBPROC ELglGetAttachedObjectsARB = NULL;
777 PFNGLGETHANDLEARBPROC ELglGetHandleARB = NULL;
778 PFNGLGETINFOLOGARBPROC ELglGetInfoLogARB = NULL;
779 PFNGLGETOBJECTPARAMETERFVARBPROC ELglGetObjectParameterfvARB = NULL;
780 PFNGLGETOBJECTPARAMETERIVARBPROC ELglGetObjectParameterivARB = NULL;
781 PFNGLGETSHADERSOURCEARBPROC ELglGetShaderSourceARB = NULL;
782 PFNGLGETUNIFORMLOCATIONARBPROC ELglGetUniformLocationARB = NULL;
783 PFNGLGETUNIFORMFVARBPROC ELglGetUniformfvARB = NULL;
784 PFNGLGETUNIFORMIVARBPROC ELglGetUniformivARB = NULL;
785 PFNGLLINKPROGRAMARBPROC ELglLinkProgramARB = NULL;
786 PFNGLSHADERSOURCEARBPROC ELglShaderSourceARB = NULL;
787 PFNGLUNIFORM1FARBPROC ELglUniform1fARB = NULL;
788 PFNGLUNIFORM1FVARBPROC ELglUniform1fvARB = NULL;
789 PFNGLUNIFORM1IARBPROC ELglUniform1iARB = NULL;
790 PFNGLUNIFORM1IVARBPROC ELglUniform1ivARB = NULL;
791 PFNGLUNIFORM2FARBPROC ELglUniform2fARB = NULL;
792 PFNGLUNIFORM2FVARBPROC ELglUniform2fvARB = NULL;
793 PFNGLUNIFORM2IARBPROC ELglUniform2iARB = NULL;
794 PFNGLUNIFORM2IVARBPROC ELglUniform2ivARB = NULL;
795 PFNGLUNIFORM3FARBPROC ELglUniform3fARB = NULL;
796 PFNGLUNIFORM3FVARBPROC ELglUniform3fvARB = NULL;
797 PFNGLUNIFORM3IARBPROC ELglUniform3iARB = NULL;
798 PFNGLUNIFORM3IVARBPROC ELglUniform3ivARB = NULL;
799 PFNGLUNIFORM4FARBPROC ELglUniform4fARB = NULL;
800 PFNGLUNIFORM4FVARBPROC ELglUniform4fvARB = NULL;
801 PFNGLUNIFORM4IARBPROC ELglUniform4iARB = NULL;
802 PFNGLUNIFORM4IVARBPROC ELglUniform4ivARB = NULL;
803 PFNGLUNIFORMMATRIX2FVARBPROC ELglUniformMatrix2fvARB = NULL;
804 PFNGLUNIFORMMATRIX3FVARBPROC ELglUniformMatrix3fvARB = NULL;
805 PFNGLUNIFORMMATRIX4FVARBPROC ELglUniformMatrix4fvARB = NULL;
806 PFNGLUSEPROGRAMOBJECTARBPROC ELglUseProgramObjectARB = NULL;
807 PFNGLVALIDATEPROGRAMARBPROC ELglValidateProgramARB = NULL;
808 /* GL_ARB_shader_objects */
809
810 /* GL_EXT_fog_coord */
811 PFNGLFOGCOORDPOINTEREXTPROC ELglFogCoordPointerEXT = NULL;
812 PFNGLFOGCOORDDEXTPROC ELglFogCoorddEXT = NULL;
813 PFNGLFOGCOORDDVEXTPROC ELglFogCoorddvEXT = NULL;
814 PFNGLFOGCOORDFEXTPROC ELglFogCoordfEXT = NULL;
815 PFNGLFOGCOORDFVEXTPROC ELglFogCoordfvEXT = NULL;
816 /* GL_EXT_fog_coord */
817
818 /* GL_EXT_gpu_program_parameters */
819 PFNGLPROGRAMENVPARAMETERS4FVEXTPROC ELglProgramEnvParameters4fvEXT = NULL;
820 PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC ELglProgramLocalParameters4fvEXT = NULL;
821 /* GL_EXT_gpu_program_parameters */
822
el_init_GL_ARB_multitexture()823 static GLboolean el_init_GL_ARB_multitexture()
824 {
825 GLboolean r = GL_TRUE;
826
827 r = ((ELglActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)SDL_GL_GetProcAddress("glActiveTextureARB")) != NULL) && r;
828 r = ((ELglClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)SDL_GL_GetProcAddress("glClientActiveTextureARB")) != NULL) && r;
829 r = ((ELglMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1dARB")) != NULL) && r;
830 r = ((ELglMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1dvARB")) != NULL) && r;
831 r = ((ELglMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1fARB")) != NULL) && r;
832 r = ((ELglMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1fvARB")) != NULL) && r;
833 r = ((ELglMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1iARB")) != NULL) && r;
834 r = ((ELglMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1ivARB")) != NULL) && r;
835 r = ((ELglMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1sARB")) != NULL) && r;
836 r = ((ELglMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord1svARB")) != NULL) && r;
837 r = ((ELglMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2dARB")) != NULL) && r;
838 r = ((ELglMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2dvARB")) != NULL) && r;
839 r = ((ELglMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2fARB")) != NULL) && r;
840 r = ((ELglMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2fvARB")) != NULL) && r;
841 r = ((ELglMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2iARB")) != NULL) && r;
842 r = ((ELglMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2ivARB")) != NULL) && r;
843 r = ((ELglMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2sARB")) != NULL) && r;
844 r = ((ELglMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord2svARB")) != NULL) && r;
845 r = ((ELglMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3dARB")) != NULL) && r;
846 r = ((ELglMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3dvARB")) != NULL) && r;
847 r = ((ELglMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3fARB")) != NULL) && r;
848 r = ((ELglMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3fvARB")) != NULL) && r;
849 r = ((ELglMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3iARB")) != NULL) && r;
850 r = ((ELglMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3ivARB")) != NULL) && r;
851 r = ((ELglMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3sARB")) != NULL) && r;
852 r = ((ELglMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord3svARB")) != NULL) && r;
853 r = ((ELglMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4dARB")) != NULL) && r;
854 r = ((ELglMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4dvARB")) != NULL) && r;
855 r = ((ELglMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4fARB")) != NULL) && r;
856 r = ((ELglMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4fvARB")) != NULL) && r;
857 r = ((ELglMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4iARB")) != NULL) && r;
858 r = ((ELglMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4ivARB")) != NULL) && r;
859 r = ((ELglMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4sARB")) != NULL) && r;
860 r = ((ELglMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)SDL_GL_GetProcAddress("glMultiTexCoord4svARB")) != NULL) && r;
861
862 return r;
863 }
864
el_init_GL_ARB_texture_compression()865 static GLboolean el_init_GL_ARB_texture_compression()
866 {
867 GLboolean r = GL_TRUE;
868
869 r = ((ELglCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)SDL_GL_GetProcAddress("glCompressedTexImage1DARB")) != NULL) && r;
870 r = ((ELglCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)SDL_GL_GetProcAddress("glCompressedTexImage2DARB")) != NULL) && r;
871 r = ((ELglCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)SDL_GL_GetProcAddress("glCompressedTexImage3DARB")) != NULL) && r;
872 r = ((ELglCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)SDL_GL_GetProcAddress("glCompressedTexSubImage1DARB")) != NULL) && r;
873 r = ((ELglCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)SDL_GL_GetProcAddress("glCompressedTexSubImage2DARB")) != NULL) && r;
874 r = ((ELglCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)SDL_GL_GetProcAddress("glCompressedTexSubImage3DARB")) != NULL) && r;
875 r = ((ELglGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)SDL_GL_GetProcAddress("glGetCompressedTexImageARB")) != NULL) && r;
876
877 return r;
878 }
879
el_init_GL_ARB_point_parameters()880 static GLboolean el_init_GL_ARB_point_parameters()
881 {
882 GLboolean r = GL_TRUE;
883
884 r = ((ELglPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)SDL_GL_GetProcAddress("glPointParameterfARB")) != NULL) && r;
885 r = ((ELglPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)SDL_GL_GetProcAddress("glPointParameterfvARB")) != NULL) && r;
886
887 return r;
888 }
889
el_init_GL_ARB_vertex_buffer_object()890 static GLboolean el_init_GL_ARB_vertex_buffer_object()
891 {
892 GLboolean r = GL_TRUE;
893
894 r = ((ELglBindBufferARB = (PFNGLBINDBUFFERARBPROC)SDL_GL_GetProcAddress("glBindBufferARB")) != NULL) && r;
895 r = ((ELglBufferDataARB = (PFNGLBUFFERDATAARBPROC)SDL_GL_GetProcAddress("glBufferDataARB")) != NULL) && r;
896 r = ((ELglBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)SDL_GL_GetProcAddress("glBufferSubDataARB")) != NULL) && r;
897 r = ((ELglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)SDL_GL_GetProcAddress("glDeleteBuffersARB")) != NULL) && r;
898 r = ((ELglGenBuffersARB = (PFNGLGENBUFFERSARBPROC)SDL_GL_GetProcAddress("glGenBuffersARB")) != NULL) && r;
899 r = ((ELglGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)SDL_GL_GetProcAddress("glGetBufferParameterivARB")) != NULL) && r;
900 r = ((ELglGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)SDL_GL_GetProcAddress("glGetBufferPointervARB")) != NULL) && r;
901 r = ((ELglGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)SDL_GL_GetProcAddress("glGetBufferSubDataARB")) != NULL) && r;
902 r = ((ELglIsBufferARB = (PFNGLISBUFFERARBPROC)SDL_GL_GetProcAddress("glIsBufferARB")) != NULL) && r;
903 r = ((ELglMapBufferARB = (PFNGLMAPBUFFERARBPROC)SDL_GL_GetProcAddress("glMapBufferARB")) != NULL) && r;
904 r = ((ELglUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)SDL_GL_GetProcAddress("glUnmapBufferARB")) != NULL) && r;
905
906 return r;
907 }
908
el_init_GL_ARB_occlusion_query()909 static GLboolean el_init_GL_ARB_occlusion_query()
910 {
911 GLboolean r = GL_TRUE;
912
913 r = ((ELglBeginQueryARB = (PFNGLBEGINQUERYARBPROC)SDL_GL_GetProcAddress("glBeginQueryARB")) != NULL) && r;
914 r = ((ELglDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)SDL_GL_GetProcAddress("glDeleteQueriesARB")) != NULL) && r;
915 r = ((ELglEndQueryARB = (PFNGLENDQUERYARBPROC)SDL_GL_GetProcAddress("glEndQueryARB")) != NULL) && r;
916 r = ((ELglGenQueriesARB = (PFNGLGENQUERIESARBPROC)SDL_GL_GetProcAddress("glGenQueriesARB")) != NULL) && r;
917 r = ((ELglGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)SDL_GL_GetProcAddress("glGetQueryObjectivARB")) != NULL) && r;
918 r = ((ELglGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)SDL_GL_GetProcAddress("glGetQueryObjectuivARB")) != NULL) && r;
919 r = ((ELglGetQueryivARB = (PFNGLGETQUERYIVARBPROC)SDL_GL_GetProcAddress("glGetQueryivARB")) != NULL) && r;
920 r = ((ELglIsQueryARB = (PFNGLISQUERYARBPROC)SDL_GL_GetProcAddress("glIsQueryARB")) != NULL) && r;
921
922 return r;
923 }
924
el_init_GL_ARB_vertex_program()925 static GLboolean el_init_GL_ARB_vertex_program()
926 {
927 GLboolean r = GL_TRUE;
928
929 r = ((ELglBindProgramARB = (PFNGLBINDPROGRAMARBPROC)SDL_GL_GetProcAddress("glBindProgramARB")) != NULL) && r;
930 r = ((ELglDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)SDL_GL_GetProcAddress("glDeleteProgramsARB")) != NULL) && r;
931 r = ((ELglDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)SDL_GL_GetProcAddress("glDisableVertexAttribArrayARB")) != NULL) && r;
932 r = ((ELglEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)SDL_GL_GetProcAddress("glEnableVertexAttribArrayARB")) != NULL) && r;
933 r = ((ELglGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)SDL_GL_GetProcAddress("glGenProgramsARB")) != NULL) && r;
934 r = ((ELglGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)SDL_GL_GetProcAddress("glGetProgramEnvParameterdvARB")) != NULL) && r;
935 r = ((ELglGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)SDL_GL_GetProcAddress("glGetProgramEnvParameterfvARB")) != NULL) && r;
936 r = ((ELglGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)SDL_GL_GetProcAddress("glGetProgramLocalParameterdvARB")) != NULL) && r;
937 r = ((ELglGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)SDL_GL_GetProcAddress("glGetProgramLocalParameterfvARB")) != NULL) && r;
938 r = ((ELglGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)SDL_GL_GetProcAddress("glGetProgramStringARB")) != NULL) && r;
939 r = ((ELglGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)SDL_GL_GetProcAddress("glGetProgramivARB")) != NULL) && r;
940 r = ((ELglGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)SDL_GL_GetProcAddress("glGetVertexAttribPointervARB")) != NULL) && r;
941 r = ((ELglGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)SDL_GL_GetProcAddress("glGetVertexAttribdvARB")) != NULL) && r;
942 r = ((ELglGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)SDL_GL_GetProcAddress("glGetVertexAttribfvARB")) != NULL) && r;
943 r = ((ELglGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)SDL_GL_GetProcAddress("glGetVertexAttribivARB")) != NULL) && r;
944 r = ((ELglIsProgramARB = (PFNGLISPROGRAMARBPROC)SDL_GL_GetProcAddress("glIsProgramARB")) != NULL) && r;
945 r = ((ELglProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)SDL_GL_GetProcAddress("glProgramEnvParameter4dARB")) != NULL) && r;
946 r = ((ELglProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)SDL_GL_GetProcAddress("glProgramEnvParameter4dvARB")) != NULL) && r;
947 r = ((ELglProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)SDL_GL_GetProcAddress("glProgramEnvParameter4fARB")) != NULL) && r;
948 r = ((ELglProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)SDL_GL_GetProcAddress("glProgramEnvParameter4fvARB")) != NULL) && r;
949 r = ((ELglProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)SDL_GL_GetProcAddress("glProgramLocalParameter4dARB")) != NULL) && r;
950 r = ((ELglProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)SDL_GL_GetProcAddress("glProgramLocalParameter4dvARB")) != NULL) && r;
951 r = ((ELglProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)SDL_GL_GetProcAddress("glProgramLocalParameter4fARB")) != NULL) && r;
952 r = ((ELglProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)SDL_GL_GetProcAddress("glProgramLocalParameter4fvARB")) != NULL) && r;
953 r = ((ELglProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)SDL_GL_GetProcAddress("glProgramStringARB")) != NULL) && r;
954 r = ((ELglVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)SDL_GL_GetProcAddress("glVertexAttrib1dARB")) != NULL) && r;
955 r = ((ELglVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib1dvARB")) != NULL) && r;
956 r = ((ELglVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)SDL_GL_GetProcAddress("glVertexAttrib1fARB")) != NULL) && r;
957 r = ((ELglVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib1fvARB")) != NULL) && r;
958 r = ((ELglVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)SDL_GL_GetProcAddress("glVertexAttrib1sARB")) != NULL) && r;
959 r = ((ELglVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib1svARB")) != NULL) && r;
960 r = ((ELglVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)SDL_GL_GetProcAddress("glVertexAttrib2dARB")) != NULL) && r;
961 r = ((ELglVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib2dvARB")) != NULL) && r;
962 r = ((ELglVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)SDL_GL_GetProcAddress("glVertexAttrib2fARB")) != NULL) && r;
963 r = ((ELglVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib2fvARB")) != NULL) && r;
964 r = ((ELglVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)SDL_GL_GetProcAddress("glVertexAttrib2sARB")) != NULL) && r;
965 r = ((ELglVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib2svARB")) != NULL) && r;
966 r = ((ELglVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)SDL_GL_GetProcAddress("glVertexAttrib3dARB")) != NULL) && r;
967 r = ((ELglVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib3dvARB")) != NULL) && r;
968 r = ((ELglVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)SDL_GL_GetProcAddress("glVertexAttrib3fARB")) != NULL) && r;
969 r = ((ELglVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib3fvARB")) != NULL) && r;
970 r = ((ELglVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)SDL_GL_GetProcAddress("glVertexAttrib3sARB")) != NULL) && r;
971 r = ((ELglVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib3svARB")) != NULL) && r;
972 r = ((ELglVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NbvARB")) != NULL) && r;
973 r = ((ELglVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NivARB")) != NULL) && r;
974 r = ((ELglVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NsvARB")) != NULL) && r;
975 r = ((ELglVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NubARB")) != NULL) && r;
976 r = ((ELglVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NubvARB")) != NULL) && r;
977 r = ((ELglVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NuivARB")) != NULL) && r;
978 r = ((ELglVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4NusvARB")) != NULL) && r;
979 r = ((ELglVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4bvARB")) != NULL) && r;
980 r = ((ELglVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4dARB")) != NULL) && r;
981 r = ((ELglVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4dvARB")) != NULL) && r;
982 r = ((ELglVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4fARB")) != NULL) && r;
983 r = ((ELglVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4fvARB")) != NULL) && r;
984 r = ((ELglVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4ivARB")) != NULL) && r;
985 r = ((ELglVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4sARB")) != NULL) && r;
986 r = ((ELglVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4svARB")) != NULL) && r;
987 r = ((ELglVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4ubvARB")) != NULL) && r;
988 r = ((ELglVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4uivARB")) != NULL) && r;
989 r = ((ELglVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)SDL_GL_GetProcAddress("glVertexAttrib4usvARB")) != NULL) && r;
990 r = ((ELglVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)SDL_GL_GetProcAddress("glVertexAttribPointerARB")) != NULL) && r;
991
992 return r;
993 }
994
el_init_GL_ARB_vertex_shader()995 static GLboolean el_init_GL_ARB_vertex_shader()
996 {
997 GLboolean r = GL_TRUE;
998
999 r = ((ELglBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)SDL_GL_GetProcAddress("glBindAttribLocationARB")) != NULL) && r;
1000 r = ((ELglGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)SDL_GL_GetProcAddress("glGetActiveAttribARB")) != NULL) && r;
1001 r = ((ELglGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)SDL_GL_GetProcAddress("glGetAttribLocationARB")) != NULL) && r;
1002
1003 return r;
1004 }
1005
el_init_GL_ARB_shader_objects()1006 static GLboolean el_init_GL_ARB_shader_objects()
1007 {
1008 GLboolean r = GL_TRUE;
1009
1010 r = ((ELglAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)SDL_GL_GetProcAddress("glAttachObjectARB")) != NULL) && r;
1011 r = ((ELglCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)SDL_GL_GetProcAddress("glCompileShaderARB")) != NULL) && r;
1012 r = ((ELglCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)SDL_GL_GetProcAddress("glCreateProgramObjectARB")) != NULL) && r;
1013 r = ((ELglCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)SDL_GL_GetProcAddress("glCreateShaderObjectARB")) != NULL) && r;
1014 r = ((ELglDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)SDL_GL_GetProcAddress("glDeleteObjectARB")) != NULL) && r;
1015 r = ((ELglDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)SDL_GL_GetProcAddress("glDetachObjectARB")) != NULL) && r;
1016 r = ((ELglGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)SDL_GL_GetProcAddress("glGetActiveUniformARB")) != NULL) && r;
1017 r = ((ELglGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)SDL_GL_GetProcAddress("glGetAttachedObjectsARB")) != NULL) && r;
1018 r = ((ELglGetHandleARB = (PFNGLGETHANDLEARBPROC)SDL_GL_GetProcAddress("glGetHandleARB")) != NULL) && r;
1019 r = ((ELglGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)SDL_GL_GetProcAddress("glGetInfoLogARB")) != NULL) && r;
1020 r = ((ELglGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)SDL_GL_GetProcAddress("glGetObjectParameterfvARB")) != NULL) && r;
1021 r = ((ELglGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)SDL_GL_GetProcAddress("glGetObjectParameterivARB")) != NULL) && r;
1022 r = ((ELglGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)SDL_GL_GetProcAddress("glGetShaderSourceARB")) != NULL) && r;
1023 r = ((ELglGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)SDL_GL_GetProcAddress("glGetUniformLocationARB")) != NULL) && r;
1024 r = ((ELglGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)SDL_GL_GetProcAddress("glGetUniformfvARB")) != NULL) && r;
1025 r = ((ELglGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)SDL_GL_GetProcAddress("glGetUniformivARB")) != NULL) && r;
1026 r = ((ELglLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)SDL_GL_GetProcAddress("glLinkProgramARB")) != NULL) && r;
1027 r = ((ELglShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)SDL_GL_GetProcAddress("glShaderSourceARB")) != NULL) && r;
1028 r = ((ELglUniform1fARB = (PFNGLUNIFORM1FARBPROC)SDL_GL_GetProcAddress("glUniform1fARB")) != NULL) && r;
1029 r = ((ELglUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)SDL_GL_GetProcAddress("glUniform1fvARB")) != NULL) && r;
1030 r = ((ELglUniform1iARB = (PFNGLUNIFORM1IARBPROC)SDL_GL_GetProcAddress("glUniform1iARB")) != NULL) && r;
1031 r = ((ELglUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)SDL_GL_GetProcAddress("glUniform1ivARB")) != NULL) && r;
1032 r = ((ELglUniform2fARB = (PFNGLUNIFORM2FARBPROC)SDL_GL_GetProcAddress("glUniform2fARB")) != NULL) && r;
1033 r = ((ELglUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)SDL_GL_GetProcAddress("glUniform2fvARB")) != NULL) && r;
1034 r = ((ELglUniform2iARB = (PFNGLUNIFORM2IARBPROC)SDL_GL_GetProcAddress("glUniform2iARB")) != NULL) && r;
1035 r = ((ELglUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)SDL_GL_GetProcAddress("glUniform2ivARB")) != NULL) && r;
1036 r = ((ELglUniform3fARB = (PFNGLUNIFORM3FARBPROC)SDL_GL_GetProcAddress("glUniform3fARB")) != NULL) && r;
1037 r = ((ELglUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)SDL_GL_GetProcAddress("glUniform3fvARB")) != NULL) && r;
1038 r = ((ELglUniform3iARB = (PFNGLUNIFORM3IARBPROC)SDL_GL_GetProcAddress("glUniform3iARB")) != NULL) && r;
1039 r = ((ELglUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)SDL_GL_GetProcAddress("glUniform3ivARB")) != NULL) && r;
1040 r = ((ELglUniform4fARB = (PFNGLUNIFORM4FARBPROC)SDL_GL_GetProcAddress("glUniform4fARB")) != NULL) && r;
1041 r = ((ELglUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)SDL_GL_GetProcAddress("glUniform4fvARB")) != NULL) && r;
1042 r = ((ELglUniform4iARB = (PFNGLUNIFORM4IARBPROC)SDL_GL_GetProcAddress("glUniform4iARB")) != NULL) && r;
1043 r = ((ELglUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)SDL_GL_GetProcAddress("glUniform4ivARB")) != NULL) && r;
1044 r = ((ELglUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)SDL_GL_GetProcAddress("glUniformMatrix2fvARB")) != NULL) && r;
1045 r = ((ELglUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)SDL_GL_GetProcAddress("glUniformMatrix3fvARB")) != NULL) && r;
1046 r = ((ELglUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)SDL_GL_GetProcAddress("glUniformMatrix4fvARB")) != NULL) && r;
1047 r = ((ELglUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)SDL_GL_GetProcAddress("glUseProgramObjectARB")) != NULL) && r;
1048 r = ((ELglValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)SDL_GL_GetProcAddress("glValidateProgramARB")) != NULL) && r;
1049
1050 return r;
1051 }
1052
el_init_GL_EXT_compiled_vertex_array()1053 static GLboolean el_init_GL_EXT_compiled_vertex_array()
1054 {
1055 GLboolean r = GL_TRUE;
1056
1057 r = ((ELglLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)SDL_GL_GetProcAddress("glLockArraysEXT")) != NULL) && r;
1058 r = ((ELglUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)SDL_GL_GetProcAddress("glUnlockArraysEXT")) != NULL) && r;
1059
1060 return r;
1061 }
1062
el_init_GL_EXT_draw_range_elements()1063 static GLboolean el_init_GL_EXT_draw_range_elements()
1064 {
1065 GLboolean r = GL_TRUE;
1066
1067 r = ((ELglDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)SDL_GL_GetProcAddress("glDrawRangeElementsEXT")) != NULL) && r;
1068
1069 return r;
1070 }
1071
el_init_GL_EXT_framebuffer_object()1072 static GLboolean el_init_GL_EXT_framebuffer_object()
1073 {
1074 GLboolean r = GL_TRUE;
1075
1076 r = ((ELglBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)SDL_GL_GetProcAddress("glBindFramebufferEXT")) != NULL) && r;
1077 r = ((ELglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)SDL_GL_GetProcAddress("glBindRenderbufferEXT")) != NULL) && r;
1078 r = ((ELglCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)SDL_GL_GetProcAddress("glCheckFramebufferStatusEXT")) != NULL) && r;
1079 r = ((ELglDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)SDL_GL_GetProcAddress("glDeleteFramebuffersEXT")) != NULL) && r;
1080 r = ((ELglDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)SDL_GL_GetProcAddress("glDeleteRenderbuffersEXT")) != NULL) && r;
1081 r = ((ELglFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)SDL_GL_GetProcAddress("glFramebufferRenderbufferEXT")) != NULL) && r;
1082 r = ((ELglFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)SDL_GL_GetProcAddress("glFramebufferTexture1DEXT")) != NULL) && r;
1083 r = ((ELglFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)SDL_GL_GetProcAddress("glFramebufferTexture2DEXT")) != NULL) && r;
1084 r = ((ELglFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)SDL_GL_GetProcAddress("glFramebufferTexture3DEXT")) != NULL) && r;
1085 r = ((ELglGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)SDL_GL_GetProcAddress("glGenFramebuffersEXT")) != NULL) && r;
1086 r = ((ELglGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)SDL_GL_GetProcAddress("glGenRenderbuffersEXT")) != NULL) && r;
1087 r = ((ELglGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)SDL_GL_GetProcAddress("glGenerateMipmapEXT")) != NULL) && r;
1088 r = ((ELglGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameterivEXT")) != NULL) && r;
1089 r = ((ELglGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)SDL_GL_GetProcAddress("glGetRenderbufferParameterivEXT")) != NULL) && r;
1090 r = ((ELglIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)SDL_GL_GetProcAddress("glIsFramebufferEXT")) != NULL) && r;
1091 r = ((ELglIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)SDL_GL_GetProcAddress("glIsRenderbufferEXT")) != NULL) && r;
1092 r = ((ELglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)SDL_GL_GetProcAddress("glRenderbufferStorageEXT")) != NULL) && r;
1093
1094 return r;
1095 }
1096
el_init_GL_EXT_fog_coord()1097 static GLboolean el_init_GL_EXT_fog_coord()
1098 {
1099 GLboolean r = GL_TRUE;
1100
1101 r = ((ELglFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)SDL_GL_GetProcAddress("glFogCoordPointerEXT")) != NULL) && r;
1102 r = ((ELglFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)SDL_GL_GetProcAddress("glFogCoorddEXT")) != NULL) && r;
1103 r = ((ELglFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)SDL_GL_GetProcAddress("glFogCoorddvEXT")) != NULL) && r;
1104 r = ((ELglFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)SDL_GL_GetProcAddress("glFogCoordfEXT")) != NULL) && r;
1105 r = ((ELglFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)SDL_GL_GetProcAddress("glFogCoordfvEXT")) != NULL) && r;
1106
1107 return r;
1108 }
1109
el_init_GL_EXT_gpu_program_parameters()1110 static GLboolean el_init_GL_EXT_gpu_program_parameters()
1111 {
1112 GLboolean r = GL_TRUE;
1113
1114 r = ((ELglProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)SDL_GL_GetProcAddress("glProgramEnvParameters4fvEXT")) != NULL) && r;
1115 r = ((ELglProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)SDL_GL_GetProcAddress("glProgramLocalParameters4fvEXT")) != NULL) && r;
1116
1117 return r;
1118 }
1119
init_opengl_extensions()1120 void init_opengl_extensions()
1121 {
1122 GLboolean e;
1123 char* extensions_string;
1124
1125 check_for_problem_drivers();
1126
1127 is_GL_VERSION_1_2 = el_init_GL_VERSION_1_2();
1128 is_GL_VERSION_1_3 = is_GL_VERSION_1_2 && el_init_GL_VERSION_1_3();
1129 is_GL_VERSION_1_4 = is_GL_VERSION_1_3 && el_init_GL_VERSION_1_4();
1130 is_GL_VERSION_1_5 = is_GL_VERSION_1_4 && el_init_GL_VERSION_1_5();
1131 is_GL_VERSION_2_0 = is_GL_VERSION_1_5 && el_init_GL_VERSION_2_0();
1132 is_GL_VERSION_2_1 = is_GL_VERSION_2_0 && el_init_GL_VERSION_2_1();
1133
1134 gl_version = 0;
1135
1136 if (is_GL_VERSION_1_2)
1137 {
1138 gl_version++;
1139 }
1140
1141 if (is_GL_VERSION_1_3)
1142 {
1143 gl_version++;
1144 }
1145
1146 if (is_GL_VERSION_1_4)
1147 {
1148 gl_version++;
1149 }
1150
1151 if (is_GL_VERSION_1_5)
1152 {
1153 gl_version++;
1154 }
1155
1156 if (is_GL_VERSION_2_0)
1157 {
1158 gl_version++;
1159 }
1160
1161 if (is_GL_VERSION_2_1)
1162 {
1163 gl_version++;
1164 }
1165
1166 extensions_string = (char*)glGetString(GL_EXTENSIONS);
1167 if (extensions_string == NULL)
1168 {
1169 const char *error_str = "glGetString() returned NULL for GL_EXTENSIONS=0x%x";
1170 DO_CHECK_GL_ERRORS();
1171 LOG_ERROR(error_str, GL_EXTENSIONS);
1172 SDL_Quit();
1173 #ifdef ELC
1174 FATAL_ERROR_WINDOW(error_str, GL_EXTENSIONS);
1175 #endif
1176 exit(1);
1177 }
1178
1179 /* GL_ARB_multitexture */
1180 texture_units = 1;
1181 if (strstr(extensions_string, "GL_ARB_multitexture") != NULL && !multitexture_problem)
1182 {
1183 e = el_init_GL_ARB_multitexture();
1184 if (e == GL_TRUE)
1185 {
1186 extensions |= 1 << arb_multitexture;
1187 glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &texture_units);
1188 }
1189 }
1190 LOG_DEBUG("GL_MAX_TEXTURE_UNITS_ARB: %d", texture_units);
1191 /* GL_ARB_multitexture */
1192 /* GL_ARB_texture_compression */
1193 if (strstr(extensions_string, "GL_ARB_texture_compression") != NULL)
1194 {
1195 e = el_init_GL_ARB_texture_compression();
1196 if (e == GL_TRUE)
1197 {
1198 extensions |= 1 << arb_texture_compression;
1199 }
1200 }
1201 /* GL_ARB_texture_compression */
1202 /* GL_ARB_point_parameters */
1203 if (strstr(extensions_string, "GL_ARB_point_parameters") != NULL)
1204 {
1205 e = el_init_GL_ARB_point_parameters();
1206 if (e == GL_TRUE)
1207 {
1208 extensions |= 1 << arb_point_parameters;
1209 }
1210 }
1211 /* GL_ARB_point_parameters */
1212 /* GL_ARB_point_sprite */
1213 if (strstr(extensions_string, "GL_ARB_point_sprite") != NULL)
1214 {
1215 extensions |= 1 << arb_point_sprite;
1216 }
1217 /* GL_ARB_point_sprite */
1218 /* GL_ARB_vertex_buffer_object */
1219 if (strstr(extensions_string, "GL_ARB_vertex_buffer_object") != NULL)
1220 {
1221 e = el_init_GL_ARB_vertex_buffer_object();
1222 if (e == GL_TRUE)
1223 {
1224 extensions |= 1 << arb_vertex_buffer_object;
1225 }
1226 }
1227 /* GL_ARB_vertex_buffer_object */
1228 /* GL_ARB_shadow */
1229 if (strstr(extensions_string, "GL_ARB_shadow") != NULL)
1230 {
1231 extensions |= 1 << arb_shadow;
1232 }
1233 /* GL_ARB_shadow */
1234 /* GL_ARB_texture_env_combine */
1235 if (strstr(extensions_string, "GL_ARB_texture_env_combine") != NULL)
1236 {
1237 extensions |= 1 << arb_texture_env_combine;
1238 }
1239 /* GL_ARB_texture_env_combine */
1240 /* GL_ARB_texture_env_crossbar */
1241 if (strstr(extensions_string, "GL_ARB_texture_env_crossbar") != NULL)
1242 {
1243 extensions |= 1 << arb_texture_env_crossbar;
1244 }
1245 /* GL_ARB_texture_env_crossbar */
1246 /* GL_ARB_texture_env_dot3 */
1247 if (strstr(extensions_string, "GL_ARB_texture_env_dot3") != NULL)
1248 {
1249 extensions |= 1 << arb_texture_env_dot3;
1250 }
1251 /* GL_ARB_texture_env_dot3 */
1252 /* GL_ARB_occlusion_query */
1253 if (strstr(extensions_string, "GL_ARB_occlusion_query") != NULL)
1254 {
1255 e = el_init_GL_ARB_occlusion_query();
1256 if (e == GL_TRUE)
1257 {
1258 extensions |= 1 << arb_occlusion_query;
1259 }
1260 }
1261 /* GL_ARB_occlusion_query */
1262 /* GL_ARB_depth_texture */
1263 if (strstr(extensions_string, "GL_ARB_depth_texture") != NULL)
1264 {
1265 extensions |= 1 << arb_depth_texture;
1266 }
1267 /* GL_ARB_depth_texture */
1268 /* GL_ARB_fragment_program */
1269 if (strstr(extensions_string, "GL_ARB_fragment_program") != NULL)
1270 {
1271 extensions |= 1 << arb_fragment_program;
1272 }
1273 /* GL_ARB_fragment_program */
1274 /* GL_ARB_vertex_program */
1275 if (strstr(extensions_string, "GL_ARB_vertex_program") != NULL && !vertex_program_problem)
1276 {
1277 e = el_init_GL_ARB_vertex_program();
1278 if (e == GL_TRUE)
1279 {
1280 extensions |= 1 << arb_vertex_program;
1281 }
1282 }
1283 /* GL_ARB_vertex_program */
1284 /* GL_ARB_fragment_shader */
1285 if (strstr(extensions_string, "GL_ARB_fragment_shader") != NULL)
1286 {
1287 extensions |= 1 << arb_fragment_shader;
1288 }
1289 /* GL_ARB_fragment_shader */
1290 /* GL_ARB_vertex_shader */
1291 if (strstr(extensions_string, "GL_ARB_vertex_shader") != NULL)
1292 {
1293 e = el_init_GL_ARB_vertex_shader();
1294 if (e == GL_TRUE)
1295 {
1296 extensions |= 1 << arb_vertex_shader;
1297 }
1298 }
1299 /* GL_ARB_vertex_shader */
1300 /* GL_ARB_shader_objects */
1301 if (strstr(extensions_string, "GL_ARB_shader_objects") != NULL)
1302 {
1303 e = el_init_GL_ARB_shader_objects();
1304 if (e == GL_TRUE)
1305 {
1306 extensions |= 1 << arb_shader_objects;
1307 }
1308 }
1309 /* GL_ARB_shader_objects */
1310 /* GL_ARB_shading_language_100 */
1311 if (strstr(extensions_string, "GL_ARB_shading_language_100") != NULL)
1312 {
1313 extensions |= 1 << arb_shading_language_100;
1314 }
1315 /* GL_ARB_shading_language_100 */
1316 if (strstr(extensions_string, "GL_ARB_texture_non_power_of_two") != NULL)
1317 {
1318 extensions |= 1 << arb_texture_non_power_of_two;
1319 }
1320 /* GL_EXT_compiled_vertex_array */
1321 if (strstr(extensions_string, "GL_EXT_compiled_vertex_array") != NULL)
1322 {
1323 e = el_init_GL_EXT_compiled_vertex_array();
1324 if (e == GL_TRUE)
1325 {
1326 extensions |= 1 << ext_compiled_vertex_array;
1327 }
1328 }
1329 /* GL_EXT_compiled_vertex_array */
1330 /* GL_EXT_draw_range_elements */
1331 if (strstr(extensions_string, "GL_EXT_draw_range_elements") != NULL)
1332 {
1333 e = el_init_GL_EXT_draw_range_elements();
1334 if (e == GL_TRUE)
1335 {
1336 extensions |= 1 << ext_draw_range_elements;
1337 }
1338 }
1339 /* GL_EXT_draw_range_elements */
1340 /* GL_EXT_framebuffer_object */
1341 if (strstr(extensions_string, "GL_EXT_framebuffer_object") != NULL)
1342 {
1343 e = el_init_GL_EXT_framebuffer_object();
1344 if (e == GL_TRUE)
1345 {
1346 extensions |= 1 << ext_framebuffer_object;
1347 }
1348 }
1349 /* GL_EXT_framebuffer_object */
1350 /* GL_EXT_texture_compression_s3tc */
1351 if (strstr(extensions_string, "GL_EXT_texture_compression_s3tc") != NULL)
1352 {
1353 extensions |= 1 << ext_texture_compression_s3tc;
1354 }
1355 /* GL_EXT_texture_compression_s3tc */
1356 /* GL_EXT_texture_filter_anisotropic */
1357 if (strstr(extensions_string, "GL_EXT_texture_filter_anisotropic") != NULL)
1358 {
1359 extensions |= 1 << ext_texture_filter_anisotropic;
1360 }
1361 /* GL_EXT_texture_filter_anisotropic */
1362 /* GL_SGIS_generate_mipmap */
1363 if (strstr(extensions_string, "GL_SGIS_generate_mipmap") != NULL)
1364 {
1365 extensions |= 1 << sgis_generate_mipmap;
1366 }
1367 /* GL_SGIS_generate_mipmap */
1368 /* GL_ARB_texture_mirrored_repeat */
1369 if (strstr(extensions_string, "GL_ARB_texture_mirrored_repeat") != NULL)
1370 {
1371 extensions |= 1 << arb_texture_mirrored_repeat;
1372 }
1373 /* GL_ARB_texture_mirrored_repeat */
1374 /* GL_ARB_texture_rectangle */
1375 if (strstr(extensions_string, "GL_ARB_texture_rectangle") != NULL)
1376 {
1377 extensions |= 1 << arb_texture_rectangle;
1378 }
1379 /* GL_ARB_texture_rectangle */
1380 /* GL_EXT_fog_coord */
1381 if (strstr(extensions_string, "GL_EXT_fog_coord") != NULL)
1382 {
1383 e = el_init_GL_EXT_fog_coord();
1384 if (e == GL_TRUE)
1385 {
1386 extensions |= 1 << ext_fog_coord;
1387 }
1388 }
1389 /* GL_EXT_fog_coord */
1390 /* GL_ATI_texture_compression_3dc */
1391 if (strstr(extensions_string, "GL_ATI_texture_compression_3dc") != NULL)
1392 {
1393 extensions |= 1 << ati_texture_compression_3dc;
1394 }
1395 /* GL_ATI_texture_compression_3dc */
1396 /* GL_EXT_texture_compression_latc */
1397 if (strstr(extensions_string, "GL_EXT_texture_compression_latc") != NULL)
1398 {
1399 extensions |= 1 << ext_texture_compression_latc;
1400 }
1401 /* GL_EXT_texture_compression_latc */
1402 /* GL_EXT_texture_compression_rgtc */
1403 if (strstr(extensions_string, "GL_EXT_texture_compression_rgtc") != NULL)
1404 {
1405 extensions |= 1 << ext_texture_compression_rgtc;
1406 }
1407 /* GL_EXT_texture_compression_rgtc */
1408 /* GL_ARB_texture_cube_map */
1409 if (strstr(extensions_string, "GL_ARB_texture_cube_map") != NULL)
1410 {
1411 extensions |= 1 << arb_texture_cube_map;
1412 }
1413 /* GL_ARB_texture_cube_map */
1414 /* GL_ARB_texture_float */
1415 if (strstr(extensions_string, "GL_ARB_texture_float") != NULL)
1416 {
1417 extensions |= 1 << arb_texture_float;
1418 }
1419 /* GL_ARB_texture_float */
1420 /* GL_EXT_abgr */
1421 if (strstr(extensions_string, "GL_EXT_abgr") != NULL)
1422 {
1423 extensions |= ((Uint64)1) << ext_abgr;
1424 }
1425 /* GL_EXT_abgr */
1426 /* GL_EXT_gpu_program_parameters */
1427 if (strstr(extensions_string, "GL_EXT_gpu_program_parameters") != NULL)
1428 {
1429 e = el_init_GL_EXT_gpu_program_parameters();
1430 if (e == GL_TRUE)
1431 {
1432 extensions |= ((Uint64)1) << ext_gpu_program_parameters;
1433 }
1434 }
1435 /* GL_EXT_gpu_program_parameters */
1436 }
1437
have_extension(extension_enum extension)1438 Uint32 have_extension(extension_enum extension)
1439 {
1440 return (extensions & (1 << extension)) != 0;
1441 }
1442
get_texture_units()1443 Uint32 get_texture_units()
1444 {
1445 return texture_units;
1446 }
1447
get_gl_version_str()1448 const char* get_gl_version_str()
1449 {
1450 return gl_versions_str[gl_version];
1451 }
1452
supports_gl_version(Uint8 major,Uint8 minor)1453 GLboolean supports_gl_version(Uint8 major, Uint8 minor)
1454 {
1455 if (gl_versions[gl_version] >= ((major << 8) + minor))
1456 {
1457 return GL_TRUE;
1458 }
1459 else
1460 {
1461 return GL_FALSE;
1462 }
1463 }
1464
1465