blob: 33b60fd25ae9835a177e415d9672bbd384b30cc0 [file] [log] [blame] [edit]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "glad_custom.h"
int GLAD_GL_version_es = 1;
int GLAD_GL_version_major = 1;
int GLAD_GL_version_minor = 0;
static void load_Desktop_GL(GLADloadfunc load) {
if (GLAD_GL_version_es) return;
GLAD_GL_ANGLE_polygon_mode = 1;
glad_glPolygonModeANGLE = (PFNGLPOLYGONMODEANGLEPROC)load("glPolygonMode");
if (GLAD_IS_GL_VERSION_AT_LEAST(4, 2)) {
GLAD_GL_EXT_base_instance = 1;
glad_glDrawArraysInstancedBaseInstanceEXT = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC)load("glDrawArraysInstancedBaseInstance");
glad_glDrawElementsInstancedBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC)load("glDrawElementsInstancedBaseInstance");
glad_glDrawElementsInstancedBaseVertexBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC)load("glDrawElementsInstancedBaseVertexBaseInstance");
}
if (GLAD_IS_GL_VERSION_AT_LEAST(4, 6))
{
GLAD_GL_ANGLE_base_vertex_base_instance_shader_builtin = 1;
}
}
PFNGLFRAMEBUFFERMEMORYLESSPIXELLOCALSTORAGEANGLEPROC glad_glFramebufferMemorylessPixelLocalStorageANGLE = NULL;
PFNGLFRAMEBUFFERTEXTUREPIXELLOCALSTORAGEANGLEPROC glad_glFramebufferTexturePixelLocalStorageANGLE = NULL;
PFNGLFRAMEBUFFERPIXELLOCALCLEARVALUEFVANGLEPROC glad_glFramebufferPixelLocalClearValuefvANGLE = NULL;
PFNGLFRAMEBUFFERPIXELLOCALCLEARVALUEIVANGLEPROC glad_glFramebufferPixelLocalClearValueivANGLE = NULL;
PFNGLFRAMEBUFFERPIXELLOCALCLEARVALUEUIVANGLEPROC glad_glFramebufferPixelLocalClearValueuivANGLE = NULL;
PFNGLBEGINPIXELLOCALSTORAGEANGLEPROC glad_glBeginPixelLocalStorageANGLE = NULL;
PFNGLENDPIXELLOCALSTORAGEANGLEPROC glad_glEndPixelLocalStorageANGLE = NULL;
PFNGLPIXELLOCALSTORAGEBARRIERANGLEPROC glad_glPixelLocalStorageBarrierANGLE = NULL;
PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGEPARAMETERFVANGLEPROC glad_glGetFramebufferPixelLocalStorageParameterfvANGLE = NULL;
PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGEPARAMETERIVANGLEPROC glad_glGetFramebufferPixelLocalStorageParameterivANGLE = NULL;
PFNGLPOLYGONMODEANGLEPROC glad_glPolygonModeANGLE = NULL;
PFNGLPROVOKINGVERTEXANGLEPROC glad_glProvokingVertexANGLE = NULL;
/* #ifdef RIVE_DESKTOP_GL */
/* #endif */
int GLAD_GL_ANGLE_base_vertex_base_instance_shader_builtin = 0;
int GLAD_GL_ANGLE_shader_pixel_local_storage = 0;
int GLAD_GL_ANGLE_shader_pixel_local_storage_coherent = 0;
int GLAD_GL_ANGLE_polygon_mode = 0;
int GLAD_GL_ANGLE_provoking_vertex = 0;
static void load_GL_ANGLE_shader_pixel_local_storage(GLADloadfunc load) {
if(!GLAD_GL_ANGLE_shader_pixel_local_storage) return;
glad_glFramebufferMemorylessPixelLocalStorageANGLE = (PFNGLFRAMEBUFFERMEMORYLESSPIXELLOCALSTORAGEANGLEPROC)load("glFramebufferMemorylessPixelLocalStorageANGLE");
glad_glFramebufferTexturePixelLocalStorageANGLE = (PFNGLFRAMEBUFFERTEXTUREPIXELLOCALSTORAGEANGLEPROC)load("glFramebufferTexturePixelLocalStorageANGLE");
glad_glFramebufferPixelLocalClearValuefvANGLE = (PFNGLFRAMEBUFFERPIXELLOCALCLEARVALUEFVANGLEPROC)load("glFramebufferPixelLocalClearValuefvANGLE");
glad_glFramebufferPixelLocalClearValueivANGLE = (PFNGLFRAMEBUFFERPIXELLOCALCLEARVALUEIVANGLEPROC)load("glFramebufferPixelLocalClearValueivANGLE");
glad_glFramebufferPixelLocalClearValueuivANGLE = (PFNGLFRAMEBUFFERPIXELLOCALCLEARVALUEUIVANGLEPROC)load("glFramebufferPixelLocalClearValueuivANGLE");
glad_glBeginPixelLocalStorageANGLE = (PFNGLBEGINPIXELLOCALSTORAGEANGLEPROC)load("glBeginPixelLocalStorageANGLE");
glad_glEndPixelLocalStorageANGLE = (PFNGLENDPIXELLOCALSTORAGEANGLEPROC)load("glEndPixelLocalStorageANGLE");
glad_glPixelLocalStorageBarrierANGLE = (PFNGLPIXELLOCALSTORAGEBARRIERANGLEPROC)load("glPixelLocalStorageBarrierANGLE");
glad_glGetFramebufferPixelLocalStorageParameterfvANGLE = (PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGEPARAMETERFVANGLEPROC)load("glGetFramebufferPixelLocalStorageParameterfvANGLE");
glad_glGetFramebufferPixelLocalStorageParameterivANGLE = (PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGEPARAMETERIVANGLEPROC)load("glGetFramebufferPixelLocalStorageParameterivANGLE");
}
static void load_GL_ANGLE_polygon_mode(GLADloadfunc load) {
if(!GLAD_GL_ANGLE_polygon_mode) return;
glad_glPolygonModeANGLE = (PFNGLPOLYGONMODEANGLEPROC)load("glPolygonModeANGLE");
}
static void load_GL_ANGLE_provoking_vertex(GLADloadfunc load) {
if(!GLAD_GL_ANGLE_provoking_vertex) return;
glad_glProvokingVertexANGLE = (PFNGLPROVOKINGVERTEXANGLEPROC)load("glProvokingVertexANGLE");
}
int gladLoadCustomLoader(GLADloadfunc load) {
int ret = gladLoadGLES2(load);
const char* version = (const char*)glGetString(GL_VERSION);
GLAD_GL_version_es = strstr(version, "OpenGL ES") != NULL;
if (GLAD_GL_version_es)
{
#ifdef _MSC_VER
sscanf_s(version, "OpenGL ES %d.%d", &GLAD_GL_version_major, &GLAD_GL_version_minor);
#else
sscanf(version, "OpenGL ES %d.%d", &GLAD_GL_version_major, &GLAD_GL_version_minor);
#endif
}
else
{
#ifdef _MSC_VER
sscanf_s(version, "%d.%d", &GLAD_GL_version_major, &GLAD_GL_version_minor);
#else
sscanf(version, "%d.%d", &GLAD_GL_version_major, &GLAD_GL_version_minor);
#endif
}
GLint extensionCount;
glGetIntegerv(GL_NUM_EXTENSIONS, &extensionCount);
for (int i = 0; i < extensionCount; ++i)
{
const char* ext = (const char*)glGetStringi(GL_EXTENSIONS, i);
if (strcmp(ext, "GL_ANGLE_base_vertex_base_instance_shader_builtin") == 0)
{
GLAD_GL_ANGLE_base_vertex_base_instance_shader_builtin = 1;
}
if (strcmp(ext, "GL_ANGLE_shader_pixel_local_storage") == 0)
{
GLAD_GL_ANGLE_shader_pixel_local_storage = 1;
}
else if (strcmp(ext, "GL_ANGLE_shader_pixel_local_storage_coherent") == 0)
{
GLAD_GL_ANGLE_shader_pixel_local_storage_coherent = 1;
}
else if (strcmp(ext, "GL_ANGLE_polygon_mode") == 0)
{
GLAD_GL_ANGLE_polygon_mode = 1;
}
else if (strcmp(ext, "GL_ANGLE_provoking_vertex") == 0)
{
GLAD_GL_ANGLE_provoking_vertex = 1;
}
}
load_GL_ANGLE_shader_pixel_local_storage(load);
load_GL_ANGLE_polygon_mode(load);
load_GL_ANGLE_provoking_vertex(load);
load_Desktop_GL(load);
return ret;
}