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