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 };