forked from Ports/perfect_dark
port: more GL error checking
This commit is contained in:
1 parent
85b2ba5f77
commit
c4e0e4f868
3 files changed
+373
-10
No files matched your search
+105
-2
@@ -824,13 +824,116 @@ static void gfx_opengl_enable_debug(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static bool gfx_opengl_supports_framebuffers(void) {
|
||||
if (GLVersion.major > 2) {
|
||||
// GL3.0+ supports everything we need, but we'll still check it for sanity
|
||||
return (glad_glFramebufferRenderbuffer && glad_glBlitFramebuffer && glad_glRenderbufferStorageMultisample);
|
||||
}
|
||||
if (GLAD_GL_ARB_framebuffer_object) {
|
||||
// some implementations might be missing these
|
||||
return (glad_glBlitFramebuffer && glad_glRenderbufferStorageMultisample);
|
||||
}
|
||||
if (GLAD_GL_EXT_framebuffer_object && GLAD_GL_EXT_framebuffer_blit && GLAD_GL_EXT_framebuffer_multisample) {
|
||||
// because of the way glad works we'll have to copy the pointers over
|
||||
glad_glGenFramebuffers = glad_glGenFramebuffersEXT;
|
||||
glad_glGenRenderbuffers = glad_glGenRenderbuffersEXT;
|
||||
glad_glDeleteFramebuffers = glad_glDeleteFramebuffersEXT;
|
||||
glad_glDeleteRenderbuffers = glad_glDeleteRenderbuffersEXT;
|
||||
glad_glBindFramebuffer = glad_glBindFramebufferEXT;
|
||||
glad_glBindRenderbuffer = glad_glBindRenderbufferEXT;
|
||||
glad_glFramebufferRenderbuffer = glad_glFramebufferRenderbufferEXT;
|
||||
glad_glFramebufferTexture2D = glad_glFramebufferTexture2DEXT;
|
||||
glad_glRenderbufferStorage = glad_glRenderbufferStorageEXT;
|
||||
glad_glRenderbufferStorageMultisample = glad_glRenderbufferStorageMultisampleEXT;
|
||||
glad_glBlitFramebuffer = glad_glBlitFramebufferEXT;
|
||||
// sanity check
|
||||
return (glad_glFramebufferRenderbuffer && glad_glBlitFramebuffer && glad_glRenderbufferStorageMultisample);
|
||||
}
|
||||
// nothing
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool gfx_opengl_supports_shaders(void) {
|
||||
if (GLVersion.major > 2) {
|
||||
// should support GLSL130+
|
||||
return true;
|
||||
}
|
||||
|
||||
// check supported GLSL version
|
||||
const char *ver = (const char *)glGetString(GL_SHADING_LANGUAGE_VERSION);
|
||||
if (ver) {
|
||||
int maj = 0, min = 0;
|
||||
sscanf(ver, "%d.%d", &maj, &min);
|
||||
if (maj > 1 || (maj == 1 && min > 20)) {
|
||||
// above 120, should be fine
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// check for extension that adds textureSize
|
||||
return GLAD_GL_EXT_gpu_shader4;
|
||||
}
|
||||
|
||||
static void gfx_opengl_log_info(void) {
|
||||
const char *version = (const char *)glGetString(GL_VERSION);
|
||||
const char *vendor = (const char *)glGetString(GL_VENDOR);
|
||||
const char *renderer = (const char *)glGetString(GL_RENDERER);
|
||||
const char *glsl_version = (const char *)glGetString(GL_SHADING_LANGUAGE_VERSION);
|
||||
sysLogPrintf(LOG_NOTE, "GL: version: %s", version ? version : "unknown");
|
||||
sysLogPrintf(LOG_NOTE, "GL: vendor: %s", vendor ? vendor : "unknown");
|
||||
sysLogPrintf(LOG_NOTE, "GL: renderer: %s", renderer ? renderer : "unknown");
|
||||
sysLogPrintf(LOG_NOTE, "GL: GLSL version: %s", glsl_version ? glsl_version : "unknown");
|
||||
sysLogPrintf(LOG_NOTE, "GL: ARB_framebuffer_object: %s", gfx_opengl_supports_framebuffers() ? "yes" : "no");
|
||||
sysLogPrintf(LOG_NOTE, "GL: ARB_depth_clamp: %s", GLAD_GL_ARB_depth_clamp ? "yes" : "no");
|
||||
}
|
||||
|
||||
static void *gl_load_proc(const char *name) {
|
||||
void *ret = SDL_GL_GetProcAddress(name);
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// try with postfixes
|
||||
static const char *post[] = { "ARB", "EXT" };
|
||||
char tmp[256] = { 0 };
|
||||
for (size_t i = 0; i < sizeof(post) / sizeof(*post); ++i) {
|
||||
snprintf(tmp, sizeof(tmp), "%s%s", name, post[i]);
|
||||
ret = SDL_GL_GetProcAddress(tmp);
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
sysLogPrintf(LOG_ERROR, "GL: could not find function: %s", name);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void gfx_opengl_init(void) {
|
||||
if (!gladLoadGLLoader(SDL_GL_GetProcAddress)) {
|
||||
sysFatalError("Could not load OpenGL. Ensure your GPU supports at least OpenGL 2.1.");
|
||||
if (!gladLoadGLLoader(gl_load_proc) || glGetString == NULL || glEnable == NULL) {
|
||||
sysFatalError("Could not load OpenGL.\nReported SDL error: %s", SDL_GetError());
|
||||
}
|
||||
|
||||
if (sysArgCheck("--debug-gl")) {
|
||||
gfx_opengl_enable_debug();
|
||||
// dump version info as early as possible
|
||||
gfx_opengl_log_info();
|
||||
}
|
||||
|
||||
if (GLVersion.major < 2 || (GLVersion.major == 2 && GLVersion.minor < 1)) {
|
||||
const char *ver = (const char *)glGetString(GL_VERSION);
|
||||
sysFatalError("Could not load OpenGL 2.1.\nReported version: %d.%d (%s)",
|
||||
GLVersion.major, GLVersion.minor, ver ? ver : "unknown");
|
||||
}
|
||||
|
||||
if (!gfx_opengl_supports_shaders()) {
|
||||
sysLogPrintf(LOG_WARNING, "GL: GLSL 1.30 unsupported");
|
||||
// maybe replace this with sysFatalError, though the GLSL compiler will cause that later anyway
|
||||
}
|
||||
|
||||
if (!gfx_opengl_supports_framebuffers()) {
|
||||
sysLogPrintf(LOG_WARNING, "GL: GL_ARB_framebuffer_object unsupported, framebuffer effects will be broken");
|
||||
// TODO: actually disable fb usage
|
||||
}
|
||||
|
||||
glGenBuffers(1, &opengl_vbo);
|
||||
|
||||
+100
-4
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
OpenGL loader generated by glad 0.1.34 on Sat Sep 23 22:18:32 2023.
|
||||
OpenGL loader generated by glad 0.1.34 on Tue Sep 26 12:26:06 2023.
|
||||
|
||||
Language/Generator: C/C++
|
||||
Specification: gl
|
||||
@@ -9,17 +9,21 @@
|
||||
Extensions:
|
||||
GL_ARB_depth_clamp,
|
||||
GL_ARB_framebuffer_object,
|
||||
GL_EXT_framebuffer_blit,
|
||||
GL_EXT_framebuffer_multisample,
|
||||
GL_EXT_framebuffer_object,
|
||||
GL_KHR_debug
|
||||
GL_EXT_gpu_shader4,
|
||||
GL_KHR_debug,
|
||||
GL_NV_depth_clamp
|
||||
Loader: True
|
||||
Local files: True
|
||||
Omit khrplatform: False
|
||||
Reproducible: False
|
||||
|
||||
Commandline:
|
||||
--profile="compatibility" --api="gl=2.1" --generator="c" --spec="gl" --local-files --extensions="GL_ARB_depth_clamp,GL_ARB_framebuffer_object,GL_EXT_framebuffer_object,GL_KHR_debug"
|
||||
--profile="compatibility" --api="gl=2.1" --generator="c" --spec="gl" --local-files --extensions="GL_ARB_depth_clamp,GL_ARB_framebuffer_object,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_object,GL_EXT_gpu_shader4,GL_KHR_debug,GL_NV_depth_clamp"
|
||||
Online:
|
||||
https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D2.1&extensions=GL_ARB_depth_clamp&extensions=GL_ARB_framebuffer_object&extensions=GL_EXT_framebuffer_object&extensions=GL_KHR_debug
|
||||
https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D2.1&extensions=GL_ARB_depth_clamp&extensions=GL_ARB_framebuffer_object&extensions=GL_EXT_framebuffer_blit&extensions=GL_EXT_framebuffer_multisample&extensions=GL_EXT_framebuffer_object&extensions=GL_EXT_gpu_shader4&extensions=GL_KHR_debug&extensions=GL_NV_depth_clamp
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -819,8 +823,12 @@ PFNGLWINDOWPOS3SPROC glad_glWindowPos3s = NULL;
|
||||
PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv = NULL;
|
||||
int GLAD_GL_ARB_depth_clamp = 0;
|
||||
int GLAD_GL_ARB_framebuffer_object = 0;
|
||||
int GLAD_GL_EXT_framebuffer_blit = 0;
|
||||
int GLAD_GL_EXT_framebuffer_multisample = 0;
|
||||
int GLAD_GL_EXT_framebuffer_object = 0;
|
||||
int GLAD_GL_EXT_gpu_shader4 = 0;
|
||||
int GLAD_GL_KHR_debug = 0;
|
||||
int GLAD_GL_NV_depth_clamp = 0;
|
||||
PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL;
|
||||
PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL;
|
||||
PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL;
|
||||
@@ -841,6 +849,8 @@ PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL;
|
||||
PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL;
|
||||
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL;
|
||||
PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL;
|
||||
PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT = NULL;
|
||||
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT = NULL;
|
||||
PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT = NULL;
|
||||
PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT = NULL;
|
||||
PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT = NULL;
|
||||
@@ -858,6 +868,40 @@ PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT = NULL;
|
||||
PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT = NULL;
|
||||
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT = NULL;
|
||||
PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT = NULL;
|
||||
PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT = NULL;
|
||||
PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT = NULL;
|
||||
PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT = NULL;
|
||||
PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT = NULL;
|
||||
PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT = NULL;
|
||||
PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT = NULL;
|
||||
PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT = NULL;
|
||||
PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT = NULL;
|
||||
PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT = NULL;
|
||||
PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT = NULL;
|
||||
PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT = NULL;
|
||||
PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT = NULL;
|
||||
PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT = NULL;
|
||||
PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT = NULL;
|
||||
PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT = NULL;
|
||||
PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl = NULL;
|
||||
PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert = NULL;
|
||||
PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback = NULL;
|
||||
@@ -1477,6 +1521,14 @@ static void load_GL_ARB_framebuffer_object(GLADloadproc load) {
|
||||
glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample");
|
||||
glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer");
|
||||
}
|
||||
static void load_GL_EXT_framebuffer_blit(GLADloadproc load) {
|
||||
if(!GLAD_GL_EXT_framebuffer_blit) return;
|
||||
glad_glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)load("glBlitFramebufferEXT");
|
||||
}
|
||||
static void load_GL_EXT_framebuffer_multisample(GLADloadproc load) {
|
||||
if(!GLAD_GL_EXT_framebuffer_multisample) return;
|
||||
glad_glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glRenderbufferStorageMultisampleEXT");
|
||||
}
|
||||
static void load_GL_EXT_framebuffer_object(GLADloadproc load) {
|
||||
if(!GLAD_GL_EXT_framebuffer_object) return;
|
||||
glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT");
|
||||
@@ -1497,6 +1549,43 @@ static void load_GL_EXT_framebuffer_object(GLADloadproc load) {
|
||||
glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT");
|
||||
glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT");
|
||||
}
|
||||
static void load_GL_EXT_gpu_shader4(GLADloadproc load) {
|
||||
if(!GLAD_GL_EXT_gpu_shader4) return;
|
||||
glad_glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)load("glGetUniformuivEXT");
|
||||
glad_glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)load("glBindFragDataLocationEXT");
|
||||
glad_glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)load("glGetFragDataLocationEXT");
|
||||
glad_glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)load("glUniform1uiEXT");
|
||||
glad_glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)load("glUniform2uiEXT");
|
||||
glad_glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)load("glUniform3uiEXT");
|
||||
glad_glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)load("glUniform4uiEXT");
|
||||
glad_glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)load("glUniform1uivEXT");
|
||||
glad_glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)load("glUniform2uivEXT");
|
||||
glad_glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)load("glUniform3uivEXT");
|
||||
glad_glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)load("glUniform4uivEXT");
|
||||
glad_glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)load("glVertexAttribI1iEXT");
|
||||
glad_glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)load("glVertexAttribI2iEXT");
|
||||
glad_glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)load("glVertexAttribI3iEXT");
|
||||
glad_glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)load("glVertexAttribI4iEXT");
|
||||
glad_glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)load("glVertexAttribI1uiEXT");
|
||||
glad_glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)load("glVertexAttribI2uiEXT");
|
||||
glad_glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)load("glVertexAttribI3uiEXT");
|
||||
glad_glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)load("glVertexAttribI4uiEXT");
|
||||
glad_glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)load("glVertexAttribI1ivEXT");
|
||||
glad_glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)load("glVertexAttribI2ivEXT");
|
||||
glad_glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)load("glVertexAttribI3ivEXT");
|
||||
glad_glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)load("glVertexAttribI4ivEXT");
|
||||
glad_glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)load("glVertexAttribI1uivEXT");
|
||||
glad_glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)load("glVertexAttribI2uivEXT");
|
||||
glad_glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)load("glVertexAttribI3uivEXT");
|
||||
glad_glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)load("glVertexAttribI4uivEXT");
|
||||
glad_glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)load("glVertexAttribI4bvEXT");
|
||||
glad_glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)load("glVertexAttribI4svEXT");
|
||||
glad_glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)load("glVertexAttribI4ubvEXT");
|
||||
glad_glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)load("glVertexAttribI4usvEXT");
|
||||
glad_glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)load("glVertexAttribIPointerEXT");
|
||||
glad_glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)load("glGetVertexAttribIivEXT");
|
||||
glad_glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)load("glGetVertexAttribIuivEXT");
|
||||
}
|
||||
static void load_GL_KHR_debug(GLADloadproc load) {
|
||||
if(!GLAD_GL_KHR_debug) return;
|
||||
glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl");
|
||||
@@ -1526,8 +1615,12 @@ static int find_extensionsGL(void) {
|
||||
if (!get_exts()) return 0;
|
||||
GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp");
|
||||
GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object");
|
||||
GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit");
|
||||
GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample");
|
||||
GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object");
|
||||
GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4");
|
||||
GLAD_GL_KHR_debug = has_ext("GL_KHR_debug");
|
||||
GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp");
|
||||
free_exts();
|
||||
return 1;
|
||||
}
|
||||
@@ -1599,7 +1692,10 @@ int gladLoadGLLoader(GLADloadproc load) {
|
||||
|
||||
if (!find_extensionsGL()) return 0;
|
||||
load_GL_ARB_framebuffer_object(load);
|
||||
load_GL_EXT_framebuffer_blit(load);
|
||||
load_GL_EXT_framebuffer_multisample(load);
|
||||
load_GL_EXT_framebuffer_object(load);
|
||||
load_GL_EXT_gpu_shader4(load);
|
||||
load_GL_KHR_debug(load);
|
||||
return GLVersion.major != 0 || GLVersion.minor != 0;
|
||||
}
|
||||
|
||||
+168
-4
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
OpenGL loader generated by glad 0.1.34 on Sat Sep 23 22:18:32 2023.
|
||||
OpenGL loader generated by glad 0.1.34 on Tue Sep 26 12:26:06 2023.
|
||||
|
||||
Language/Generator: C/C++
|
||||
Specification: gl
|
||||
@@ -9,17 +9,21 @@
|
||||
Extensions:
|
||||
GL_ARB_depth_clamp,
|
||||
GL_ARB_framebuffer_object,
|
||||
GL_EXT_framebuffer_blit,
|
||||
GL_EXT_framebuffer_multisample,
|
||||
GL_EXT_framebuffer_object,
|
||||
GL_KHR_debug
|
||||
GL_EXT_gpu_shader4,
|
||||
GL_KHR_debug,
|
||||
GL_NV_depth_clamp
|
||||
Loader: True
|
||||
Local files: True
|
||||
Omit khrplatform: False
|
||||
Reproducible: False
|
||||
|
||||
Commandline:
|
||||
--profile="compatibility" --api="gl=2.1" --generator="c" --spec="gl" --local-files --extensions="GL_ARB_depth_clamp,GL_ARB_framebuffer_object,GL_EXT_framebuffer_object,GL_KHR_debug"
|
||||
--profile="compatibility" --api="gl=2.1" --generator="c" --spec="gl" --local-files --extensions="GL_ARB_depth_clamp,GL_ARB_framebuffer_object,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_object,GL_EXT_gpu_shader4,GL_KHR_debug,GL_NV_depth_clamp"
|
||||
Online:
|
||||
https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D2.1&extensions=GL_ARB_depth_clamp&extensions=GL_ARB_framebuffer_object&extensions=GL_EXT_framebuffer_object&extensions=GL_KHR_debug
|
||||
https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D2.1&extensions=GL_ARB_depth_clamp&extensions=GL_ARB_framebuffer_object&extensions=GL_EXT_framebuffer_blit&extensions=GL_EXT_framebuffer_multisample&extensions=GL_EXT_framebuffer_object&extensions=GL_EXT_gpu_shader4&extensions=GL_KHR_debug&extensions=GL_NV_depth_clamp
|
||||
*/
|
||||
|
||||
|
||||
@@ -2767,6 +2771,13 @@ GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
|
||||
#define GL_MAX_SAMPLES 0x8D57
|
||||
#define GL_INDEX 0x8222
|
||||
#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
|
||||
#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
|
||||
#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6
|
||||
#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
|
||||
#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
|
||||
#define GL_MAX_SAMPLES_EXT 0x8D57
|
||||
#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
|
||||
#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
|
||||
#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6
|
||||
@@ -2818,6 +2829,34 @@ GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;
|
||||
#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53
|
||||
#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54
|
||||
#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55
|
||||
#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0
|
||||
#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1
|
||||
#define GL_SAMPLER_BUFFER_EXT 0x8DC2
|
||||
#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3
|
||||
#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4
|
||||
#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5
|
||||
#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6
|
||||
#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7
|
||||
#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8
|
||||
#define GL_INT_SAMPLER_1D_EXT 0x8DC9
|
||||
#define GL_INT_SAMPLER_2D_EXT 0x8DCA
|
||||
#define GL_INT_SAMPLER_3D_EXT 0x8DCB
|
||||
#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC
|
||||
#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD
|
||||
#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE
|
||||
#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF
|
||||
#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0
|
||||
#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1
|
||||
#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2
|
||||
#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3
|
||||
#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4
|
||||
#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5
|
||||
#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6
|
||||
#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7
|
||||
#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
|
||||
#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904
|
||||
#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD
|
||||
#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
|
||||
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
|
||||
#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
|
||||
@@ -2896,6 +2935,7 @@ GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;
|
||||
#define GL_STACK_OVERFLOW_KHR 0x0503
|
||||
#define GL_STACK_UNDERFLOW_KHR 0x0504
|
||||
#define GL_DISPLAY_LIST 0x82E7
|
||||
#define GL_DEPTH_CLAMP_NV 0x864F
|
||||
#ifndef GL_ARB_depth_clamp
|
||||
#define GL_ARB_depth_clamp 1
|
||||
GLAPI int GLAD_GL_ARB_depth_clamp;
|
||||
@@ -2964,6 +3004,20 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum
|
||||
GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer;
|
||||
#define glFramebufferTextureLayer glad_glFramebufferTextureLayer
|
||||
#endif
|
||||
#ifndef GL_EXT_framebuffer_blit
|
||||
#define GL_EXT_framebuffer_blit 1
|
||||
GLAPI int GLAD_GL_EXT_framebuffer_blit;
|
||||
typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
GLAPI PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT;
|
||||
#define glBlitFramebufferEXT glad_glBlitFramebufferEXT
|
||||
#endif
|
||||
#ifndef GL_EXT_framebuffer_multisample
|
||||
#define GL_EXT_framebuffer_multisample 1
|
||||
GLAPI int GLAD_GL_EXT_framebuffer_multisample;
|
||||
typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT;
|
||||
#define glRenderbufferStorageMultisampleEXT glad_glRenderbufferStorageMultisampleEXT
|
||||
#endif
|
||||
#ifndef GL_EXT_framebuffer_object
|
||||
#define GL_EXT_framebuffer_object 1
|
||||
GLAPI int GLAD_GL_EXT_framebuffer_object;
|
||||
@@ -3019,6 +3073,112 @@ typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC)(GLenum target);
|
||||
GLAPI PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT;
|
||||
#define glGenerateMipmapEXT glad_glGenerateMipmapEXT
|
||||
#endif
|
||||
#ifndef GL_EXT_gpu_shader4
|
||||
#define GL_EXT_gpu_shader4 1
|
||||
GLAPI int GLAD_GL_EXT_gpu_shader4;
|
||||
typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, GLuint *params);
|
||||
GLAPI PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT;
|
||||
#define glGetUniformuivEXT glad_glGetUniformuivEXT
|
||||
typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, const GLchar *name);
|
||||
GLAPI PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT;
|
||||
#define glBindFragDataLocationEXT glad_glBindFragDataLocationEXT
|
||||
typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar *name);
|
||||
GLAPI PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT;
|
||||
#define glGetFragDataLocationEXT glad_glGetFragDataLocationEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0);
|
||||
GLAPI PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT;
|
||||
#define glUniform1uiEXT glad_glUniform1uiEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1);
|
||||
GLAPI PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT;
|
||||
#define glUniform2uiEXT glad_glUniform2uiEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2);
|
||||
GLAPI PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT;
|
||||
#define glUniform3uiEXT glad_glUniform3uiEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
|
||||
GLAPI PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT;
|
||||
#define glUniform4uiEXT glad_glUniform4uiEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value);
|
||||
GLAPI PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT;
|
||||
#define glUniform1uivEXT glad_glUniform1uivEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value);
|
||||
GLAPI PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT;
|
||||
#define glUniform2uivEXT glad_glUniform2uivEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value);
|
||||
GLAPI PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT;
|
||||
#define glUniform3uivEXT glad_glUniform3uivEXT
|
||||
typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, const GLuint *value);
|
||||
GLAPI PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT;
|
||||
#define glUniform4uivEXT glad_glUniform4uivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x);
|
||||
GLAPI PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT;
|
||||
#define glVertexAttribI1iEXT glad_glVertexAttribI1iEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y);
|
||||
GLAPI PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT;
|
||||
#define glVertexAttribI2iEXT glad_glVertexAttribI2iEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z);
|
||||
GLAPI PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT;
|
||||
#define glVertexAttribI3iEXT glad_glVertexAttribI3iEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w);
|
||||
GLAPI PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT;
|
||||
#define glVertexAttribI4iEXT glad_glVertexAttribI4iEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x);
|
||||
GLAPI PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT;
|
||||
#define glVertexAttribI1uiEXT glad_glVertexAttribI1uiEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y);
|
||||
GLAPI PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT;
|
||||
#define glVertexAttribI2uiEXT glad_glVertexAttribI2uiEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z);
|
||||
GLAPI PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT;
|
||||
#define glVertexAttribI3uiEXT glad_glVertexAttribI3uiEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
|
||||
GLAPI PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT;
|
||||
#define glVertexAttribI4uiEXT glad_glVertexAttribI4uiEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT;
|
||||
#define glVertexAttribI1ivEXT glad_glVertexAttribI1ivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT;
|
||||
#define glVertexAttribI2ivEXT glad_glVertexAttribI2ivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT;
|
||||
#define glVertexAttribI3ivEXT glad_glVertexAttribI3ivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT;
|
||||
#define glVertexAttribI4ivEXT glad_glVertexAttribI4ivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT;
|
||||
#define glVertexAttribI1uivEXT glad_glVertexAttribI1uivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT;
|
||||
#define glVertexAttribI2uivEXT glad_glVertexAttribI2uivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT;
|
||||
#define glVertexAttribI3uivEXT glad_glVertexAttribI3uivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT;
|
||||
#define glVertexAttribI4uivEXT glad_glVertexAttribI4uivEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT;
|
||||
#define glVertexAttribI4bvEXT glad_glVertexAttribI4bvEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT;
|
||||
#define glVertexAttribI4svEXT glad_glVertexAttribI4svEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT;
|
||||
#define glVertexAttribI4ubvEXT glad_glVertexAttribI4ubvEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort *v);
|
||||
GLAPI PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT;
|
||||
#define glVertexAttribI4usvEXT glad_glVertexAttribI4usvEXT
|
||||
typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
|
||||
GLAPI PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT;
|
||||
#define glVertexAttribIPointerEXT glad_glVertexAttribIPointerEXT
|
||||
typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, GLint *params);
|
||||
GLAPI PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT;
|
||||
#define glGetVertexAttribIivEXT glad_glGetVertexAttribIivEXT
|
||||
typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, GLuint *params);
|
||||
GLAPI PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT;
|
||||
#define glGetVertexAttribIuivEXT glad_glGetVertexAttribIuivEXT
|
||||
#endif
|
||||
#ifndef GL_KHR_debug
|
||||
#define GL_KHR_debug 1
|
||||
GLAPI int GLAD_GL_KHR_debug;
|
||||
@@ -3086,6 +3246,10 @@ typedef void (APIENTRYP PFNGLGETPOINTERVKHRPROC)(GLenum pname, void **params);
|
||||
GLAPI PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR;
|
||||
#define glGetPointervKHR glad_glGetPointervKHR
|
||||
#endif
|
||||
#ifndef GL_NV_depth_clamp
|
||||
#define GL_NV_depth_clamp 1
|
||||
GLAPI int GLAD_GL_NV_depth_clamp;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user