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.gl15; 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.gl14; 15 16 enum : uint { 17 GL_BUFFER_SIZE = 0x8764, 18 GL_BUFFER_USAGE = 0x8765, 19 GL_QUERY_COUNTER_BITS = 0x8864, 20 GL_CURRENT_QUERY = 0x8865, 21 GL_QUERY_RESULT = 0x8866, 22 GL_QUERY_RESULT_AVAILABLE = 0x8867, 23 GL_ARRAY_BUFFER = 0x8892, 24 GL_ELEMENT_ARRAY_BUFFER = 0x8893, 25 GL_ARRAY_BUFFER_BINDING = 0x8894, 26 GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895, 27 GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F, 28 GL_READ_ONLY = 0x88B8, 29 GL_WRITE_ONLY = 0x88B9, 30 GL_READ_WRITE = 0x88BA, 31 GL_BUFFER_ACCESS = 0x88BB, 32 GL_BUFFER_MAPPED = 0x88BC, 33 GL_BUFFER_MAP_POINTER = 0x88BD, 34 GL_STREAM_DRAW = 0x88E0, 35 GL_STREAM_READ = 0x88E1, 36 GL_STREAM_COPY = 0x88E2, 37 GL_STATIC_DRAW = 0x88E4, 38 GL_STATIC_READ = 0x88E5, 39 GL_STATIC_COPY = 0x88E6, 40 GL_DYNAMIC_DRAW = 0x88E8, 41 GL_DYNAMIC_READ = 0x88E9, 42 GL_DYNAMIC_COPY = 0x88EA, 43 GL_SAMPLES_PASSED = 0x8914, 44 } 45 46 extern(System) @nogc nothrow { 47 alias pglGenQueries = void function(GLsizei,GLuint*); 48 alias pglDeleteQueries = void function(GLsizei,const(GLuint)*); 49 alias pglIsQuery = GLboolean function(GLuint); 50 alias pglBeginQuery = void function(GLenum,GLuint); 51 alias pglEndQuery = void function(GLenum); 52 alias pglGetQueryiv = void function(GLenum,GLenum,GLint*); 53 alias pglGetQueryObjectiv = void function(GLuint,GLenum,GLint*); 54 alias pglGetQueryObjectuiv = void function(GLuint,GLenum,GLuint*); 55 alias pglBindBuffer = void function(GLenum,GLuint); 56 alias pglDeleteBuffers = void function(GLsizei,const(GLuint)*); 57 alias pglGenBuffers = void function(GLsizei,GLuint*); 58 alias pglIsBuffer = GLboolean function(GLuint); 59 alias pglBufferData = void function(GLenum,GLsizeiptr,const(GLvoid)*,GLenum); 60 alias pglBufferSubData = void function(GLenum,GLintptr,GLsizeiptr,const(GLvoid)*); 61 alias pglGetBufferSubData = void function(GLenum,GLintptr,GLsizeiptr,GLvoid*); 62 alias pglMapBuffer = GLvoid* function(GLenum,GLenum); 63 alias pglUnmapBuffer = GLboolean function(GLenum); 64 alias pglGetBufferParameteriv = void function(GLenum,GLenum,GLint*); 65 alias pglGetBufferPointerv = void function(GLenum,GLenum,GLvoid*); 66 } 67 68 __gshared { 69 pglGenQueries glGenQueries; 70 pglDeleteQueries glDeleteQueries; 71 pglIsQuery glIsQuery; 72 pglBeginQuery glBeginQuery; 73 pglEndQuery glEndQuery; 74 pglGetQueryiv glGetQueryiv; 75 pglGetQueryObjectiv glGetQueryObjectiv; 76 pglGetQueryObjectuiv glGetQueryObjectuiv; 77 pglBindBuffer glBindBuffer; 78 pglDeleteBuffers glDeleteBuffers; 79 pglGenBuffers glGenBuffers; 80 pglIsBuffer glIsBuffer; 81 pglBufferData glBufferData; 82 pglBufferSubData glBufferSubData; 83 pglGetBufferSubData glGetBufferSubData; 84 pglMapBuffer glMapBuffer; 85 pglUnmapBuffer glUnmapBuffer; 86 pglGetBufferParameteriv glGetBufferParameteriv; 87 pglGetBufferPointerv glGetBufferPointerv; 88 } 89 90 package(bindbc.opengl) @nogc nothrow 91 GLSupport loadGL15(SharedLib lib, GLSupport contextVersion) 92 { 93 auto loadedVersion = loadGL14(lib, contextVersion); 94 if(loadedVersion == GLSupport.gl14 && contextVersion > GLSupport.gl14) { 95 lib.bindGLSymbol(cast(void**)&glGenQueries, "glGenQueries"); 96 lib.bindGLSymbol(cast(void**)&glDeleteQueries, "glDeleteQueries"); 97 lib.bindGLSymbol(cast(void**)&glIsQuery, "glIsQuery"); 98 lib.bindGLSymbol(cast(void**)&glBeginQuery, "glBeginQuery"); 99 lib.bindGLSymbol(cast(void**)&glEndQuery, "glEndQuery"); 100 lib.bindGLSymbol(cast(void**)&glGetQueryiv, "glGetQueryiv"); 101 lib.bindGLSymbol(cast(void**)&glGetQueryObjectiv, "glGetQueryObjectiv"); 102 lib.bindGLSymbol(cast(void**)&glGetQueryObjectuiv, "glGetQueryObjectuiv"); 103 lib.bindGLSymbol(cast(void**)&glBindBuffer, "glBindBuffer"); 104 lib.bindGLSymbol(cast(void**)&glDeleteBuffers, "glDeleteBuffers"); 105 lib.bindGLSymbol(cast(void**)&glGenBuffers, "glGenBuffers"); 106 lib.bindGLSymbol(cast(void**)&glIsBuffer, "glIsBuffer"); 107 lib.bindGLSymbol(cast(void**)&glBufferData, "glBufferData"); 108 lib.bindGLSymbol(cast(void**)&glBufferSubData, "glBufferSubData"); 109 lib.bindGLSymbol(cast(void**)&glGetBufferSubData, "glGetBufferSubData"); 110 lib.bindGLSymbol(cast(void**)&glMapBuffer, "glMapBuffer"); 111 lib.bindGLSymbol(cast(void**)&glUnmapBuffer, "glUnmapBuffer"); 112 lib.bindGLSymbol(cast(void**)&glGetBufferParameteriv, "glGetBufferParameteriv"); 113 lib.bindGLSymbol(cast(void**)&glGetBufferPointerv, "glGetBufferPointerv"); 114 if(errorCountGL() == 0) loadedVersion = GLSupport.gl15; 115 } 116 return loadedVersion; 117 }