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.gl21; 8 9 import bindbc.loader : SharedLib; 10 import bindbc.opengl.config, 11 bindbc.opengl.context; 12 import bindbc.opengl.bind.types; 13 14 public import bindbc.opengl.bind.gl20; 15 16 enum : uint { 17 GL_PIXEL_PACK_BUFFER = 0x88EB, 18 GL_PIXEL_UNPACK_BUFFER = 0x88EC, 19 GL_PIXEL_PACK_BUFFER_BINDING = 0x88ED, 20 GL_PIXEL_UNPACK_BUFFER_BINDING = 0x88EF, 21 GL_FLOAT_MAT2x3 = 0x8B65, 22 GL_FLOAT_MAT2x4 = 0x8B66, 23 GL_FLOAT_MAT3x2 = 0x8B67, 24 GL_FLOAT_MAT3x4 = 0x8B68, 25 GL_FLOAT_MAT4x2 = 0x8B69, 26 GL_FLOAT_MAT4x3 = 0x8B6A, 27 GL_SRGB = 0x8C40, 28 GL_SRGB8 = 0x8C41, 29 GL_SRGB_ALPHA = 0x8C42, 30 GL_SRGB8_ALPHA8 = 0x8C43, 31 GL_COMPRESSED_SRGB = 0x8C48, 32 GL_COMPRESSED_SRGB_ALPHA = 0x8C49, 33 } 34 35 extern(System) @nogc nothrow { 36 alias pglUniformMatrix2x3fv = void function(GLint,GLsizei,GLboolean,const(GLfloat)*); 37 alias pglUniformMatrix3x2fv = void function(GLint,GLsizei,GLboolean,const(GLfloat)*); 38 alias pglUniformMatrix2x4fv = void function(GLint,GLsizei,GLboolean,const(GLfloat)*); 39 alias pglUniformMatrix4x2fv = void function(GLint,GLsizei,GLboolean,const(GLfloat)*); 40 alias pglUniformMatrix3x4fv = void function(GLint,GLsizei,GLboolean,const(GLfloat)*); 41 alias pglUniformMatrix4x3fv = void function(GLint,GLsizei,GLboolean,const(GLfloat)*); 42 } 43 44 __gshared { 45 pglUniformMatrix2x3fv glUniformMatrix2x3fv; 46 pglUniformMatrix3x2fv glUniformMatrix3x2fv; 47 pglUniformMatrix2x4fv glUniformMatrix2x4fv; 48 pglUniformMatrix4x2fv glUniformMatrix4x2fv; 49 pglUniformMatrix3x4fv glUniformMatrix3x4fv; 50 pglUniformMatrix4x3fv glUniformMatrix4x3fv; 51 } 52 53 package(bindbc.opengl) @nogc nothrow 54 GLSupport loadGL21(SharedLib lib, GLSupport contextVersion) 55 { 56 auto loadedVersion = loadGL20(lib, contextVersion); 57 if(loadedVersion == GLSupport.gl20 && contextVersion > GLSupport.gl20) { 58 lib.bindGLSymbol(cast(void**)&glUniformMatrix2x3fv, "glUniformMatrix2x3fv"); 59 lib.bindGLSymbol(cast(void**)&glUniformMatrix3x2fv, "glUniformMatrix3x2fv"); 60 lib.bindGLSymbol(cast(void**)&glUniformMatrix2x4fv, "glUniformMatrix2x4fv"); 61 lib.bindGLSymbol(cast(void**)&glUniformMatrix4x2fv, "glUniformMatrix4x2fv"); 62 lib.bindGLSymbol(cast(void**)&glUniformMatrix3x4fv, "glUniformMatrix3x4fv"); 63 lib.bindGLSymbol(cast(void**)&glUniformMatrix4x3fv, "glUniformMatrix4x3fv"); 64 if(errorCountGL() == 0) loadedVersion = GLSupport.gl21; 65 } 66 return loadedVersion; 67 }