AtlatestRepositorysigil-graphics
sigil-graphics / tree / src / cgl_native_loader.h
1
/*2
* gl_native_loader.h - GL types, constants and entry points for sokol_gfx3
* without a system GL header or a libGL link.4
*5
* GENERATED by scripts/gen-gl-loader.sh from vendor/sokol/sokol_gfx.h6
* (sokol's own Win32 loader block); do not edit, regenerate after a sokol7
* bump. Included once, by sokol-graphics.c, ahead of sokol_gfx.h with8
* SOKOL_EXTERNAL_GL_LOADER defined. Every gl* sokol_gfx calls is a static9
* function pointer here, filled by sigil_gl_load() through a proc loader10
* (sigil_desktop_gl_get_proc_address, GLFW's glfwGetProcAddress) once the11
* window's GL context is current. 122 functions, 249 lines of definitions.12
*/13
#ifndef SIGIL_GL_NATIVE_LOADER_H14
#define SIGIL_GL_NATIVE_LOADER_H16
#include <stddef.h>17
#include <stdint.h>19
/* sokol_gfx picks its Apple feature set from TargetConditionals.h, which it20
* includes itself only when it also includes the system GL headers; with21
* an external loader that is this header's job, or macOS would be read as22
* iOS (no base-vertex draws). */23
#if defined(__APPLE__)24
#include <TargetConditionals.h>25
#endif27
#if defined(_WIN32) && !defined(_WIN64)28
#define GL_APIENTRY __stdcall29
#else30
#define GL_APIENTRY31
#endif33
/* The guards the system GL headers use, so a later include of any of them34
* (glfw3.h without GLFW_INCLUDE_NONE, say) defines nothing twice. */35
#define __gl_h_ 136
#define __gl32_h_ 137
#define __gl31_h_ 138
#define __GL_H__ 139
#define __glext_h_ 140
#define __GLEXT_H_ 141
#define __gltypes_h_ 142
#define __glcorearb_h_ 143
#define __gl_glcorearb_h_ 145
/* sokol_gfx enables its 3.2 / 4.2 / 4.3 code paths on these, as the system46
* headers (Mesa's glext.h) defined them before; the runtime check on the47
* context's reported version still gates their use. */48
#define GL_VERSION_3_2 149
#define GL_VERSION_4_2 150
#define GL_VERSION_4_3 152
/* ---- types and constants (from sokol_gfx.h) ---- */53
typedef unsigned int GLenum;54
typedef unsigned int GLuint;55
typedef int GLsizei;56
typedef char GLchar;57
typedef ptrdiff_t GLintptr;58
typedef ptrdiff_t GLsizeiptr;59
typedef double GLclampd;60
typedef unsigned short GLushort;61
typedef unsigned char GLubyte;62
typedef unsigned char GLboolean;63
typedef uint64_t GLuint64;64
typedef double GLdouble;65
typedef unsigned short GLhalf;66
typedef float GLclampf;67
typedef unsigned int GLbitfield;68
typedef signed char GLbyte;69
typedef short GLshort;70
typedef void GLvoid;71
typedef int64_t GLint64;72
typedef float GLfloat;73
typedef int GLint;74
#define GL_INT_2_10_10_10_REV 0x8D9F75
#define GL_R32F 0x822E76
#define GL_PROGRAM_POINT_SIZE 0x864277
#define GL_DEPTH_ATTACHMENT 0x8D0078
#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A79
#define GL_COLOR_ATTACHMENT0 0x8CE080
#define GL_R16F 0x822D81
#define GL_DRAW_FRAMEBUFFER 0x8CA982
#define GL_FRAMEBUFFER_COMPLETE 0x8CD583
#define GL_NUM_EXTENSIONS 0x821D84
#define GL_INFO_LOG_LENGTH 0x8B8485
#define GL_VERTEX_SHADER 0x8B3186
#define GL_INCR 0x1E0287
#define GL_DYNAMIC_DRAW 0x88E888
#define GL_STATIC_DRAW 0x88E489
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x851990
#define GL_TEXTURE_CUBE_MAP 0x851391
#define GL_FUNC_SUBTRACT 0x800A92
#define GL_FUNC_REVERSE_SUBTRACT 0x800B93
#define GL_CONSTANT_COLOR 0x800194
#define GL_DECR_WRAP 0x850895
#define GL_R8 0x822996
#define GL_LINEAR_MIPMAP_LINEAR 0x270397
#define GL_ELEMENT_ARRAY_BUFFER 0x889398
#define GL_SHORT 0x140299
#define GL_DEPTH_TEST 0x0B71100
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518101
#define GL_LINK_STATUS 0x8B82102
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517103
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E104
#define GL_RGBA16F 0x881A105
#define GL_CONSTANT_ALPHA 0x8003106
#define GL_READ_FRAMEBUFFER 0x8CA8107
#define GL_TEXTURE0 0x84C0108
#define GL_TEXTURE_MIN_LOD 0x813A109
#define GL_CLAMP_TO_EDGE 0x812F110
#define GL_UNSIGNED_SHORT_5_6_5 0x8363111
#define GL_TEXTURE_WRAP_R 0x8072112
#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034113
#define GL_NEAREST_MIPMAP_NEAREST 0x2700114
#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033115
#define GL_SRC_ALPHA_SATURATE 0x0308116
#define GL_STREAM_DRAW 0x88E0117
#define GL_ONE 1118
#define GL_NEAREST_MIPMAP_LINEAR 0x2702119
#define GL_RGB10_A2 0x8059120
#define GL_RGBA8 0x8058121
#define GL_SRGB8_ALPHA8 0x8C43122
#define GL_RGBA4 0x8056123
#define GL_RGB8 0x8051124
#define GL_ARRAY_BUFFER 0x8892125
#define GL_STENCIL 0x1802126
#define GL_TEXTURE_2D 0x0DE1127
#define GL_DEPTH 0x1801128
#define GL_FRONT 0x0404129
#define GL_STENCIL_BUFFER_BIT 0x00000400130
#define GL_REPEAT 0x2901131
#define GL_RGBA 0x1908132
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515133
#define GL_DECR 0x1E03134
#define GL_FRAGMENT_SHADER 0x8B30135
#define GL_COMPUTE_SHADER 0x91B9136
#define GL_FLOAT 0x1406137
#define GL_TEXTURE_MAX_LOD 0x813B138
#define GL_DEPTH_COMPONENT 0x1902139
#define GL_ONE_MINUS_DST_ALPHA 0x0305140
#define GL_COLOR 0x1800141
#define GL_TEXTURE_2D_ARRAY 0x8C1A142
#define GL_TRIANGLES 0x0004143
#define GL_UNSIGNED_BYTE 0x1401144
#define GL_TEXTURE_MAG_FILTER 0x2800145
#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004146
#define GL_NONE 0147
#define GL_SRC_COLOR 0x0300148
#define GL_BYTE 0x1400149
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A150
#define GL_LINE_STRIP 0x0003151
#define GL_TEXTURE_3D 0x806F152
#define GL_CW 0x0900153
#define GL_LINEAR 0x2601154
#define GL_RENDERBUFFER 0x8D41155
#define GL_GEQUAL 0x0206156
#define GL_COLOR_BUFFER_BIT 0x00004000157
#define GL_RGBA32F 0x8814158
#define GL_BLEND 0x0BE2159
#define GL_ONE_MINUS_SRC_ALPHA 0x0303160
#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002161
#define GL_TEXTURE_WRAP_T 0x2803162
#define GL_TEXTURE_WRAP_S 0x2802163
#define GL_TEXTURE_MIN_FILTER 0x2801164
#define GL_LINEAR_MIPMAP_NEAREST 0x2701165
#define GL_EXTENSIONS 0x1F03166
#define GL_NO_ERROR 0167
#define GL_REPLACE 0x1E01168
#define GL_KEEP 0x1E00169
#define GL_CCW 0x0901170
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516171
#define GL_RGB 0x1907172
#define GL_TRIANGLE_STRIP 0x0005173
#define GL_FALSE 0174
#define GL_ZERO 0175
#define GL_CULL_FACE 0x0B44176
#define GL_INVERT 0x150A177
#define GL_INT 0x1404178
#define GL_UNSIGNED_INT 0x1405179
#define GL_UNSIGNED_SHORT 0x1403180
#define GL_NEAREST 0x2600181
#define GL_SCISSOR_TEST 0x0C11182
#define GL_LEQUAL 0x0203183
#define GL_STENCIL_TEST 0x0B90184
#define GL_DITHER 0x0BD0185
#define GL_DEPTH_COMPONENT32F 0x8CAC186
#define GL_EQUAL 0x0202187
#define GL_FRAMEBUFFER 0x8D40188
#define GL_RGB5 0x8050189
#define GL_LINES 0x0001190
#define GL_DEPTH_BUFFER_BIT 0x00000100191
#define GL_SRC_ALPHA 0x0302192
#define GL_INCR_WRAP 0x8507193
#define GL_LESS 0x0201194
#define GL_MULTISAMPLE 0x809D195
#define GL_FRAMEBUFFER_BINDING 0x8CA6196
#define GL_BACK 0x0405197
#define GL_ALWAYS 0x0207198
#define GL_FUNC_ADD 0x8006199
#define GL_ONE_MINUS_DST_COLOR 0x0307200
#define GL_NOTEQUAL 0x0205201
#define GL_DST_COLOR 0x0306202
#define GL_COMPILE_STATUS 0x8B81203
#define GL_RED 0x1903204
#define GL_DST_ALPHA 0x0304205
#define GL_RGB5_A1 0x8057206
#define GL_GREATER 0x0204207
#define GL_POLYGON_OFFSET_FILL 0x8037208
#define GL_TRUE 1209
#define GL_NEVER 0x0200210
#define GL_POINTS 0x0000211
#define GL_ONE_MINUS_SRC_COLOR 0x0301212
#define GL_MIRRORED_REPEAT 0x8370213
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D214
#define GL_R11F_G11F_B10F 0x8C3A215
#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B216
#define GL_RGB9_E5 0x8C3D217
#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E218
#define GL_RGBA32UI 0x8D70219
#define GL_RGB32UI 0x8D71220
#define GL_RGBA16UI 0x8D76221
#define GL_RGB16UI 0x8D77222
#define GL_RGBA8UI 0x8D7C223
#define GL_RGB8UI 0x8D7D224
#define GL_RGBA32I 0x8D82225
#define GL_RGB32I 0x8D83226
#define GL_RGBA16I 0x8D88227
#define GL_RGB16I 0x8D89228
#define GL_RGBA8I 0x8D8E229
#define GL_RGB8I 0x8D8F230
#define GL_RED_INTEGER 0x8D94231
#define GL_RG 0x8227232
#define GL_RG_INTEGER 0x8228233
#define GL_R8 0x8229234
#define GL_R16 0x822A235
#define GL_RG8 0x822B236
#define GL_RG16 0x822C237
#define GL_R16F 0x822D238
#define GL_R32F 0x822E239
#define GL_RG16F 0x822F240
#define GL_RG32F 0x8230241
#define GL_R8I 0x8231242
#define GL_R8UI 0x8232243
#define GL_R16I 0x8233244
#define GL_R16UI 0x8234245
#define GL_R32I 0x8235246
#define GL_R32UI 0x8236247
#define GL_RG8I 0x8237248
#define GL_RG8UI 0x8238249
#define GL_RG16I 0x8239250
#define GL_RG16UI 0x823A251
#define GL_RG32I 0x823B252
#define GL_RG32UI 0x823C253
#define GL_RGBA_INTEGER 0x8D99254
#define GL_R8_SNORM 0x8F94255
#define GL_RG8_SNORM 0x8F95256
#define GL_RGB8_SNORM 0x8F96257
#define GL_RGBA8_SNORM 0x8F97258
#define GL_R16_SNORM 0x8F98259
#define GL_RG16_SNORM 0x8F99260
#define GL_RGB16_SNORM 0x8F9A261
#define GL_RGBA16_SNORM 0x8F9B262
#define GL_RGBA16 0x805B263
#define GL_MAX_TEXTURE_SIZE 0x0D33264
#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C265
#define GL_MAX_3D_TEXTURE_SIZE 0x8073266
#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF267
#define GL_MAX_VERTEX_ATTRIBS 0x8869268
#define GL_CLAMP_TO_BORDER 0x812D269
#define GL_TEXTURE_BORDER_COLOR 0x1004270
#define GL_CURRENT_PROGRAM 0x8B8D271
#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A272
#define GL_UNPACK_ALIGNMENT 0x0CF5273
#define GL_FRAMEBUFFER_SRGB 0x8DB9274
#define GL_TEXTURE_COMPARE_MODE 0x884C275
#define GL_TEXTURE_COMPARE_FUNC 0x884D276
#define GL_COMPARE_REF_TO_TEXTURE 0x884E277
#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F278
#define GL_TEXTURE_MAX_LEVEL 0x813D279
#define GL_FRAMEBUFFER_UNDEFINED 0x8219280
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6281
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7282
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD283
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56284
#define GL_MAJOR_VERSION 0x821B285
#define GL_MINOR_VERSION 0x821C286
#define GL_TEXTURE_2D_MULTISAMPLE 0x9100287
#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102288
#define GL_SHADER_STORAGE_BARRIER_BIT 0x2000289
#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001290
#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002291
#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008292
#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020293
#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400294
#define GL_MIN 0x8007295
#define GL_MAX 0x8008296
#define GL_WRITE_ONLY 0x88B9297
#define GL_READ_WRITE 0x88BA298
#define GL_MAX_DRAW_BUFFERS 0x8824299
#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872300
#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD301
#define GL_MAX_IMAGE_UNITS 0x8F38303
/* ---- the entry points sokol_gfx calls (from sokol_gfx.h) ---- */304
#define SIGIL_GL_FUNCS \305
SIGIL_GL_XMACRO(glBindVertexArray, void, (GLuint array)) \306
SIGIL_GL_XMACRO(glFramebufferTextureLayer, void, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \307
SIGIL_GL_XMACRO(glGenFramebuffers, void, (GLsizei n, GLuint * framebuffers)) \308
SIGIL_GL_XMACRO(glBindFramebuffer, void, (GLenum target, GLuint framebuffer)) \309
SIGIL_GL_XMACRO(glBindRenderbuffer, void, (GLenum target, GLuint renderbuffer)) \310
SIGIL_GL_XMACRO(glGetStringi, const GLubyte *, (GLenum name, GLuint index)) \311
SIGIL_GL_XMACRO(glClearBufferfi, void, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \312
SIGIL_GL_XMACRO(glClearBufferfv, void, (GLenum buffer, GLint drawbuffer, const GLfloat * value)) \313
SIGIL_GL_XMACRO(glClearBufferuiv, void, (GLenum buffer, GLint drawbuffer, const GLuint * value)) \314
SIGIL_GL_XMACRO(glClearBufferiv, void, (GLenum buffer, GLint drawbuffer, const GLint * value)) \315
SIGIL_GL_XMACRO(glDeleteRenderbuffers, void, (GLsizei n, const GLuint * renderbuffers)) \316
SIGIL_GL_XMACRO(glUniform1fv, void, (GLint location, GLsizei count, const GLfloat * value)) \317
SIGIL_GL_XMACRO(glUniform2fv, void, (GLint location, GLsizei count, const GLfloat * value)) \318
SIGIL_GL_XMACRO(glUniform3fv, void, (GLint location, GLsizei count, const GLfloat * value)) \319
SIGIL_GL_XMACRO(glUniform4fv, void, (GLint location, GLsizei count, const GLfloat * value)) \320
SIGIL_GL_XMACRO(glUniform1iv, void, (GLint location, GLsizei count, const GLint * value)) \321
SIGIL_GL_XMACRO(glUniform2iv, void, (GLint location, GLsizei count, const GLint * value)) \322
SIGIL_GL_XMACRO(glUniform3iv, void, (GLint location, GLsizei count, const GLint * value)) \323
SIGIL_GL_XMACRO(glUniform4iv, void, (GLint location, GLsizei count, const GLint * value)) \324
SIGIL_GL_XMACRO(glUniformMatrix4fv, void, (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)) \325
SIGIL_GL_XMACRO(glUseProgram, void, (GLuint program)) \326
SIGIL_GL_XMACRO(glShaderSource, void, (GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length)) \327
SIGIL_GL_XMACRO(glLinkProgram, void, (GLuint program)) \328
SIGIL_GL_XMACRO(glGetUniformLocation, GLint, (GLuint program, const GLchar * name)) \329
SIGIL_GL_XMACRO(glGetShaderiv, void, (GLuint shader, GLenum pname, GLint * params)) \330
SIGIL_GL_XMACRO(glGetProgramInfoLog, void, (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)) \331
SIGIL_GL_XMACRO(glGetAttribLocation, GLint, (GLuint program, const GLchar * name)) \332
SIGIL_GL_XMACRO(glDisableVertexAttribArray, void, (GLuint index)) \333
SIGIL_GL_XMACRO(glDeleteShader, void, (GLuint shader)) \334
SIGIL_GL_XMACRO(glDeleteProgram, void, (GLuint program)) \335
SIGIL_GL_XMACRO(glCompileShader, void, (GLuint shader)) \336
SIGIL_GL_XMACRO(glStencilFuncSeparate, void, (GLenum face, GLenum func, GLint ref, GLuint mask)) \337
SIGIL_GL_XMACRO(glStencilOpSeparate, void, (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) \338
SIGIL_GL_XMACRO(glRenderbufferStorageMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \339
SIGIL_GL_XMACRO(glDrawBuffers, void, (GLsizei n, const GLenum * bufs)) \340
SIGIL_GL_XMACRO(glVertexAttribDivisor, void, (GLuint index, GLuint divisor)) \341
SIGIL_GL_XMACRO(glBufferSubData, void, (GLenum target, GLintptr offset, GLsizeiptr size, const void * data)) \342
SIGIL_GL_XMACRO(glGenBuffers, void, (GLsizei n, GLuint * buffers)) \343
SIGIL_GL_XMACRO(glCheckFramebufferStatus, GLenum, (GLenum target)) \344
SIGIL_GL_XMACRO(glFramebufferRenderbuffer, void, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \345
SIGIL_GL_XMACRO(glCompressedTexImage2D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data)) \346
SIGIL_GL_XMACRO(glCompressedTexImage3D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)) \347
SIGIL_GL_XMACRO(glActiveTexture, void, (GLenum texture)) \348
SIGIL_GL_XMACRO(glTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels)) \349
SIGIL_GL_XMACRO(glRenderbufferStorage, void, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) \350
SIGIL_GL_XMACRO(glGenTextures, void, (GLsizei n, GLuint * textures)) \351
SIGIL_GL_XMACRO(glPolygonOffset, void, (GLfloat factor, GLfloat units)) \352
SIGIL_GL_XMACRO(glDrawElements, void, (GLenum mode, GLsizei count, GLenum type, const void * indices)) \353
SIGIL_GL_XMACRO(glDeleteFramebuffers, void, (GLsizei n, const GLuint * framebuffers)) \354
SIGIL_GL_XMACRO(glBlendEquationSeparate, void, (GLenum modeRGB, GLenum modeAlpha)) \355
SIGIL_GL_XMACRO(glDeleteTextures, void, (GLsizei n, const GLuint * textures)) \356
SIGIL_GL_XMACRO(glGetProgramiv, void, (GLuint program, GLenum pname, GLint * params)) \357
SIGIL_GL_XMACRO(glBindTexture, void, (GLenum target, GLuint texture)) \358
SIGIL_GL_XMACRO(glTexImage3D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels)) \359
SIGIL_GL_XMACRO(glCreateShader, GLuint, (GLenum type)) \360
SIGIL_GL_XMACRO(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels)) \361
SIGIL_GL_XMACRO(glFramebufferTexture2D, void, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \362
SIGIL_GL_XMACRO(glCreateProgram, GLuint, (void)) \363
SIGIL_GL_XMACRO(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height)) \364
SIGIL_GL_XMACRO(glDeleteBuffers, void, (GLsizei n, const GLuint * buffers)) \365
SIGIL_GL_XMACRO(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count)) \366
SIGIL_GL_XMACRO(glDrawElementsInstanced, void, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)) \367
SIGIL_GL_XMACRO(glVertexAttribPointer, void, (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer)) \368
SIGIL_GL_XMACRO(glVertexAttribIPointer, void, (GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer)) \369
SIGIL_GL_XMACRO(glUniform1i, void, (GLint location, GLint v0)) \370
SIGIL_GL_XMACRO(glDisable, void, (GLenum cap)) \371
SIGIL_GL_XMACRO(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \372
SIGIL_GL_XMACRO(glColorMaski, void, (GLuint buf, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \373
SIGIL_GL_XMACRO(glBindBuffer, void, (GLenum target, GLuint buffer)) \374
SIGIL_GL_XMACRO(glDeleteVertexArrays, void, (GLsizei n, const GLuint * arrays)) \375
SIGIL_GL_XMACRO(glDepthMask, void, (GLboolean flag)) \376
SIGIL_GL_XMACRO(glDrawArraysInstanced, void, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \377
SIGIL_GL_XMACRO(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height)) \378
SIGIL_GL_XMACRO(glGenRenderbuffers, void, (GLsizei n, GLuint * renderbuffers)) \379
SIGIL_GL_XMACRO(glBufferData, void, (GLenum target, GLsizeiptr size, const void * data, GLenum usage)) \380
SIGIL_GL_XMACRO(glBlendFuncSeparate, void, (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) \381
SIGIL_GL_XMACRO(glTexParameteri, void, (GLenum target, GLenum pname, GLint param)) \382
SIGIL_GL_XMACRO(glGetIntegerv, void, (GLenum pname, GLint * data)) \383
SIGIL_GL_XMACRO(glEnable, void, (GLenum cap)) \384
SIGIL_GL_XMACRO(glBlitFramebuffer, void, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \385
SIGIL_GL_XMACRO(glStencilMask, void, (GLuint mask)) \386
SIGIL_GL_XMACRO(glAttachShader, void, (GLuint program, GLuint shader)) \387
SIGIL_GL_XMACRO(glGetError, GLenum, (void)) \388
SIGIL_GL_XMACRO(glBlendColor, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \389
SIGIL_GL_XMACRO(glTexParameterf, void, (GLenum target, GLenum pname, GLfloat param)) \390
SIGIL_GL_XMACRO(glTexParameterfv, void, (GLenum target, GLenum pname, const GLfloat* params)) \391
SIGIL_GL_XMACRO(glGetShaderInfoLog, void, (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)) \392
SIGIL_GL_XMACRO(glDepthFunc, void, (GLenum func)) \393
SIGIL_GL_XMACRO(glStencilOp , void, (GLenum fail, GLenum zfail, GLenum zpass)) \394
SIGIL_GL_XMACRO(glStencilFunc, void, (GLenum func, GLint ref, GLuint mask)) \395
SIGIL_GL_XMACRO(glEnableVertexAttribArray, void, (GLuint index)) \396
SIGIL_GL_XMACRO(glBlendFunc, void, (GLenum sfactor, GLenum dfactor)) \397
SIGIL_GL_XMACRO(glReadBuffer, void, (GLenum src)) \398
SIGIL_GL_XMACRO(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels)) \399
SIGIL_GL_XMACRO(glGenVertexArrays, void, (GLsizei n, GLuint * arrays)) \400
SIGIL_GL_XMACRO(glFrontFace, void, (GLenum mode)) \401
SIGIL_GL_XMACRO(glCullFace, void, (GLenum mode)) \402
SIGIL_GL_XMACRO(glPixelStorei, void, (GLenum pname, GLint param)) \403
SIGIL_GL_XMACRO(glBindSampler, void, (GLuint unit, GLuint sampler)) \404
SIGIL_GL_XMACRO(glGenSamplers, void, (GLsizei n, GLuint* samplers)) \405
SIGIL_GL_XMACRO(glSamplerParameteri, void, (GLuint sampler, GLenum pname, GLint param)) \406
SIGIL_GL_XMACRO(glSamplerParameterf, void, (GLuint sampler, GLenum pname, GLfloat param)) \407
SIGIL_GL_XMACRO(glSamplerParameterfv, void, (GLuint sampler, GLenum pname, const GLfloat* params)) \408
SIGIL_GL_XMACRO(glDeleteSamplers, void, (GLsizei n, const GLuint* samplers)) \409
SIGIL_GL_XMACRO(glBindBufferBase, void, (GLenum target, GLuint index, GLuint buffer)) \410
SIGIL_GL_XMACRO(glBindBufferRange, void, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \411
SIGIL_GL_XMACRO(glTexImage2DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \412
SIGIL_GL_XMACRO(glTexImage3DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \413
SIGIL_GL_XMACRO(glDispatchCompute, void, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \414
SIGIL_GL_XMACRO(glMemoryBarrier, void, (GLbitfield barriers)) \415
SIGIL_GL_XMACRO(glBindImageTexture, void, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \416
SIGIL_GL_XMACRO(glTexStorage2DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \417
SIGIL_GL_XMACRO(glTexStorage2D, void, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \418
SIGIL_GL_XMACRO(glTexStorage3DMultisample, void, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \419
SIGIL_GL_XMACRO(glTexStorage3D, void, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \420
SIGIL_GL_XMACRO(glCompressedTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) \421
SIGIL_GL_XMACRO(glCompressedTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \422
SIGIL_GL_XMACRO(glTextureView, void, (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)) \423
SIGIL_GL_XMACRO(glDrawElementsBaseVertex, void, (GLenum mode, GLsizei count, GLenum type, const void* indices, GLint basevertex)) \424
SIGIL_GL_XMACRO(glDrawElementsInstancedBaseVertex, void, (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount, GLint basevertex)) \425
SIGIL_GL_XMACRO(glDrawElementsInstancedBaseVertexBaseInstance, void, (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)) \426
SIGIL_GL_XMACRO(glDrawArraysInstancedBaseInstance, void, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance))428
#define SIGIL_GL_XMACRO(name, ret, args) typedef ret (GL_APIENTRY* PFN_ ## name) args;429
SIGIL_GL_FUNCS430
#undef SIGIL_GL_XMACRO432
#define SIGIL_GL_XMACRO(name, ret, args) static PFN_ ## name name;433
SIGIL_GL_FUNCS434
#undef SIGIL_GL_XMACRO436
typedef void *(*sigil_gl_proc_loader)(const char *name);438
/* Fill every pointer through `load`. Returns the number left NULL: entry439
* points newer than the context (glTextureView on a 4.1 context, the440
* base-instance draws before 4.2) are expected to be missing and sokol_gfx441
* only calls them behind its feature checks; glGenBuffers or glGetIntegerv442
* missing means there is no usable context, and sigil_gl_ready() says so. */443
static int sigil_gl_load(sigil_gl_proc_loader load)444
{445
int missing = 0;446
#define SIGIL_GL_XMACRO(name, ret, args) \447
name = (PFN_ ## name)load(#name); if (!name) missing++;448
SIGIL_GL_FUNCS449
#undef SIGIL_GL_XMACRO450
return missing;451
}453
static int sigil_gl_ready(void)454
{455
return glGetIntegerv != NULL && glClearBufferfv != NULL && glGenBuffers != NULL456
&& glCreateShader != NULL && glBindFramebuffer != NULL;457
}459
#endif /* SIGIL_GL_NATIVE_LOADER_H */