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