parent
57ec7faab6
commit
155db88ba3
|
@ -1,34 +1,106 @@
|
|||
/*
|
||||
This file was generated using https://github.com/mosra/flextgl:
|
||||
|
||||
path/to/flextGLgen.py -T sdl -D /home/mgerhardy/dev/engine/src/modules/video/gl profiles/gl33.txt
|
||||
|
||||
Do not edit directly, modify the template or profile and regenerate.
|
||||
*/
|
||||
/* WARNING: This file was automatically generated */
|
||||
/* Do not edit. */
|
||||
|
||||
#include "flextGL.h"
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void flextLoadOpenGLFunctions(void) {
|
||||
|
||||
void flextLoadOpenGLFunctions(void);
|
||||
|
||||
/**
|
||||
* \return -1 on error, 0 on success
|
||||
* \sa SDL_GetError
|
||||
*/
|
||||
int flextInit(void)
|
||||
{
|
||||
int major;
|
||||
int minor;
|
||||
|
||||
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major);
|
||||
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor);
|
||||
|
||||
flextLoadOpenGLFunctions();
|
||||
|
||||
/* --- Check for minimal version and profile --- */
|
||||
|
||||
if (major * 10 + minor < 33) {
|
||||
return SDL_SetError("OpenGL context hasn't the expected version 3.3.");
|
||||
}
|
||||
|
||||
|
||||
/* --- Check for extensions --- */
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_debug_output")) {
|
||||
FLEXT_ARB_debug_output = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_direct_state_access")) {
|
||||
FLEXT_ARB_direct_state_access = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_buffer_storage")) {
|
||||
FLEXT_ARB_buffer_storage = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_multi_draw_indirect")) {
|
||||
FLEXT_ARB_multi_draw_indirect = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_draw_indirect")) {
|
||||
FLEXT_ARB_draw_indirect = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_instanced_arrays")) {
|
||||
FLEXT_ARB_instanced_arrays = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_compute_shader")) {
|
||||
FLEXT_ARB_compute_shader = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_shader_image_load_store")) {
|
||||
FLEXT_ARB_shader_image_load_store = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_transform_feedback2")) {
|
||||
FLEXT_ARB_transform_feedback2 = GL_TRUE;
|
||||
}
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_ARB_shader_storage_buffer_object")) {
|
||||
FLEXT_ARB_shader_storage_buffer_object = GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void flextLoadOpenGLFunctions(void)
|
||||
{
|
||||
/* --- Function pointer loading --- */
|
||||
|
||||
/* GL_ARB_buffer_storage */
|
||||
|
||||
glpfBufferStorage = (PFNGLBUFFERSTORAGE_PROC*)SDL_GL_GetProcAddress("glBufferStorage");
|
||||
|
||||
/* GL_ARB_compute_shader */
|
||||
|
||||
glpfDispatchCompute = (PFNGLDISPATCHCOMPUTE_PROC*)SDL_GL_GetProcAddress("glDispatchCompute");
|
||||
glpfDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECT_PROC*)SDL_GL_GetProcAddress("glDispatchComputeIndirect");
|
||||
|
||||
/* GL_ARB_debug_output */
|
||||
|
||||
glpfDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARB_PROC*)SDL_GL_GetProcAddress("glDebugMessageCallbackARB");
|
||||
glpfDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARB_PROC*)SDL_GL_GetProcAddress("glDebugMessageControlARB");
|
||||
glpfDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARB_PROC*)SDL_GL_GetProcAddress("glDebugMessageInsertARB");
|
||||
glpfGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARB_PROC*)SDL_GL_GetProcAddress("glGetDebugMessageLogARB");
|
||||
|
||||
/* GL_ARB_direct_state_access */
|
||||
|
||||
glpfBindTextureUnit = (PFNGLBINDTEXTUREUNIT_PROC*)SDL_GL_GetProcAddress("glBindTextureUnit");
|
||||
glpfBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFER_PROC*)SDL_GL_GetProcAddress("glBlitNamedFramebuffer");
|
||||
glpfCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUS_PROC*)SDL_GL_GetProcAddress("glCheckNamedFramebufferStatus");
|
||||
|
@ -128,24 +200,30 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERS_PROC*)SDL_GL_GetProcAddress("glVertexArrayVertexBuffers");
|
||||
|
||||
/* GL_ARB_draw_indirect */
|
||||
|
||||
glpfDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECT_PROC*)SDL_GL_GetProcAddress("glDrawArraysIndirect");
|
||||
glpfDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECT_PROC*)SDL_GL_GetProcAddress("glDrawElementsIndirect");
|
||||
|
||||
/* GL_ARB_instanced_arrays */
|
||||
|
||||
glpfVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARB_PROC*)SDL_GL_GetProcAddress("glVertexAttribDivisorARB");
|
||||
|
||||
/* GL_ARB_multi_draw_indirect */
|
||||
|
||||
glpfMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECT_PROC*)SDL_GL_GetProcAddress("glMultiDrawArraysIndirect");
|
||||
glpfMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECT_PROC*)SDL_GL_GetProcAddress("glMultiDrawElementsIndirect");
|
||||
|
||||
/* GL_ARB_shader_image_load_store */
|
||||
|
||||
glpfBindImageTexture = (PFNGLBINDIMAGETEXTURE_PROC*)SDL_GL_GetProcAddress("glBindImageTexture");
|
||||
glpfMemoryBarrier = (PFNGLMEMORYBARRIER_PROC*)SDL_GL_GetProcAddress("glMemoryBarrier");
|
||||
|
||||
/* GL_ARB_shader_storage_buffer_object */
|
||||
|
||||
glpfShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDING_PROC*)SDL_GL_GetProcAddress("glShaderStorageBlockBinding");
|
||||
|
||||
/* GL_ARB_transform_feedback2 */
|
||||
|
||||
glpfBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glBindTransformFeedback");
|
||||
glpfDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKS_PROC*)SDL_GL_GetProcAddress("glDeleteTransformFeedbacks");
|
||||
glpfDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glDrawTransformFeedback");
|
||||
|
@ -155,6 +233,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glResumeTransformFeedback");
|
||||
|
||||
/* GL_VERSION_1_0 */
|
||||
|
||||
glpfBlendFunc = (PFNGLBLENDFUNC_PROC*)SDL_GL_GetProcAddress("glBlendFunc");
|
||||
glpfClear = (PFNGLCLEAR_PROC*)SDL_GL_GetProcAddress("glClear");
|
||||
glpfClearColor = (PFNGLCLEARCOLOR_PROC*)SDL_GL_GetProcAddress("glClearColor");
|
||||
|
@ -205,6 +284,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfViewport = (PFNGLVIEWPORT_PROC*)SDL_GL_GetProcAddress("glViewport");
|
||||
|
||||
/* GL_VERSION_1_1 */
|
||||
|
||||
glpfBindTexture = (PFNGLBINDTEXTURE_PROC*)SDL_GL_GetProcAddress("glBindTexture");
|
||||
glpfCopyTexImage1D = (PFNGLCOPYTEXIMAGE1D_PROC*)SDL_GL_GetProcAddress("glCopyTexImage1D");
|
||||
glpfCopyTexImage2D = (PFNGLCOPYTEXIMAGE2D_PROC*)SDL_GL_GetProcAddress("glCopyTexImage2D");
|
||||
|
@ -220,12 +300,14 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfTexSubImage2D = (PFNGLTEXSUBIMAGE2D_PROC*)SDL_GL_GetProcAddress("glTexSubImage2D");
|
||||
|
||||
/* GL_VERSION_1_2 */
|
||||
|
||||
glpfCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3D_PROC*)SDL_GL_GetProcAddress("glCopyTexSubImage3D");
|
||||
glpfDrawRangeElements = (PFNGLDRAWRANGEELEMENTS_PROC*)SDL_GL_GetProcAddress("glDrawRangeElements");
|
||||
glpfTexImage3D = (PFNGLTEXIMAGE3D_PROC*)SDL_GL_GetProcAddress("glTexImage3D");
|
||||
glpfTexSubImage3D = (PFNGLTEXSUBIMAGE3D_PROC*)SDL_GL_GetProcAddress("glTexSubImage3D");
|
||||
|
||||
/* GL_VERSION_1_3 */
|
||||
|
||||
glpfActiveTexture = (PFNGLACTIVETEXTURE_PROC*)SDL_GL_GetProcAddress("glActiveTexture");
|
||||
glpfCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1D_PROC*)SDL_GL_GetProcAddress("glCompressedTexImage1D");
|
||||
glpfCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2D_PROC*)SDL_GL_GetProcAddress("glCompressedTexImage2D");
|
||||
|
@ -237,6 +319,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfSampleCoverage = (PFNGLSAMPLECOVERAGE_PROC*)SDL_GL_GetProcAddress("glSampleCoverage");
|
||||
|
||||
/* GL_VERSION_1_4 */
|
||||
|
||||
glpfBlendColor = (PFNGLBLENDCOLOR_PROC*)SDL_GL_GetProcAddress("glBlendColor");
|
||||
glpfBlendEquation = (PFNGLBLENDEQUATION_PROC*)SDL_GL_GetProcAddress("glBlendEquation");
|
||||
glpfBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATE_PROC*)SDL_GL_GetProcAddress("glBlendFuncSeparate");
|
||||
|
@ -248,6 +331,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfPointParameteriv = (PFNGLPOINTPARAMETERIV_PROC*)SDL_GL_GetProcAddress("glPointParameteriv");
|
||||
|
||||
/* GL_VERSION_1_5 */
|
||||
|
||||
glpfBeginQuery = (PFNGLBEGINQUERY_PROC*)SDL_GL_GetProcAddress("glBeginQuery");
|
||||
glpfBindBuffer = (PFNGLBINDBUFFER_PROC*)SDL_GL_GetProcAddress("glBindBuffer");
|
||||
glpfBufferData = (PFNGLBUFFERDATA_PROC*)SDL_GL_GetProcAddress("glBufferData");
|
||||
|
@ -269,6 +353,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfUnmapBuffer = (PFNGLUNMAPBUFFER_PROC*)SDL_GL_GetProcAddress("glUnmapBuffer");
|
||||
|
||||
/* GL_VERSION_2_0 */
|
||||
|
||||
glpfAttachShader = (PFNGLATTACHSHADER_PROC*)SDL_GL_GetProcAddress("glAttachShader");
|
||||
glpfBindAttribLocation = (PFNGLBINDATTRIBLOCATION_PROC*)SDL_GL_GetProcAddress("glBindAttribLocation");
|
||||
glpfBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATE_PROC*)SDL_GL_GetProcAddress("glBlendEquationSeparate");
|
||||
|
@ -364,6 +449,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTER_PROC*)SDL_GL_GetProcAddress("glVertexAttribPointer");
|
||||
|
||||
/* GL_VERSION_2_1 */
|
||||
|
||||
glpfUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix2x3fv");
|
||||
glpfUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix2x4fv");
|
||||
glpfUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix3x2fv");
|
||||
|
@ -372,6 +458,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix4x3fv");
|
||||
|
||||
/* GL_VERSION_3_0 */
|
||||
|
||||
glpfBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDER_PROC*)SDL_GL_GetProcAddress("glBeginConditionalRender");
|
||||
glpfBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glBeginTransformFeedback");
|
||||
glpfBindBufferBase = (PFNGLBINDBUFFERBASE_PROC*)SDL_GL_GetProcAddress("glBindBufferBase");
|
||||
|
@ -458,6 +545,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTER_PROC*)SDL_GL_GetProcAddress("glVertexAttribIPointer");
|
||||
|
||||
/* GL_VERSION_3_1 */
|
||||
|
||||
glpfCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATA_PROC*)SDL_GL_GetProcAddress("glCopyBufferSubData");
|
||||
glpfDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCED_PROC*)SDL_GL_GetProcAddress("glDrawArraysInstanced");
|
||||
glpfDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCED_PROC*)SDL_GL_GetProcAddress("glDrawElementsInstanced");
|
||||
|
@ -472,6 +560,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDING_PROC*)SDL_GL_GetProcAddress("glUniformBlockBinding");
|
||||
|
||||
/* GL_VERSION_3_2 */
|
||||
|
||||
glpfClientWaitSync = (PFNGLCLIENTWAITSYNC_PROC*)SDL_GL_GetProcAddress("glClientWaitSync");
|
||||
glpfDeleteSync = (PFNGLDELETESYNC_PROC*)SDL_GL_GetProcAddress("glDeleteSync");
|
||||
glpfDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEX_PROC*)SDL_GL_GetProcAddress("glDrawElementsBaseVertex");
|
||||
|
@ -493,6 +582,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
glpfWaitSync = (PFNGLWAITSYNC_PROC*)SDL_GL_GetProcAddress("glWaitSync");
|
||||
|
||||
/* GL_VERSION_3_3 */
|
||||
|
||||
glpfBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXED_PROC*)SDL_GL_GetProcAddress("glBindFragDataLocationIndexed");
|
||||
glpfBindSampler = (PFNGLBINDSAMPLER_PROC*)SDL_GL_GetProcAddress("glBindSampler");
|
||||
glpfDeleteSamplers = (PFNGLDELETESAMPLERS_PROC*)SDL_GL_GetProcAddress("glDeleteSamplers");
|
||||
|
@ -524,57 +614,7 @@ void flextLoadOpenGLFunctions(void) {
|
|||
|
||||
}
|
||||
|
||||
int flextInit(void) {
|
||||
int major;
|
||||
int minor;
|
||||
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major);
|
||||
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor);
|
||||
|
||||
flextLoadOpenGLFunctions();
|
||||
|
||||
/* Check for minimal version and profile */
|
||||
|
||||
if(major * 10 + minor < 33) {
|
||||
return SDL_SetError("OpenGL context hasn't the expected version 3.3.");
|
||||
}
|
||||
|
||||
/* --- Check for extensions --- */
|
||||
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_debug_output")) {
|
||||
FLEXT_ARB_debug_output = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_direct_state_access")) {
|
||||
FLEXT_ARB_direct_state_access = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_buffer_storage")) {
|
||||
FLEXT_ARB_buffer_storage = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_multi_draw_indirect")) {
|
||||
FLEXT_ARB_multi_draw_indirect = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_draw_indirect")) {
|
||||
FLEXT_ARB_draw_indirect = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_instanced_arrays")) {
|
||||
FLEXT_ARB_instanced_arrays = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_compute_shader")) {
|
||||
FLEXT_ARB_compute_shader = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_shader_image_load_store")) {
|
||||
FLEXT_ARB_shader_image_load_store = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_transform_feedback2")) {
|
||||
FLEXT_ARB_transform_feedback2 = GL_TRUE;
|
||||
}
|
||||
if(SDL_GL_ExtensionSupported("GL_ARB_shader_storage_buffer_object")) {
|
||||
FLEXT_ARB_shader_storage_buffer_object = GL_TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Extension flag definitions */
|
||||
/* ----------------------- Extension flag definitions ---------------------- */
|
||||
int FLEXT_ARB_debug_output = GL_FALSE;
|
||||
int FLEXT_ARB_direct_state_access = GL_FALSE;
|
||||
int FLEXT_ARB_buffer_storage = GL_FALSE;
|
||||
|
@ -586,7 +626,7 @@ int FLEXT_ARB_shader_image_load_store = GL_FALSE;
|
|||
int FLEXT_ARB_transform_feedback2 = GL_FALSE;
|
||||
int FLEXT_ARB_shader_storage_buffer_object = GL_FALSE;
|
||||
|
||||
/* Function pointer definitions */
|
||||
/* ---------------------- Function pointer definitions --------------------- */
|
||||
|
||||
/* GL_ARB_buffer_storage */
|
||||
|
||||
|
@ -1117,6 +1157,7 @@ PFNGLVERTEXATTRIBP3UIV_PROC* glpfVertexAttribP3uiv = NULL;
|
|||
PFNGLVERTEXATTRIBP4UI_PROC* glpfVertexAttribP4ui = NULL;
|
||||
PFNGLVERTEXATTRIBP4UIV_PROC* glpfVertexAttribP4uiv = NULL;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
/* WARNING: This file was automatically generated */
|
||||
/* Do not edit. */
|
||||
|
||||
#ifndef __gl_h_
|
||||
#define __gl_h_
|
||||
/*
|
||||
This file was generated using https://github.com/mosra/flextgl:
|
||||
|
||||
path/to/flextGLgen.py -T sdl -D /home/mgerhardy/dev/engine/src/modules/video/gl profiles/gl33.txt
|
||||
|
||||
Do not edit directly, modify the template or profile and regenerate.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -32,32 +28,71 @@ extern "C" {
|
|||
#define GLAPI extern
|
||||
#endif
|
||||
|
||||
/* ------------------------------- DATA TYPES ------------------------------ */
|
||||
/* -------------------------------- DATA TYPES ------------------------------- */
|
||||
|
||||
#include <KHR/khrplatform.h>
|
||||
#include <stddef.h>
|
||||
#ifndef GLEXT_64_TYPES_DEFINED
|
||||
/* This code block is duplicated in glxext.h, so must be protected */
|
||||
#define GLEXT_64_TYPES_DEFINED
|
||||
/* Define int32_t, int64_t, and uint64_t types for UST/MSC */
|
||||
/* (as used in the GL_EXT_timer_query extension). */
|
||||
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
#include <inttypes.h>
|
||||
#elif defined(__sun__) || defined(__digital__)
|
||||
#include <inttypes.h>
|
||||
#if defined(__STDC__)
|
||||
#if defined(__arch64__) || defined(_LP64)
|
||||
typedef long int int64_t;
|
||||
typedef unsigned long int uint64_t;
|
||||
#else
|
||||
typedef long long int int64_t;
|
||||
typedef unsigned long long int uint64_t;
|
||||
#endif /* __arch64__ */
|
||||
#endif /* __STDC__ */
|
||||
#elif defined( __VMS ) || defined(__sgi)
|
||||
#include <inttypes.h>
|
||||
#elif defined(__SCO__) || defined(__USLC__)
|
||||
#include <stdint.h>
|
||||
#elif defined(__UNIXOS2__) || defined(__SOL64__)
|
||||
typedef long int int32_t;
|
||||
typedef long long int int64_t;
|
||||
typedef unsigned long long int uint64_t;
|
||||
#elif defined(_WIN32) && defined(__GNUC__)
|
||||
#include <stdint.h>
|
||||
#elif defined(_WIN32)
|
||||
typedef __int32 int32_t;
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#else
|
||||
/* Fallback if nothing above works */
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
#endif
|
||||
typedef unsigned int GLenum;
|
||||
typedef unsigned char GLboolean;
|
||||
typedef unsigned int GLbitfield;
|
||||
typedef void GLvoid;
|
||||
typedef khronos_int8_t GLbyte;
|
||||
typedef khronos_uint8_t GLubyte;
|
||||
typedef khronos_int16_t GLshort;
|
||||
typedef khronos_uint16_t GLushort;
|
||||
typedef signed char GLbyte;
|
||||
typedef short GLshort;
|
||||
typedef int GLint;
|
||||
typedef unsigned char GLubyte;
|
||||
typedef unsigned short GLushort;
|
||||
typedef unsigned int GLuint;
|
||||
typedef int GLsizei;
|
||||
typedef khronos_float_t GLfloat;
|
||||
typedef float GLfloat;
|
||||
typedef float GLclampf;
|
||||
typedef double GLdouble;
|
||||
typedef double GLclampd;
|
||||
typedef char GLchar;
|
||||
typedef khronos_uint16_t GLhalf;
|
||||
typedef khronos_intptr_t GLintptr;
|
||||
typedef khronos_ssize_t GLsizeiptr;
|
||||
typedef khronos_int64_t GLint64;
|
||||
typedef khronos_uint64_t GLuint64;
|
||||
typedef unsigned short GLhalf;
|
||||
typedef ptrdiff_t GLintptr;
|
||||
typedef ptrdiff_t GLsizeiptr;
|
||||
typedef int64_t GLint64;
|
||||
typedef uint64_t GLuint64;
|
||||
typedef struct __GLsync *GLsync;
|
||||
typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
|
||||
|
||||
/* ---------------------------------- ENUMS -------------------------------- */
|
||||
/* ----------------------------------- ENUMS --------------------------------- */
|
||||
|
||||
/* GL_VERSION_1_0 */
|
||||
|
||||
|
@ -1090,7 +1125,8 @@ typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLen
|
|||
#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
|
||||
#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39
|
||||
|
||||
/* -------------------------- FUNCTION PROTOTYPES -------------------------- */
|
||||
/* --------------------------- FUNCTION PROTOTYPES --------------------------- */
|
||||
|
||||
|
||||
/* GL_ARB_buffer_storage */
|
||||
|
||||
|
@ -1100,6 +1136,7 @@ GLAPI PFNGLBUFFERSTORAGE_PROC* glpfBufferStorage;
|
|||
|
||||
#define glBufferStorage glpfBufferStorage
|
||||
|
||||
|
||||
/* GL_ARB_compute_shader */
|
||||
|
||||
typedef void (APIENTRY PFNGLDISPATCHCOMPUTE_PROC (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z));
|
||||
|
@ -1111,6 +1148,7 @@ GLAPI PFNGLDISPATCHCOMPUTEINDIRECT_PROC* glpfDispatchComputeIndirect;
|
|||
#define glDispatchCompute glpfDispatchCompute
|
||||
#define glDispatchComputeIndirect glpfDispatchComputeIndirect
|
||||
|
||||
|
||||
/* GL_ARB_debug_output */
|
||||
|
||||
typedef void (APIENTRY PFNGLDEBUGMESSAGECALLBACKARB_PROC (GLDEBUGPROCARB callback, const void * userParam));
|
||||
|
@ -1128,6 +1166,7 @@ GLAPI PFNGLGETDEBUGMESSAGELOGARB_PROC* glpfGetDebugMessageLogARB;
|
|||
#define glDebugMessageInsertARB glpfDebugMessageInsertARB
|
||||
#define glGetDebugMessageLogARB glpfGetDebugMessageLogARB
|
||||
|
||||
|
||||
/* GL_ARB_direct_state_access */
|
||||
|
||||
typedef void (APIENTRY PFNGLBINDTEXTUREUNIT_PROC (GLuint unit, GLuint texture));
|
||||
|
@ -1424,6 +1463,7 @@ GLAPI PFNGLVERTEXARRAYVERTEXBUFFERS_PROC* glpfVertexArrayVertexBuffers;
|
|||
#define glVertexArrayVertexBuffer glpfVertexArrayVertexBuffer
|
||||
#define glVertexArrayVertexBuffers glpfVertexArrayVertexBuffers
|
||||
|
||||
|
||||
/* GL_ARB_draw_indirect */
|
||||
|
||||
typedef void (APIENTRY PFNGLDRAWARRAYSINDIRECT_PROC (GLenum mode, const void * indirect));
|
||||
|
@ -1435,6 +1475,7 @@ GLAPI PFNGLDRAWELEMENTSINDIRECT_PROC* glpfDrawElementsIndirect;
|
|||
#define glDrawArraysIndirect glpfDrawArraysIndirect
|
||||
#define glDrawElementsIndirect glpfDrawElementsIndirect
|
||||
|
||||
|
||||
/* GL_ARB_instanced_arrays */
|
||||
|
||||
typedef void (APIENTRY PFNGLVERTEXATTRIBDIVISORARB_PROC (GLuint index, GLuint divisor));
|
||||
|
@ -1443,6 +1484,7 @@ GLAPI PFNGLVERTEXATTRIBDIVISORARB_PROC* glpfVertexAttribDivisorARB;
|
|||
|
||||
#define glVertexAttribDivisorARB glpfVertexAttribDivisorARB
|
||||
|
||||
|
||||
/* GL_ARB_multi_draw_indirect */
|
||||
|
||||
typedef void (APIENTRY PFNGLMULTIDRAWARRAYSINDIRECT_PROC (GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride));
|
||||
|
@ -1454,6 +1496,7 @@ GLAPI PFNGLMULTIDRAWELEMENTSINDIRECT_PROC* glpfMultiDrawElementsIndirect;
|
|||
#define glMultiDrawArraysIndirect glpfMultiDrawArraysIndirect
|
||||
#define glMultiDrawElementsIndirect glpfMultiDrawElementsIndirect
|
||||
|
||||
|
||||
/* GL_ARB_shader_image_load_store */
|
||||
|
||||
typedef void (APIENTRY PFNGLBINDIMAGETEXTURE_PROC (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format));
|
||||
|
@ -1465,6 +1508,7 @@ GLAPI PFNGLMEMORYBARRIER_PROC* glpfMemoryBarrier;
|
|||
#define glBindImageTexture glpfBindImageTexture
|
||||
#define glMemoryBarrier glpfMemoryBarrier
|
||||
|
||||
|
||||
/* GL_ARB_shader_storage_buffer_object */
|
||||
|
||||
typedef void (APIENTRY PFNGLSHADERSTORAGEBLOCKBINDING_PROC (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding));
|
||||
|
@ -1473,6 +1517,7 @@ GLAPI PFNGLSHADERSTORAGEBLOCKBINDING_PROC* glpfShaderStorageBlockBinding;
|
|||
|
||||
#define glShaderStorageBlockBinding glpfShaderStorageBlockBinding
|
||||
|
||||
|
||||
/* GL_ARB_transform_feedback2 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBINDTRANSFORMFEEDBACK_PROC (GLenum target, GLuint id));
|
||||
|
@ -1499,6 +1544,7 @@ GLAPI PFNGLRESUMETRANSFORMFEEDBACK_PROC* glpfResumeTransformFeedback;
|
|||
#define glPauseTransformFeedback glpfPauseTransformFeedback
|
||||
#define glResumeTransformFeedback glpfResumeTransformFeedback
|
||||
|
||||
|
||||
/* GL_VERSION_1_0 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBLENDFUNC_PROC (GLenum sfactor, GLenum dfactor));
|
||||
|
@ -1648,6 +1694,7 @@ GLAPI PFNGLVIEWPORT_PROC* glpfViewport;
|
|||
#define glTexParameteriv glpfTexParameteriv
|
||||
#define glViewport glpfViewport
|
||||
|
||||
|
||||
/* GL_VERSION_1_1 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBINDTEXTURE_PROC (GLenum target, GLuint texture));
|
||||
|
@ -1692,6 +1739,7 @@ GLAPI PFNGLTEXSUBIMAGE2D_PROC* glpfTexSubImage2D;
|
|||
#define glTexSubImage1D glpfTexSubImage1D
|
||||
#define glTexSubImage2D glpfTexSubImage2D
|
||||
|
||||
|
||||
/* GL_VERSION_1_2 */
|
||||
|
||||
typedef void (APIENTRY PFNGLCOPYTEXSUBIMAGE3D_PROC (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height));
|
||||
|
@ -1709,6 +1757,7 @@ GLAPI PFNGLTEXSUBIMAGE3D_PROC* glpfTexSubImage3D;
|
|||
#define glTexImage3D glpfTexImage3D
|
||||
#define glTexSubImage3D glpfTexSubImage3D
|
||||
|
||||
|
||||
/* GL_VERSION_1_3 */
|
||||
|
||||
typedef void (APIENTRY PFNGLACTIVETEXTURE_PROC (GLenum texture));
|
||||
|
@ -1741,6 +1790,7 @@ GLAPI PFNGLSAMPLECOVERAGE_PROC* glpfSampleCoverage;
|
|||
#define glGetCompressedTexImage glpfGetCompressedTexImage
|
||||
#define glSampleCoverage glpfSampleCoverage
|
||||
|
||||
|
||||
/* GL_VERSION_1_4 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBLENDCOLOR_PROC (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha));
|
||||
|
@ -1773,6 +1823,7 @@ GLAPI PFNGLPOINTPARAMETERIV_PROC* glpfPointParameteriv;
|
|||
#define glPointParameteri glpfPointParameteri
|
||||
#define glPointParameteriv glpfPointParameteriv
|
||||
|
||||
|
||||
/* GL_VERSION_1_5 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBEGINQUERY_PROC (GLenum target, GLuint id));
|
||||
|
@ -1835,6 +1886,7 @@ GLAPI PFNGLUNMAPBUFFER_PROC* glpfUnmapBuffer;
|
|||
#define glMapBuffer glpfMapBuffer
|
||||
#define glUnmapBuffer glpfUnmapBuffer
|
||||
|
||||
|
||||
/* GL_VERSION_2_0 */
|
||||
|
||||
typedef void (APIENTRY PFNGLATTACHSHADER_PROC (GLuint program, GLuint shader));
|
||||
|
@ -2119,6 +2171,7 @@ GLAPI PFNGLVERTEXATTRIBPOINTER_PROC* glpfVertexAttribPointer;
|
|||
#define glVertexAttrib4usv glpfVertexAttrib4usv
|
||||
#define glVertexAttribPointer glpfVertexAttribPointer
|
||||
|
||||
|
||||
/* GL_VERSION_2_1 */
|
||||
|
||||
typedef void (APIENTRY PFNGLUNIFORMMATRIX2X3FV_PROC (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value));
|
||||
|
@ -2142,6 +2195,7 @@ GLAPI PFNGLUNIFORMMATRIX4X3FV_PROC* glpfUniformMatrix4x3fv;
|
|||
#define glUniformMatrix4x2fv glpfUniformMatrix4x2fv
|
||||
#define glUniformMatrix4x3fv glpfUniformMatrix4x3fv
|
||||
|
||||
|
||||
/* GL_VERSION_3_0 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBEGINCONDITIONALRENDER_PROC (GLuint id, GLenum mode));
|
||||
|
@ -2399,6 +2453,7 @@ GLAPI PFNGLVERTEXATTRIBIPOINTER_PROC* glpfVertexAttribIPointer;
|
|||
#define glVertexAttribI4usv glpfVertexAttribI4usv
|
||||
#define glVertexAttribIPointer glpfVertexAttribIPointer
|
||||
|
||||
|
||||
/* GL_VERSION_3_1 */
|
||||
|
||||
typedef void (APIENTRY PFNGLCOPYBUFFERSUBDATA_PROC (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size));
|
||||
|
@ -2440,6 +2495,7 @@ GLAPI PFNGLUNIFORMBLOCKBINDING_PROC* glpfUniformBlockBinding;
|
|||
#define glTexBuffer glpfTexBuffer
|
||||
#define glUniformBlockBinding glpfUniformBlockBinding
|
||||
|
||||
|
||||
/* GL_VERSION_3_2 */
|
||||
|
||||
typedef GLenum (APIENTRY PFNGLCLIENTWAITSYNC_PROC (GLsync sync, GLbitfield flags, GLuint64 timeout));
|
||||
|
@ -2502,6 +2558,7 @@ GLAPI PFNGLWAITSYNC_PROC* glpfWaitSync;
|
|||
#define glTexImage3DMultisample glpfTexImage3DMultisample
|
||||
#define glWaitSync glpfWaitSync
|
||||
|
||||
|
||||
/* GL_VERSION_3_3 */
|
||||
|
||||
typedef void (APIENTRY PFNGLBINDFRAGDATALOCATIONINDEXED_PROC (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name));
|
||||
|
@ -2591,7 +2648,8 @@ GLAPI PFNGLVERTEXATTRIBP4UIV_PROC* glpfVertexAttribP4uiv;
|
|||
#define glVertexAttribP4ui glpfVertexAttribP4ui
|
||||
#define glVertexAttribP4uiv glpfVertexAttribP4uiv
|
||||
|
||||
/* -------------------------- CATEGORY DEFINES ----------------------------- */
|
||||
|
||||
/* --------------------------- CATEGORY DEFINES ------------------------------ */
|
||||
|
||||
#define GL_ARB_buffer_storage
|
||||
#define GL_ARB_compute_shader
|
||||
|
@ -2616,7 +2674,8 @@ GLAPI PFNGLVERTEXATTRIBP4UIV_PROC* glpfVertexAttribP4uiv;
|
|||
#define GL_VERSION_3_2
|
||||
#define GL_VERSION_3_3
|
||||
|
||||
/* --------------------- FLAGS FOR OPTIONAL EXTENSIONS --------------------- */
|
||||
/* ---------------------- Flags for optional extensions ---------------------- */
|
||||
|
||||
|
||||
extern int FLEXT_ARB_debug_output;
|
||||
extern int FLEXT_ARB_direct_state_access;
|
||||
|
@ -2639,4 +2698,4 @@ int flextInit(void);
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif /* _gl_h_ */
|
||||
|
|
|
@ -1,57 +1,49 @@
|
|||
@require(passthru, functions, enums, options, version, extensions, args)
|
||||
/*
|
||||
This file was generated using https://github.com/mosra/flextgl:
|
||||
|
||||
path/to/flextGLgen.py @args
|
||||
|
||||
Do not edit directly, modify the template or profile and regenerate.
|
||||
*/
|
||||
@require(passthru, functions, enums, options, version, extensions)
|
||||
/* WARNING: This file was automatically generated */
|
||||
/* Do not edit. */
|
||||
|
||||
#include "flextGL.h"
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void flextLoadOpenGLFunctions(void) {
|
||||
@for category,funcs in functions:
|
||||
@if funcs:
|
||||
@if category not in ['VERSION_1_0_DEPRECATED', 'VERSION_1_1_DEPRECATED']:
|
||||
/* GL_@category */
|
||||
@for f in funcs:
|
||||
glpf@f.name = (PFNGL@f.name.upper()_PROC*)SDL_GL_GetProcAddress("gl@f.name");
|
||||
@end
|
||||
|
||||
@end
|
||||
@end
|
||||
@end
|
||||
}
|
||||
void flextLoadOpenGLFunctions(void);
|
||||
|
||||
int flextInit(void) {
|
||||
/**
|
||||
* \return -1 on error, 0 on success
|
||||
* \sa SDL_GetError
|
||||
*/
|
||||
int flextInit(void)
|
||||
{
|
||||
@if version.int_value() >= 32 and not version.profile == 'core':
|
||||
GLint profile;
|
||||
@end
|
||||
int major;
|
||||
int minor;
|
||||
|
||||
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major);
|
||||
SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor);
|
||||
|
||||
flextLoadOpenGLFunctions();
|
||||
|
||||
/* Check for minimal version and profile */
|
||||
/* --- Check for minimal version and profile --- */
|
||||
|
||||
if (major * 10 + minor < @version.int_value()!s) {
|
||||
return SDL_SetError("OpenGL context hasn't the expected version @version.major!s.@version.minor!s.");
|
||||
}
|
||||
@if version.int_value() >= 32 and not version.profile == 'core':
|
||||
|
||||
GLint profile;
|
||||
@if version.int_value() >= 32 and not version.profile == 'core':
|
||||
glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &profile);
|
||||
|
||||
if ((profile & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) == 0) {
|
||||
return SDL_SetError("This application requires a compatibility profile");
|
||||
}
|
||||
@end
|
||||
|
||||
@if extensions:
|
||||
/* --- Check for extensions --- */
|
||||
|
||||
@for extension,required in extensions:
|
||||
|
@ -64,23 +56,35 @@ int flextInit(void) {
|
|||
FLEXT_@extension = GL_TRUE;
|
||||
}
|
||||
@end
|
||||
@end
|
||||
|
||||
@end
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@if extensions:
|
||||
/* Extension flag definitions */
|
||||
void flextLoadOpenGLFunctions(void)
|
||||
{
|
||||
/* --- Function pointer loading --- */
|
||||
|
||||
@for category,funcs in functions:
|
||||
/* GL_@category */
|
||||
|
||||
@for f in funcs:
|
||||
glpf@f.name = (PFNGL@f.name.upper()_PROC*)SDL_GL_GetProcAddress("gl@f.name");
|
||||
@end
|
||||
|
||||
@end
|
||||
}
|
||||
|
||||
/* ----------------------- Extension flag definitions ---------------------- */
|
||||
@for extension,required in extensions:
|
||||
int FLEXT_@extension = GL_FALSE;
|
||||
@end
|
||||
|
||||
@end
|
||||
/* Function pointer definitions */
|
||||
/* ---------------------- Function pointer definitions --------------------- */
|
||||
|
||||
@for category,funcs in functions:
|
||||
@if len(funcs) > 0 and category not in ['VERSION_1_0_DEPRECATED', 'VERSION_1_1_DEPRECATED' ]:
|
||||
@if len(funcs) > 0:
|
||||
/* GL_@category */
|
||||
|
||||
@for f in funcs:
|
||||
|
@ -89,6 +93,7 @@ PFNGL@f.name.upper()_PROC* glpf@f.name = NULL;
|
|||
|
||||
@end
|
||||
@end
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
@require(passthru, functions, enums, options, version, extensions, args)
|
||||
@require(passthru, functions, enums, options, version, extensions)
|
||||
/* WARNING: This file was automatically generated */
|
||||
/* Do not edit. */
|
||||
|
||||
#ifndef __gl_h_
|
||||
#define __gl_h_
|
||||
/*
|
||||
This file was generated using https://github.com/mosra/flextgl:
|
||||
|
||||
path/to/flextGLgen.py @args
|
||||
|
||||
Do not edit directly, modify the template or profile and regenerate.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -33,27 +29,20 @@ extern "C" {
|
|||
#define GLAPI extern
|
||||
#endif
|
||||
|
||||
/* ------------------------------- DATA TYPES ------------------------------ */
|
||||
|
||||
#include <KHR/khrplatform.h>
|
||||
/* -------------------------------- DATA TYPES ------------------------------- */
|
||||
|
||||
@passthru
|
||||
|
||||
/* ---------------------------------- ENUMS -------------------------------- */
|
||||
/* ----------------------------------- ENUMS --------------------------------- */
|
||||
|
||||
@enums
|
||||
|
||||
/* -------------------------- FUNCTION PROTOTYPES -------------------------- */
|
||||
/* --------------------------- FUNCTION PROTOTYPES --------------------------- */
|
||||
|
||||
@for cat,funcs in functions:
|
||||
@if funcs:
|
||||
|
||||
/* GL_@cat */
|
||||
|
||||
@if cat in ['VERSION_1_0_DEPRECATED', 'VERSION_1_1_DEPRECATED']:
|
||||
@for f in funcs:
|
||||
GLAPI @f.returntype APIENTRY gl@f.name (@f.param_list_string());
|
||||
@end
|
||||
@else:
|
||||
@for f in funcs:
|
||||
typedef @f.returntype (APIENTRY PFNGL@f.name.upper()_PROC (@f.param_list_string()));
|
||||
@end
|
||||
|
@ -65,24 +54,22 @@ GLAPI PFNGL@f.name.upper()_PROC* glpf@f.name;
|
|||
@for f in funcs:
|
||||
#define gl@f.name glpf@f.name
|
||||
@end
|
||||
@end
|
||||
|
||||
@end
|
||||
@end
|
||||
/* -------------------------- CATEGORY DEFINES ----------------------------- */
|
||||
|
||||
/* --------------------------- CATEGORY DEFINES ------------------------------ */
|
||||
|
||||
@for cat,funcs in functions:
|
||||
#define GL_@cat
|
||||
@end
|
||||
|
||||
@if extensions:
|
||||
/* --------------------- FLAGS FOR OPTIONAL EXTENSIONS --------------------- */
|
||||
/* ---------------------- Flags for optional extensions ---------------------- */
|
||||
|
||||
|
||||
@for extension,required in extensions:
|
||||
extern int FLEXT_@extension;
|
||||
@end
|
||||
|
||||
@end
|
||||
int flextInit(void);
|
||||
|
||||
#define FLEXT_MAJOR_VERSION @version.major!s
|
||||
|
@ -97,4 +84,4 @@ int flextInit(void);
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif /* _gl_h_ */
|
||||
|
|
Loading…
Reference in New Issue