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.gl14; 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.gl13; 15 16 enum : uint { 17 GL_BLEND_DST_RGB = 0x80C8, 18 GL_BLEND_SRC_RGB = 0x80C9, 19 GL_BLEND_DST_ALPHA = 0x80CA, 20 GL_BLEND_SRC_ALPHA = 0x80CB, 21 GL_POINT_FADE_THRESHOLD_SIZE = 0x8128, 22 GL_DEPTH_COMPONENT16 = 0x81A5, 23 GL_DEPTH_COMPONENT24 = 0x81A6, 24 GL_DEPTH_COMPONENT32 = 0x81A7, 25 GL_MIRRORED_REPEAT = 0x8370, 26 GL_MAX_TEXTURE_LOD_BIAS = 0x84FD, 27 GL_TEXTURE_LOD_BIAS = 0x8501, 28 GL_INCR_WRAP = 0x8507, 29 GL_DECR_WRAP = 0x8508, 30 GL_TEXTURE_DEPTH_SIZE = 0x884A, 31 GL_TEXTURE_COMPARE_MODE = 0x884C, 32 GL_TEXTURE_COMPARE_FUNC = 0x884D, 33 GL_CONSTANT_COLOR = 0x8001, 34 GL_ONE_MINUS_CONSTANT_COLOR = 0x8002, 35 GL_CONSTANT_ALPHA = 0x8003, 36 GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004, 37 GL_FUNC_ADD = 0x8006, 38 GL_MIN = 0x8007, 39 GL_MAX = 0x8008, 40 GL_FUNC_SUBTRACT = 0x800A, 41 GL_FUNC_REVERSE_SUBTRACT = 0x800B, 42 } 43 44 extern(System) @nogc nothrow { 45 alias pglBlendFuncSeparate = void function(GLenum,GLenum,GLenum,GLenum); 46 alias pglMultiDrawArrays = void function(GLenum,const(GLint)*,const(GLsizei)*,GLsizei); 47 alias pglMultiDrawElements = void function(GLenum,const(GLsizei)*,GLenum,const(GLvoid)*,GLsizei); 48 alias pglPointParameterf = void function(GLenum,GLfloat); 49 alias pglPointParameterfv = void function(GLenum,const(GLfloat)*); 50 alias pglPointParameteri = void function(GLenum,GLint); 51 alias pglPointParameteriv = void function(GLenum,const(GLint)*); 52 alias pglBlendColor = void function(GLclampf,GLclampf,GLclampf,GLclampf); 53 alias pglBlendEquation = void function(GLenum); 54 } 55 56 __gshared { 57 pglBlendFuncSeparate glBlendFuncSeparate; 58 pglMultiDrawArrays glMultiDrawArrays; 59 pglMultiDrawElements glMultiDrawElements; 60 pglPointParameterf glPointParameterf; 61 pglPointParameterfv glPointParameterfv; 62 pglPointParameteri glPointParameteri; 63 pglPointParameteriv glPointParameteriv; 64 pglBlendColor glBlendColor; 65 pglBlendEquation glBlendEquation; 66 } 67 68 package(bindbc.opengl) @nogc nothrow 69 GLSupport loadGL14(SharedLib lib, GLSupport contextVersion) 70 { 71 auto loadedVersion = loadGL13(lib, contextVersion); 72 if(loadedVersion == GLSupport.gl13 && contextVersion > GLSupport.gl13) { 73 lib.bindGLSymbol(cast(void**)&glBlendFuncSeparate, "glBlendFuncSeparate"); 74 lib.bindGLSymbol(cast(void**)&glMultiDrawArrays, "glMultiDrawArrays"); 75 lib.bindGLSymbol(cast(void**)&glMultiDrawElements, "glMultiDrawElements"); 76 lib.bindGLSymbol(cast(void**)&glPointParameterf, "glPointParameterf"); 77 lib.bindGLSymbol(cast(void**)&glPointParameterfv, "glPointParameterfv"); 78 lib.bindGLSymbol(cast(void**)&glPointParameteri, "glPointParameteri"); 79 lib.bindGLSymbol(cast(void**)&glPointParameteriv, "glPointParameteriv"); 80 lib.bindGLSymbol(cast(void**)&glBlendColor, "glBlendColor"); 81 lib.bindGLSymbol(cast(void**)&glBlendEquation, "glBlendEquation"); 82 if(errorCountGL() == 0) loadedVersion = GLSupport.gl14; 83 } 84 return loadedVersion; 85 }