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