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.gl13;
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.gl12;
15 
16 enum : uint {
17     GL_TEXTURE0                       = 0x84C0,
18     GL_TEXTURE1                       = 0x84C1,
19     GL_TEXTURE2                       = 0x84C2,
20     GL_TEXTURE3                       = 0x84C3,
21     GL_TEXTURE4                       = 0x84C4,
22     GL_TEXTURE5                       = 0x84C5,
23     GL_TEXTURE6                       = 0x84C6,
24     GL_TEXTURE7                       = 0x84C7,
25     GL_TEXTURE8                       = 0x84C8,
26     GL_TEXTURE9                       = 0x84C9,
27     GL_TEXTURE10                      = 0x84CA,
28     GL_TEXTURE11                      = 0x84CB,
29     GL_TEXTURE12                      = 0x84CC,
30     GL_TEXTURE13                      = 0x84CD,
31     GL_TEXTURE14                      = 0x84CE,
32     GL_TEXTURE15                      = 0x84CF,
33     GL_TEXTURE16                      = 0x84D0,
34     GL_TEXTURE17                      = 0x84D1,
35     GL_TEXTURE18                      = 0x84D2,
36     GL_TEXTURE19                      = 0x84D3,
37     GL_TEXTURE20                      = 0x84D4,
38     GL_TEXTURE21                      = 0x84D5,
39     GL_TEXTURE22                      = 0x84D6,
40     GL_TEXTURE23                      = 0x84D7,
41     GL_TEXTURE24                      = 0x84D8,
42     GL_TEXTURE25                      = 0x84D9,
43     GL_TEXTURE26                      = 0x84DA,
44     GL_TEXTURE27                      = 0x84DB,
45     GL_TEXTURE28                      = 0x84DC,
46     GL_TEXTURE29                      = 0x84DD,
47     GL_TEXTURE30                      = 0x84DE,
48     GL_TEXTURE31                      = 0x84DF,
49     GL_ACTIVE_TEXTURE                 = 0x84E0,
50     GL_MULTISAMPLE                    = 0x809D,
51     GL_SAMPLE_ALPHA_TO_COVERAGE       = 0x809E,
52     GL_SAMPLE_ALPHA_TO_ONE            = 0x809F,
53     GL_SAMPLE_COVERAGE                = 0x80A0,
54     GL_SAMPLE_BUFFERS                 = 0x80A8,
55     GL_SAMPLES                        = 0x80A9,
56     GL_SAMPLE_COVERAGE_VALUE          = 0x80AA,
57     GL_SAMPLE_COVERAGE_INVERT         = 0x80AB,
58     GL_TEXTURE_CUBE_MAP               = 0x8513,
59     GL_TEXTURE_BINDING_CUBE_MAP       = 0x8514,
60     GL_TEXTURE_CUBE_MAP_POSITIVE_X    = 0x8515,
61     GL_TEXTURE_CUBE_MAP_NEGATIVE_X    = 0x8516,
62     GL_TEXTURE_CUBE_MAP_POSITIVE_Y    = 0x8517,
63     GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    = 0x8518,
64     GL_TEXTURE_CUBE_MAP_POSITIVE_Z    = 0x8519,
65     GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    = 0x851A,
66     GL_PROXY_TEXTURE_CUBE_MAP         = 0x851B,
67     GL_MAX_CUBE_MAP_TEXTURE_SIZE      = 0x851C,
68     GL_COMPRESSED_RGB                 = 0x84ED,
69     GL_COMPRESSED_RGBA                = 0x84EE,
70     GL_TEXTURE_COMPRESSION_HINT       = 0x84EF,
71     GL_TEXTURE_COMPRESSED_IMAGE_SIZE  = 0x86A0,
72     GL_TEXTURE_COMPRESSED             = 0x86A1,
73     GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2,
74     GL_COMPRESSED_TEXTURE_FORMATS     = 0x86A3,
75     GL_CLAMP_TO_BORDER                = 0x812D,
76 }
77 
78 extern(System) @nogc nothrow {
79     alias pglActiveTexture = void function(GLenum);
80     alias pglSampleCoverage = void function(GLclampf,GLboolean);
81     alias pglCompressedTexImage3D = void function(GLenum,GLint,GLenum,GLsizei,GLsizei,GLsizei,GLint,GLsizei,const(GLvoid)*);
82     alias pglCompressedTexImage2D = void function(GLenum,GLint,GLenum,GLsizei,GLsizei,GLint,GLsizei,const(GLvoid)*);
83     alias pglCompressedTexImage1D = void function(GLenum,GLint,GLenum,GLsizei,GLint,GLsizei,const(GLvoid)*);
84     alias pglCompressedTexSubImage3D = void function(GLenum,GLint,GLint,GLint,GLint,GLsizei,GLsizei,GLsizei,GLenum,GLsizei,const(GLvoid)*);
85     alias pglCompressedTexSubImage2D = void function(GLenum,GLint,GLint,GLint,GLsizei,GLsizei,GLenum,GLsizei,const(GLvoid)*);
86     alias pglCompressedTexSubImage1D = void function(GLenum,GLint,GLint,GLsizei,GLenum,GLsizei,const(GLvoid)*);
87     alias pglGetCompressedTexImage = void function(GLenum,GLint,GLvoid*);
88 }
89 
90 __gshared {
91     pglActiveTexture glActiveTexture;
92     pglSampleCoverage glSampleCoverage;
93     pglCompressedTexImage3D glCompressedTexImage3D;
94     pglCompressedTexImage2D glCompressedTexImage2D;
95     pglCompressedTexImage1D glCompressedTexImage1D;
96     pglCompressedTexSubImage3D glCompressedTexSubImage3D;
97     pglCompressedTexSubImage2D glCompressedTexSubImage2D;
98     pglCompressedTexSubImage1D glCompressedTexSubImage1D;
99     pglGetCompressedTexImage glGetCompressedTexImage;
100 }
101 
102 package(bindbc.opengl) @nogc nothrow
103 GLSupport loadGL13(SharedLib lib, GLSupport contextVersion)
104 {
105     auto loadedVersion = loadGL12(lib, contextVersion);
106     if(loadedVersion == GLSupport.gl12 && contextVersion > GLSupport.gl12) {
107         lib.bindGLSymbol(cast(void**)&glActiveTexture, "glActiveTexture");
108         lib.bindGLSymbol(cast(void**)&glSampleCoverage, "glSampleCoverage");
109         lib.bindGLSymbol(cast(void**)&glCompressedTexImage3D, "glCompressedTexImage3D");
110         lib.bindGLSymbol(cast(void**)&glCompressedTexImage2D, "glCompressedTexImage2D");
111         lib.bindGLSymbol(cast(void**)&glCompressedTexImage1D, "glCompressedTexImage1D");
112         lib.bindGLSymbol(cast(void**)&glCompressedTexSubImage3D, "glCompressedTexSubImage3D");
113         lib.bindGLSymbol(cast(void**)&glCompressedTexSubImage2D, "glCompressedTexSubImage2D");
114         lib.bindGLSymbol(cast(void**)&glCompressedTexSubImage1D, "glCompressedTexSubImage1D");
115         lib.bindGLSymbol(cast(void**)&glGetCompressedTexImage, "glGetCompressedTexImage");
116         if(errorCountGL() == 0) loadedVersion = GLSupport.gl13;
117     }
118     return loadedVersion;
119 }