1
2 // Copyright 2018 - 2021 Michael D. Parker
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.gl40;
8
9 import bindbc.opengl.config;
10 static if(glSupport >= GLSupport.gl40) {
11 import bindbc.loader : SharedLib;
12 import bindbc.opengl.context;
13 import bindbc.opengl.bind.types;
14
15 enum : uint {
16 GL_SAMPLE_SHADING = 0x8C36,
17 GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37,
18 GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E,
19 GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F,
20 GL_TEXTURE_CUBE_MAP_ARRAY = 0x9009,
21 GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A,
22 GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B,
23 GL_SAMPLER_CUBE_MAP_ARRAY = 0x900C,
24 GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D,
25 GL_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E,
26 GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F,
27 }
28
29 extern(System) @nogc nothrow {
30 alias pglBlendEquationi = void function(GLuint,GLenum);
31 alias pglBlendEquationSeparatei = void function(GLuint,GLenum,GLenum);
32 alias pglBlendFunci = void function(GLuint,GLenum,GLenum);
33 alias pglBlendFuncSeparatei = void function(GLuint,GLenum,GLenum,GLenum,GLenum);
34 alias pglMinSampleShading = void function(GLclampf);
35 }
36
37 __gshared {
38 pglBlendEquationi glBlendEquationi;
39 pglBlendEquationSeparatei glBlendEquationSeparatei;
40 pglBlendFunci glBlendFunci;
41 pglBlendFuncSeparatei glBlendFuncSeparatei;
42 pglMinSampleShading glMinSampleShading;
43 }
44
45 package(bindbc.opengl) @nogc nothrow
46 bool loadGL40(SharedLib lib, GLSupport contextVersion)
47 {
48 import bindbc.opengl.bind.arb : loadARB40;
49
50 if(contextVersion >= GLSupport.gl40) {
51 lib.bindGLSymbol(cast(void**)&glMinSampleShading, "glMinSampleShading");
52 lib.bindGLSymbol(cast(void**)&glBlendEquationi, "glBlendEquationi");
53 lib.bindGLSymbol(cast(void**)&glBlendEquationSeparatei, "glBlendEquationSeparatei");
54 lib.bindGLSymbol(cast(void**)&glBlendFunci, "glBlendFunci");
55 lib.bindGLSymbol(cast(void**)&glBlendFuncSeparatei, "glBlendFuncSeparatei");
56
57 if(errorCountGL() == 0 && loadARB40(lib, contextVersion)) return true;
58 }
59 return false;
60 }
61 }