1 
2 //          Copyright 2018 - 2021 Michael D. Parker
3 // Distributed under the Boost Software License, Version 1.0.
4 //    (See accompanying file LICENSE_1_0.txt or copy at
5 //          http://www.boost.org/LICENSE_1_0.txt)
6 
7 module bindbc.opengl.bind.gl11;
8 
9 import bindbc.loader;
10 import bindbc.opengl.bind.types;
11 
12 version(GL_AllowDeprecated)
13     public import bindbc.opengl.bind.dep.dep11;
14 
15 enum : ubyte {
16     GL_FALSE                          = 0,
17     GL_TRUE                           = 1,
18 }
19 
20 enum : uint {
21     GL_DEPTH_BUFFER_BIT               = 0x00000100,
22     GL_STENCIL_BUFFER_BIT             = 0x00000400,
23     GL_COLOR_BUFFER_BIT               = 0x00004000,
24     GL_POINTS                         = 0x0000,
25     GL_LINES                          = 0x0001,
26     GL_LINE_LOOP                      = 0x0002,
27     GL_LINE_STRIP                     = 0x0003,
28     GL_TRIANGLES                      = 0x0004,
29     GL_TRIANGLE_STRIP                 = 0x0005,
30     GL_TRIANGLE_FAN                   = 0x0006,
31     GL_NEVER                          = 0x0200,
32     GL_LESS                           = 0x0201,
33     GL_EQUAL                          = 0x0202,
34     GL_LEQUAL                         = 0x0203,
35     GL_GREATER                        = 0x0204,
36     GL_NOTEQUAL                       = 0x0205,
37     GL_GEQUAL                         = 0x0206,
38     GL_ALWAYS                         = 0x0207,
39     GL_ZERO                           = 0,
40     GL_ONE                            = 1,
41     GL_SRC_COLOR                      = 0x0300,
42     GL_ONE_MINUS_SRC_COLOR            = 0x0301,
43     GL_SRC_ALPHA                      = 0x0302,
44     GL_ONE_MINUS_SRC_ALPHA            = 0x0303,
45     GL_DST_ALPHA                      = 0x0304,
46     GL_ONE_MINUS_DST_ALPHA            = 0x0305,
47     GL_DST_COLOR                      = 0x0306,
48     GL_ONE_MINUS_DST_COLOR            = 0x0307,
49     GL_SRC_ALPHA_SATURATE             = 0x0308,
50     GL_NONE                           = 0,
51     GL_FRONT_LEFT                     = 0x0400,
52     GL_FRONT_RIGHT                    = 0x0401,
53     GL_BACK_LEFT                      = 0x0402,
54     GL_BACK_RIGHT                     = 0x0403,
55     GL_FRONT                          = 0x0404,
56     GL_BACK                           = 0x0405,
57     GL_LEFT                           = 0x0406,
58     GL_RIGHT                          = 0x0407,
59     GL_FRONT_AND_BACK                 = 0x0408,
60     GL_NO_ERROR                       = 0,
61     GL_INVALID_ENUM                   = 0x0500,
62     GL_INVALID_VALUE                  = 0x0501,
63     GL_INVALID_OPERATION              = 0x0502,
64     GL_STACK_OVERFLOW                 = 0x0503,
65     GL_STACK_UNDERFLOW                = 0x0504,
66     GL_OUT_OF_MEMORY                  = 0x0505,
67     GL_CW                             = 0x0900,
68     GL_CCW                            = 0x0901,
69     GL_POINT_SIZE                     = 0x0B11,
70     GL_POINT_SIZE_RANGE               = 0x0B12,
71     GL_POINT_SIZE_GRANULARITY         = 0x0B13,
72     GL_LINE_SMOOTH                    = 0x0B20,
73     GL_LINE_WIDTH                     = 0x0B21,
74     GL_LINE_WIDTH_RANGE               = 0x0B22,
75     GL_LINE_WIDTH_GRANULARITY         = 0x0B23,
76     GL_POLYGON_MODE                   = 0x0B40,
77     GL_POLYGON_SMOOTH                 = 0x0B41,
78     GL_CULL_FACE                      = 0x0B44,
79     GL_CULL_FACE_MODE                 = 0x0B45,
80     GL_FRONT_FACE                     = 0x0B46,
81     GL_DEPTH_RANGE                    = 0x0B70,
82     GL_DEPTH_TEST                     = 0x0B71,
83     GL_DEPTH_WRITEMASK                = 0x0B72,
84     GL_DEPTH_CLEAR_VALUE              = 0x0B73,
85     GL_DEPTH_FUNC                     = 0x0B74,
86     GL_STENCIL_TEST                   = 0x0B90,
87     GL_STENCIL_CLEAR_VALUE            = 0x0B91,
88     GL_STENCIL_FUNC                   = 0x0B92,
89     GL_STENCIL_VALUE_MASK             = 0x0B93,
90     GL_STENCIL_FAIL                   = 0x0B94,
91     GL_STENCIL_PASS_DEPTH_FAIL        = 0x0B95,
92     GL_STENCIL_PASS_DEPTH_PASS        = 0x0B96,
93     GL_STENCIL_REF                    = 0x0B97,
94     GL_STENCIL_WRITEMASK              = 0x0B98,
95     GL_VIEWPORT                       = 0x0BA2,
96     GL_DITHER                         = 0x0BD0,
97     GL_BLEND_DST                      = 0x0BE0,
98     GL_BLEND_SRC                      = 0x0BE1,
99     GL_BLEND                          = 0x0BE2,
100     GL_LOGIC_OP_MODE                  = 0x0BF0,
101     GL_COLOR_LOGIC_OP                 = 0x0BF2,
102     GL_DRAW_BUFFER                    = 0x0C01,
103     GL_READ_BUFFER                    = 0x0C02,
104     GL_SCISSOR_BOX                    = 0x0C10,
105     GL_SCISSOR_TEST                   = 0x0C11,
106     GL_COLOR_CLEAR_VALUE              = 0x0C22,
107     GL_COLOR_WRITEMASK                = 0x0C23,
108     GL_DOUBLEBUFFER                   = 0x0C32,
109     GL_STEREO                         = 0x0C33,
110     GL_LINE_SMOOTH_HINT               = 0x0C52,
111     GL_POLYGON_SMOOTH_HINT            = 0x0C53,
112     GL_UNPACK_SWAP_BYTES              = 0x0CF0,
113     GL_UNPACK_LSB_FIRST               = 0x0CF1,
114     GL_UNPACK_ROW_LENGTH              = 0x0CF2,
115     GL_UNPACK_SKIP_ROWS               = 0x0CF3,
116     GL_UNPACK_SKIP_PIXELS             = 0x0CF4,
117     GL_UNPACK_ALIGNMENT               = 0x0CF5,
118     GL_PACK_SWAP_BYTES                = 0x0D00,
119     GL_PACK_LSB_FIRST                 = 0x0D01,
120     GL_PACK_ROW_LENGTH                = 0x0D02,
121     GL_PACK_SKIP_ROWS                 = 0x0D03,
122     GL_PACK_SKIP_PIXELS               = 0x0D04,
123     GL_PACK_ALIGNMENT                 = 0x0D05,
124     GL_MAX_TEXTURE_SIZE               = 0x0D33,
125     GL_MAX_VIEWPORT_DIMS              = 0x0D3A,
126     GL_SUBPIXEL_BITS                  = 0x0D50,
127     GL_TEXTURE_1D                     = 0x0DE0,
128     GL_TEXTURE_2D                     = 0x0DE1,
129     GL_POLYGON_OFFSET_UNITS           = 0x2A00,
130     GL_POLYGON_OFFSET_POINT           = 0x2A01,
131     GL_POLYGON_OFFSET_LINE            = 0x2A02,
132     GL_POLYGON_OFFSET_FILL            = 0x8037,
133     GL_POLYGON_OFFSET_FACTOR          = 0x8038,
134     GL_TEXTURE_BINDING_1D             = 0x8068,
135     GL_TEXTURE_BINDING_2D             = 0x8069,
136     GL_TEXTURE_WIDTH                  = 0x1000,
137     GL_TEXTURE_HEIGHT                 = 0x1001,
138     GL_TEXTURE_INTERNAL_FORMAT        = 0x1003,
139     GL_TEXTURE_BORDER_COLOR           = 0x1004,
140     GL_TEXTURE_RED_SIZE               = 0x805C,
141     GL_TEXTURE_GREEN_SIZE             = 0x805D,
142     GL_TEXTURE_BLUE_SIZE              = 0x805E,
143     GL_TEXTURE_ALPHA_SIZE             = 0x805F,
144     GL_DONT_CARE                      = 0x1100,
145     GL_FASTEST                        = 0x1101,
146     GL_NICEST                         = 0x1102,
147     GL_BYTE                           = 0x1400,
148     GL_UNSIGNED_BYTE                  = 0x1401,
149     GL_SHORT                          = 0x1402,
150     GL_UNSIGNED_SHORT                 = 0x1403,
151     GL_INT                            = 0x1404,
152     GL_UNSIGNED_INT                   = 0x1405,
153     GL_FLOAT                          = 0x1406,
154     GL_DOUBLE                         = 0x140A,
155     GL_CLEAR                          = 0x1500,
156     GL_AND                            = 0x1501,
157     GL_AND_REVERSE                    = 0x1502,
158     GL_COPY                           = 0x1503,
159     GL_AND_INVERTED                   = 0x1504,
160     GL_NOOP                           = 0x1505,
161     GL_XOR                            = 0x1506,
162     GL_OR                             = 0x1507,
163     GL_NOR                            = 0x1508,
164     GL_EQUIV                          = 0x1509,
165     GL_INVERT                         = 0x150A,
166     GL_OR_REVERSE                     = 0x150B,
167     GL_COPY_INVERTED                  = 0x150C,
168     GL_OR_INVERTED                    = 0x150D,
169     GL_NAND                           = 0x150E,
170     GL_SET                            = 0x150F,
171     GL_TEXTURE                        = 0x1702,
172     GL_COLOR                          = 0x1800,
173     GL_DEPTH                          = 0x1801,
174     GL_STENCIL                        = 0x1802,
175     GL_STENCIL_INDEX                  = 0x1901,
176     GL_DEPTH_COMPONENT                = 0x1902,
177     GL_RED                            = 0x1903,
178     GL_GREEN                          = 0x1904,
179     GL_BLUE                           = 0x1905,
180     GL_ALPHA                          = 0x1906,
181     GL_RGB                            = 0x1907,
182     GL_RGBA                           = 0x1908,
183     GL_POINT                          = 0x1B00,
184     GL_LINE                           = 0x1B01,
185     GL_FILL                           = 0x1B02,
186     GL_KEEP                           = 0x1E00,
187     GL_REPLACE                        = 0x1E01,
188     GL_INCR                           = 0x1E02,
189     GL_DECR                           = 0x1E03,
190     GL_VENDOR                         = 0x1F00,
191     GL_RENDERER                       = 0x1F01,
192     GL_VERSION                        = 0x1F02,
193     GL_EXTENSIONS                     = 0x1F03,
194     GL_NEAREST                        = 0x2600,
195     GL_LINEAR                         = 0x2601,
196     GL_NEAREST_MIPMAP_NEAREST         = 0x2700,
197     GL_LINEAR_MIPMAP_NEAREST          = 0x2701,
198     GL_NEAREST_MIPMAP_LINEAR          = 0x2702,
199     GL_LINEAR_MIPMAP_LINEAR           = 0x2703,
200     GL_TEXTURE_MAG_FILTER             = 0x2800,
201     GL_TEXTURE_MIN_FILTER             = 0x2801,
202     GL_TEXTURE_WRAP_S                 = 0x2802,
203     GL_TEXTURE_WRAP_T                 = 0x2803,
204     GL_PROXY_TEXTURE_1D               = 0x8063,
205     GL_PROXY_TEXTURE_2D               = 0x8064,
206     GL_REPEAT                         = 0x2901,
207     GL_R3_G3_B2                       = 0x2A10,
208     GL_RGB4                           = 0x804F,
209     GL_RGB5                           = 0x8050,
210     GL_RGB8                           = 0x8051,
211     GL_RGB10                          = 0x8052,
212     GL_RGB12                          = 0x8053,
213     GL_RGB16                          = 0x8054,
214     GL_RGBA2                          = 0x8055,
215     GL_RGBA4                          = 0x8056,
216     GL_RGB5_A1                        = 0x8057,
217     GL_RGBA8                          = 0x8058,
218     GL_RGB10_A2                       = 0x8059,
219     GL_RGBA12                         = 0x805A,
220     GL_RGBA16                         = 0x805B,
221     GL_VERTEX_ARRAY                   = 0x8074,
222 }
223 
224 extern(System) @nogc nothrow {
225     // OpenGL 1.0
226     alias pglCullFace = void function(GLenum);
227     alias pglFrontFace = void function(GLenum);
228     alias pglHint = void function(GLenum,GLenum);
229     alias pglLineWidth = void function(GLfloat);
230     alias pglPointSize = void function(GLfloat);
231     alias pglPolygonMode = void function(GLenum,GLenum);
232     alias pglScissor = void function(GLint,GLint,GLsizei,GLsizei);
233     alias pglTexParameterf = void function(GLenum,GLenum,GLfloat);
234     alias pglTexParameterfv = void function(GLenum,GLenum,const(GLfloat)*);
235     alias pglTexParameteri = void function(GLenum,GLenum,GLint);
236     alias pglTexParameteriv = void function(GLenum,GLenum,const(GLint)*);
237     alias pglTexImage1D = void function(GLenum,GLint,GLint,GLsizei,GLint,GLenum,GLenum,const(GLvoid)*);
238     alias pglTexImage2D = void function(GLenum,GLint,GLint,GLsizei,GLsizei,GLint,GLenum,GLenum,const(GLvoid)*);
239     alias pglDrawBuffer = void function(GLenum);
240     alias pglClear = void function(GLbitfield);
241     alias pglClearColor = void function(GLclampf,GLclampf,GLclampf,GLclampf);
242     alias pglClearStencil = void function(GLint);
243     alias pglClearDepth = void function(GLclampd);
244     alias pglStencilMask = void function(GLuint);
245     alias pglColorMask = void function(GLboolean,GLboolean,GLboolean,GLboolean);
246     alias pglDepthMask = void function(GLboolean);
247     alias pglDisable = void function(GLenum);
248     alias pglEnable = void function(GLenum);
249     alias pglFinish = void function();
250     alias pglFlush = void function();
251     alias pglBlendFunc = void function(GLenum,GLenum);
252     alias pglLogicOp = void function(GLenum);
253     alias pglStencilFunc = void function(GLenum,GLint,GLuint);
254     alias pglStencilOp = void function(GLenum,GLenum,GLenum);
255     alias pglDepthFunc = void function(GLenum);
256     alias pglPixelStoref = void function(GLenum,GLfloat);
257     alias pglPixelStorei = void function(GLenum,GLint);
258     alias pglReadBuffer = void function(GLenum);
259     alias pglReadPixels = void function(GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,GLvoid*);
260     alias pglGetBooleanv = void function(GLenum,GLboolean*);
261     alias pglGetDoublev = void function(GLenum,GLdouble*);
262     alias pglGetError = GLenum function();
263     alias pglGetFloatv = void function(GLenum,GLfloat*);
264     alias pglGetIntegerv = void function(GLenum,GLint*);
265     alias pglGetString = const(char*) function(GLenum);
266     alias pglGetTexImage = void function(GLenum,GLint,GLenum,GLenum,GLvoid*);
267     alias pglGetTexParameterfv = void function(GLenum,GLenum,GLfloat*);
268     alias pglGetTexParameteriv = void function(GLenum,GLenum,GLint*);
269     alias pglGetTexLevelParameterfv = void function(GLenum,GLint,GLenum,GLfloat*);
270     alias pglGetTexLevelParameteriv = void function(GLenum,GLint,GLenum,GLint*);
271     alias pglIsEnabled = GLboolean function(GLenum);
272     alias pglDepthRange = void function(GLclampd,GLclampd);
273     alias pglViewport = void function(GLint,GLint,GLsizei,GLsizei);
274 
275     // OpenGL 1.1
276     alias pglDrawArrays = void function(GLenum,GLint,GLsizei);
277     alias pglDrawElements = void function(GLenum,GLsizei,GLenum,const(GLvoid)*);
278     alias pglGetPointerv = void function(GLenum,GLvoid*);
279     alias pglPolygonOffset = void function(GLfloat,GLfloat);
280     alias pglCopyTexImage1D = void function(GLenum,GLint,GLenum,GLint,GLint,GLsizei,GLint);
281     alias pglCopyTexImage2D = void function(GLenum,GLint,GLenum,GLint,GLint,GLsizei,GLsizei,GLint);
282     alias pglCopyTexSubImage1D = void function(GLenum,GLint,GLint,GLint,GLint,GLsizei);
283     alias pglCopyTexSubImage2D = void function(GLenum,GLint,GLint,GLint,GLint,GLint,GLsizei,GLsizei);
284     alias pglTexSubImage1D = void function(GLenum,GLint,GLint,GLsizei,GLenum,GLenum,const(GLvoid)*);
285     alias pglTexSubImage2D = void function(GLenum,GLint,GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,const(GLvoid)*);
286     alias pglBindTexture = void function(GLenum,GLuint);
287     alias pglDeleteTextures = void function(GLsizei,const(GLuint)*);
288     alias pglGenTextures = void function(GLsizei,GLuint*);
289     alias pglIsTexture = GLboolean function(GLuint);
290 }
291 
292 __gshared {
293     pglCullFace glCullFace;
294     pglFrontFace glFrontFace;
295     pglHint glHint;
296     pglLineWidth glLineWidth;
297     pglPointSize glPointSize;
298     pglPolygonMode glPolygonMode;
299     pglScissor glScissor;
300     pglTexParameterf glTexParameterf;
301     pglTexParameterfv glTexParameterfv;
302     pglTexParameteri glTexParameteri;
303     pglTexParameteriv glTexParameteriv;
304     pglTexImage1D glTexImage1D;
305     pglTexImage2D glTexImage2D;
306     pglDrawBuffer glDrawBuffer;
307     pglClear glClear;
308     pglClearColor glClearColor;
309     pglClearStencil glClearStencil;
310     pglClearDepth glClearDepth;
311     pglStencilMask glStencilMask;
312     pglColorMask glColorMask;
313     pglDepthMask glDepthMask;
314     pglDisable glDisable;
315     pglEnable glEnable;
316     pglFinish glFinish;
317     pglFlush glFlush;
318     pglBlendFunc glBlendFunc;
319     pglLogicOp glLogicOp;
320     pglStencilFunc glStencilFunc;
321     pglStencilOp glStencilOp;
322     pglDepthFunc glDepthFunc;
323     pglPixelStoref glPixelStoref;
324     pglPixelStorei glPixelStorei;
325     pglReadBuffer glReadBuffer;
326     pglReadPixels glReadPixels;
327     pglGetBooleanv glGetBooleanv;
328     pglGetDoublev glGetDoublev;
329     pglGetError glGetError;
330     pglGetFloatv glGetFloatv;
331     pglGetIntegerv glGetIntegerv;
332     pglGetString glGetString;
333     pglGetTexImage glGetTexImage;
334     pglGetTexParameterfv glGetTexParameterfv;
335     pglGetTexParameteriv glGetTexParameteriv;
336     pglGetTexLevelParameterfv glGetTexLevelParameterfv;
337     pglGetTexLevelParameteriv glGetTexLevelParameteriv;
338     pglIsEnabled glIsEnabled;
339     pglDepthRange glDepthRange;
340     pglViewport glViewport;
341     pglDrawArrays glDrawArrays;
342     pglDrawElements glDrawElements;
343     pglGetPointerv glGetPointerv;
344     pglPolygonOffset glPolygonOffset;
345     pglCopyTexImage1D glCopyTexImage1D;
346     pglCopyTexImage2D glCopyTexImage2D;
347     pglCopyTexSubImage1D glCopyTexSubImage1D;
348     pglCopyTexSubImage2D glCopyTexSubImage2D;
349     pglTexSubImage1D glTexSubImage1D;
350     pglTexSubImage2D glTexSubImage2D;
351     pglBindTexture glBindTexture;
352     pglDeleteTextures glDeleteTextures;
353     pglGenTextures glGenTextures;
354     pglIsTexture glIsTexture;
355 }
356 
357 package(bindbc.opengl) @nogc nothrow
358 bool loadGL11(SharedLib lib)
359 {
360     auto startErrorCount = errorCount();
361 
362     // OpenGL 1.0
363     lib.bindSymbol(cast(void**)&glCullFace, "glCullFace");
364     lib.bindSymbol(cast(void**)&glFrontFace, "glFrontFace");
365     lib.bindSymbol(cast(void**)&glHint, "glHint");
366     lib.bindSymbol(cast(void**)&glLineWidth, "glLineWidth");
367     lib.bindSymbol(cast(void**)&glPointSize, "glPointSize");
368     lib.bindSymbol(cast(void**)&glPolygonMode, "glPolygonMode");
369     lib.bindSymbol(cast(void**)&glScissor, "glScissor");
370     lib.bindSymbol(cast(void**)&glTexParameterf, "glTexParameterf");
371     lib.bindSymbol(cast(void**)&glTexParameterfv, "glTexParameterfv");
372     lib.bindSymbol(cast(void**)&glTexParameteri, "glTexParameteri");
373     lib.bindSymbol(cast(void**)&glTexParameteriv, "glTexParameteriv");
374     lib.bindSymbol(cast(void**)&glTexImage1D, "glTexImage1D");
375     lib.bindSymbol(cast(void**)&glTexImage2D, "glTexImage2D");
376     lib.bindSymbol(cast(void**)&glDrawBuffer, "glDrawBuffer");
377     lib.bindSymbol(cast(void**)&glClear, "glClear");
378     lib.bindSymbol(cast(void**)&glClearColor, "glClearColor");
379     lib.bindSymbol(cast(void**)&glClearStencil, "glClearStencil");
380     lib.bindSymbol(cast(void**)&glClearDepth, "glClearDepth");
381     lib.bindSymbol(cast(void**)&glStencilMask, "glStencilMask");
382     lib.bindSymbol(cast(void**)&glColorMask, "glColorMask");
383     lib.bindSymbol(cast(void**)&glDepthMask, "glDepthMask");
384     lib.bindSymbol(cast(void**)&glDisable, "glDisable");
385     lib.bindSymbol(cast(void**)&glEnable, "glEnable");
386     lib.bindSymbol(cast(void**)&glFinish, "glFinish");
387     lib.bindSymbol(cast(void**)&glFlush, "glFlush");
388     lib.bindSymbol(cast(void**)&glBlendFunc, "glBlendFunc");
389     lib.bindSymbol(cast(void**)&glLogicOp, "glLogicOp");
390     lib.bindSymbol(cast(void**)&glStencilFunc, "glStencilFunc");
391     lib.bindSymbol(cast(void**)&glStencilOp, "glStencilOp");
392     lib.bindSymbol(cast(void**)&glDepthFunc, "glDepthFunc");
393     lib.bindSymbol(cast(void**)&glPixelStoref, "glPixelStoref");
394     lib.bindSymbol(cast(void**)&glPixelStorei, "glPixelStorei");
395     lib.bindSymbol(cast(void**)&glReadBuffer, "glReadBuffer");
396     lib.bindSymbol(cast(void**)&glReadPixels, "glReadPixels");
397     lib.bindSymbol(cast(void**)&glGetBooleanv, "glGetBooleanv");
398     lib.bindSymbol(cast(void**)&glGetDoublev, "glGetDoublev");
399     lib.bindSymbol(cast(void**)&glGetError, "glGetError");
400     lib.bindSymbol(cast(void**)&glGetFloatv, "glGetFloatv");
401     lib.bindSymbol(cast(void**)&glGetIntegerv, "glGetIntegerv");
402     lib.bindSymbol(cast(void**)&glGetString, "glGetString");
403     lib.bindSymbol(cast(void**)&glGetTexImage, "glGetTexImage");
404     lib.bindSymbol(cast(void**)&glGetTexParameterfv, "glGetTexParameterfv");
405     lib.bindSymbol(cast(void**)&glGetTexParameteriv, "glGetTexParameteriv");
406     lib.bindSymbol(cast(void**)&glGetTexLevelParameterfv, "glGetTexLevelParameterfv");
407     lib.bindSymbol(cast(void**)&glGetTexLevelParameteriv, "glGetTexLevelParameteriv");
408     lib.bindSymbol(cast(void**)&glIsEnabled, "glIsEnabled");
409     lib.bindSymbol(cast(void**)&glDepthRange, "glDepthRange");
410     lib.bindSymbol(cast(void**)&glViewport, "glViewport");
411 
412     // OpenGL 1.1
413     lib.bindSymbol(cast(void**)&glDrawArrays, "glDrawArrays");
414     lib.bindSymbol(cast(void**)&glDrawElements, "glDrawElements");
415     lib.bindSymbol(cast(void**)&glPolygonOffset, "glPolygonOffset");
416     lib.bindSymbol(cast(void**)&glCopyTexImage1D, "glCopyTexImage1D");
417     lib.bindSymbol(cast(void**)&glCopyTexImage2D, "glCopyTexImage2D");
418     lib.bindSymbol(cast(void**)&glCopyTexSubImage1D, "glCopyTexSubImage1D");
419     lib.bindSymbol(cast(void**)&glCopyTexSubImage2D, "glCopyTexSubImage2D");
420     lib.bindSymbol(cast(void**)&glTexSubImage1D, "glTexSubImage1D");
421     lib.bindSymbol(cast(void**)&glTexSubImage2D, "glTexSubImage2D");
422     lib.bindSymbol(cast(void**)&glBindTexture, "glBindTexture");
423     lib.bindSymbol(cast(void**)&glDeleteTextures, "glDeleteTextures");
424     lib.bindSymbol(cast(void**)&glGenTextures, "glGenTextures");
425     lib.bindSymbol(cast(void**)&glIsTexture, "glIsTexture");
426 
427     immutable ret = errorCount() == startErrorCount;
428     version(GL_AllowDeprecated) return ret && loadDeprecatedGL11(lib);
429     else return ret;
430 }