From cac2a66debd0f2d3ef8195940f8e2744d539d19a Mon Sep 17 00:00:00 2001 From: raysan5 Date: Tue, 31 May 2016 17:11:02 +0200 Subject: [PATCH 1/9] Improved library consistency Functions renamed to improve library consistency --- examples/shaders_custom_uniform.c | 12 ++++++---- examples/shaders_postprocessing.c | 12 ++++++---- examples/shaders_shapes_textures.c | 18 +++++++-------- examples/textures_particles_trail_blending.c | 24 +++++++++++--------- src/raylib.h | 8 ++++--- src/rlgl.c | 18 ++++++++++----- src/rlgl.h | 9 +++++--- 7 files changed, 59 insertions(+), 42 deletions(-) diff --git a/examples/shaders_custom_uniform.c b/examples/shaders_custom_uniform.c index 740771439..516d5087c 100644 --- a/examples/shaders_custom_uniform.c +++ b/examples/shaders_custom_uniform.c @@ -33,7 +33,7 @@ int main() Camera camera = {{ 3.0f, 3.0f, 3.0f }, { 0.0f, 1.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f }; Model dwarf = LoadModel("resources/model/dwarf.obj"); // Load OBJ model - Texture2D texture = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model texture + Texture2D texture = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model texture (diffuse map) SetModelTexture(&dwarf, texture); // Bind texture to model Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position @@ -94,10 +94,12 @@ int main() EndTextureMode(); // End drawing to texture (now we have a texture available for next passes) - SetCustomShader(shader); - // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) - DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); - SetDefaultShader(); + BeginShaderMode(shader); + + // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) + DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); + + EndShaderMode(); DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, GRAY); diff --git a/examples/shaders_postprocessing.c b/examples/shaders_postprocessing.c index e9fafe158..5e8b5a804 100644 --- a/examples/shaders_postprocessing.c +++ b/examples/shaders_postprocessing.c @@ -33,7 +33,7 @@ int main() Camera camera = {{ 3.0f, 3.0f, 3.0f }, { 0.0f, 1.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f }; Model dwarf = LoadModel("resources/model/dwarf.obj"); // Load OBJ model - Texture2D texture = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model texture + Texture2D texture = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model texture (diffuse map) SetModelTexture(&dwarf, texture); // Bind texture to model Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position @@ -80,10 +80,12 @@ int main() EndTextureMode(); // End drawing to texture (now we have a texture available for next passes) - SetCustomShader(shader); - // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) - DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); - SetDefaultShader(); + BeginShaderMode(shader); + + // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) + DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); + + EndShaderMode(); DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, DARKGRAY); diff --git a/examples/shaders_shapes_textures.c b/examples/shaders_shapes_textures.c index 1b1142fa9..0a14469fc 100644 --- a/examples/shaders_shapes_textures.c +++ b/examples/shaders_shapes_textures.c @@ -65,16 +65,16 @@ int main() // Activate our custom shader to be applied on next shapes/textures drawings - SetCustomShader(shader); + BeginShaderMode(shader); - DrawText("USING CUSTOM SHADER", 190, 40, 10, RED); + DrawText("USING CUSTOM SHADER", 190, 40, 10, RED); - DrawRectangle(250 - 60, 90, 120, 60, RED); - DrawRectangleGradient(250 - 90, 170, 180, 130, MAROON, GOLD); - DrawRectangleLines(250 - 40, 320, 80, 60, ORANGE); + DrawRectangle(250 - 60, 90, 120, 60, RED); + DrawRectangleGradient(250 - 90, 170, 180, 130, MAROON, GOLD); + DrawRectangleLines(250 - 40, 320, 80, 60, ORANGE); // Activate our default shader for next drawings - SetDefaultShader(); + EndShaderMode(); DrawText("USING DEFAULT SHADER", 370, 40, 10, RED); @@ -89,12 +89,12 @@ int main() DrawPoly((Vector2){430, 320}, 6, 80, 0, BROWN); // Activate our custom shader to be applied on next shapes/textures drawings - SetCustomShader(shader); + BeginShaderMode(shader); - DrawTexture(sonic, 380, -10, WHITE); // Using custom shader + DrawTexture(sonic, 380, -10, WHITE); // Using custom shader // Activate our default shader for next drawings - SetDefaultShader(); + EndShaderMode(); EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/textures_particles_trail_blending.c b/examples/textures_particles_trail_blending.c index 76cd04234..0b47c790d 100644 --- a/examples/textures_particles_trail_blending.c +++ b/examples/textures_particles_trail_blending.c @@ -102,20 +102,22 @@ int main() ClearBackground(DARKGRAY); - SetBlendMode(blending); + BeginBlendMode(blending); - // Draw active particles - for (int i = 0; i < MAX_PARTICLES; i++) - { - if (mouseTail[i].active) DrawTexturePro(smoke, (Rectangle){ 0, 0, smoke.width, smoke.height }, - (Rectangle){ mouseTail[i].position.x, mouseTail[i].position.y, smoke.width*mouseTail[i].size, smoke.height*mouseTail[i].size }, - (Vector2){ smoke.width*mouseTail[i].size/2, smoke.height*mouseTail[i].size/2 }, mouseTail[i].rotation, - Fade(mouseTail[i].color, mouseTail[i].alpha)); - } + // Draw active particles + for (int i = 0; i < MAX_PARTICLES; i++) + { + if (mouseTail[i].active) DrawTexturePro(smoke, (Rectangle){ 0, 0, smoke.width, smoke.height }, + (Rectangle){ mouseTail[i].position.x, mouseTail[i].position.y, smoke.width*mouseTail[i].size, smoke.height*mouseTail[i].size }, + (Vector2){ smoke.width*mouseTail[i].size/2, smoke.height*mouseTail[i].size/2 }, mouseTail[i].rotation, + Fade(mouseTail[i].color, mouseTail[i].alpha)); + } - DrawText("PRESS SPACE to CHANGE BLENDING MODE", 180, 20, 20, RAYWHITE); + EndBlendMode(); - if (blending == BLEND_ALPHA) DrawText("ALPHA BLENDING", 290, screenHeight - 40, 20, RAYWHITE); + DrawText("PRESS SPACE to CHANGE BLENDING MODE", 180, 20, 20, BLACK); + + if (blending == BLEND_ALPHA) DrawText("ALPHA BLENDING", 290, screenHeight - 40, 20, BLACK); else DrawText("ADDITIVE BLENDING", 280, screenHeight - 40, 20, RAYWHITE); EndDrawing(); diff --git a/src/raylib.h b/src/raylib.h index cba73e526..5bef3698f 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -860,8 +860,7 @@ Vector3 ResolveCollisionCubicmap(Image cubicmap, Vector3 mapPosition, Vector3 *p //------------------------------------------------------------------------------------ Shader LoadShader(char *vsFileName, char *fsFileName); // Load a custom shader and bind default locations void UnloadShader(Shader shader); // Unload a custom shader from memory -void SetDefaultShader(void); // Set default shader to be used in batch draw -void SetCustomShader(Shader shader); // Set custom shader to be used in batch draw + Shader GetDefaultShader(void); // Get default shader Shader GetStandardShader(void); // Get default shader Texture2D GetDefaultTexture(void); // Get default texture @@ -871,7 +870,10 @@ void SetShaderValue(Shader shader, int uniformLoc, float *value, int size); // S void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size); // Set shader uniform value (int) void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat); // Set shader uniform value (matrix 4x4) -void SetBlendMode(int mode); // Set blending mode (alpha, additive, multiplied) +void BeginShaderMode(Shader shader); // Begin custom shader drawing +void EndShaderMode(void); // End custom shader drawing (use default shader) +void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied) +void EndBlendMode(void); // End blending mode (reset to default: alpha blending) Light CreateLight(int type, Vector3 position, Color diffuse); // Create a new light, initialize it and add to pool void DestroyLight(Light light); // Destroy a light and take it out of the list diff --git a/src/rlgl.c b/src/rlgl.c index 97a92a4dd..5c4c9c011 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -2157,7 +2157,7 @@ void UnloadShader(Shader shader) } // Set custom shader to be used on batch draw -void SetCustomShader(Shader shader) +void BeginShaderMode(Shader shader) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) if (currentShader.id != shader.id) @@ -2169,10 +2169,10 @@ void SetCustomShader(Shader shader) } // Set default shader to be used in batch draw -void SetDefaultShader(void) +void EndShaderMode(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - SetCustomShader(defaultShader); + BeginShaderMode(defaultShader); #endif } @@ -2254,9 +2254,9 @@ void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat) #endif } -// Set blending mode (alpha, additive, multiplied) -// NOTE: Only 3 blending modes predefined -void SetBlendMode(int mode) +// Begin blending mode (alpha, additive, multiplied) +// NOTE: Only 3 blending modes supported, default blend mode is alpha +void BeginBlendMode(int mode) { if ((blendMode != mode) && (mode < 3)) { @@ -2274,6 +2274,12 @@ void SetBlendMode(int mode) } } +// End blending mode (reset to default: alpha blending) +void EndBlendMode(void) +{ + BeginBlendMode(BLEND_ALPHA); +} + // Create a new light, initialize it and add to pool Light CreateLight(int type, Vector3 position, Color diffuse) { diff --git a/src/rlgl.h b/src/rlgl.h index 23ad29fb2..ccf2b36aa 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -317,9 +317,9 @@ void *rlglReadTexturePixels(Texture2D texture); // Read text //------------------------------------------------------------------------------------ Shader LoadShader(char *vsFileName, char *fsFileName); // Load a custom shader and bind default locations void UnloadShader(Shader shader); // Unload a custom shader from memory -void SetCustomShader(Shader shader); // Set custom shader to be used in batch draw -void SetDefaultShader(void); // Set default shader to be used in batch draw + Shader GetDefaultShader(void); // Get default shader +Shader GetStandardShader(void); // Get default shader Texture2D GetDefaultTexture(void); // Get default texture int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location @@ -327,7 +327,10 @@ void SetShaderValue(Shader shader, int uniformLoc, float *value, int size); // S void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size); // Set shader uniform value (int) void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat); // Set shader uniform value (matrix 4x4) -void SetBlendMode(int mode); // Set blending mode (alpha, additive, multiplied) +void BeginShaderMode(Shader shader); // Begin custom shader drawing +void EndShaderMode(void); // End custom shader drawing (use default shader) +void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied) +void EndBlendMode(void); // End blending mode (reset to default: alpha blending) Light CreateLight(int type, Vector3 position, Color diffuse); // Create a new light, initialize it and add to pool void DestroyLight(Light light); // Destroy a light and take it out of the list From 302ec438dd8a5483e4fcf81d4bd80ac7d09e6a61 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Tue, 31 May 2016 18:15:53 +0200 Subject: [PATCH 2/9] Removed colTint, tint color is colDiffuse Tint color could be applied to colDiffuse... but what's the best way? Replace it? Multiply by? A point to think about... --- .../resources/shaders/glsl330/grayscale.fs | 4 ++-- examples/resources/shaders/standard.fs | 7 +++---- examples/shaders_standard_lighting.c | 4 ++-- src/models.c | 5 ++--- src/raylib.h | 1 - src/rlgl.c | 3 --- src/rlgl.h | 21 +++++++++---------- 7 files changed, 19 insertions(+), 26 deletions(-) diff --git a/examples/resources/shaders/glsl330/grayscale.fs b/examples/resources/shaders/glsl330/grayscale.fs index d4a8824f6..5b3e11be6 100644 --- a/examples/resources/shaders/glsl330/grayscale.fs +++ b/examples/resources/shaders/glsl330/grayscale.fs @@ -6,7 +6,7 @@ in vec4 fragColor; // Input uniform values uniform sampler2D texture0; -uniform vec4 fragTintColor; +uniform vec4 colDiffuse; // Output fragment color out vec4 finalColor; @@ -16,7 +16,7 @@ out vec4 finalColor; void main() { // Texel color fetching from texture sampler - vec4 texelColor = texture(texture0, fragTexCoord)*fragTintColor*fragColor; + vec4 texelColor = texture(texture0, fragTexCoord)*colDiffuse*fragColor; // Convert texel color to grayscale using NTSC conversion weights float gray = dot(texelColor.rgb, vec3(0.299, 0.587, 0.114)); diff --git a/examples/resources/shaders/standard.fs b/examples/resources/shaders/standard.fs index bb9e6865a..e5916031b 100644 --- a/examples/resources/shaders/standard.fs +++ b/examples/resources/shaders/standard.fs @@ -11,7 +11,6 @@ uniform sampler2D texture0; uniform sampler2D texture1; uniform sampler2D texture2; -uniform vec4 colTint; uniform vec4 colAmbient; uniform vec4 colDiffuse; uniform vec4 colSpecular; @@ -55,7 +54,7 @@ vec3 CalcPointLight(Light l, vec3 n, vec3 v, float s) spec = pow(dot(n, h), 3 + glossiness)*s; } - return (diff*l.diffuse.rgb*colDiffuse.rgb + spec*colSpecular.rgb); + return (diff*l.diffuse.rgb + spec*colSpecular.rgb); } vec3 CalcDirectionalLight(Light l, vec3 n, vec3 v, float s) @@ -74,7 +73,7 @@ vec3 CalcDirectionalLight(Light l, vec3 n, vec3 v, float s) } // Combine results - return (diff*l.intensity*l.diffuse.rgb*colDiffuse.rgb + spec*colSpecular.rgb); + return (diff*l.intensity*l.diffuse.rgb + spec*colSpecular.rgb); } vec3 CalcSpotLight(Light l, vec3 n, vec3 v, float s) @@ -150,5 +149,5 @@ void main() } // Calculate final fragment color - finalColor = vec4(texelColor.rgb*lighting*colTint.rgb, texelColor.a*colTint.a); + finalColor = vec4(texelColor.rgb*lighting*colDiffuse.rgb, texelColor.a*colDiffuse.a); } diff --git a/examples/shaders_standard_lighting.c b/examples/shaders_standard_lighting.c index 10416f7f4..ccbe74cac 100644 --- a/examples/shaders_standard_lighting.c +++ b/examples/shaders_standard_lighting.c @@ -40,9 +40,9 @@ int main() material.texDiffuse = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model diffuse texture material.texNormal = LoadTexture("resources/model/dwarf_normal.png"); // Load model normal texture material.texSpecular = LoadTexture("resources/model/dwarf_specular.png"); // Load model specular texture - material.colDiffuse = (Color){255, 255, 255, 255}; + material.colDiffuse = WHITE; material.colAmbient = (Color){0, 0, 10, 255}; - material.colSpecular = (Color){255, 255, 255, 255}; + material.colSpecular = WHITE; material.glossiness = 50.0f; dwarf.material = material; // Apply material to model diff --git a/src/models.c b/src/models.c index 8c5ed9148..962a64705 100644 --- a/src/models.c +++ b/src/models.c @@ -779,8 +779,7 @@ Material LoadDefaultMaterial(void) material.texDiffuse = GetDefaultTexture(); // White texture (1x1 pixel) //material.texNormal; // NOTE: By default, not set //material.texSpecular; // NOTE: By default, not set - - material.colTint = WHITE; // Tint color + material.colDiffuse = WHITE; // Diffuse color material.colAmbient = WHITE; // Ambient color material.colSpecular = WHITE; // Specular color @@ -1298,7 +1297,7 @@ void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rota //Matrix matModel = MatrixMultiply(model.transform, matTransform); // Transform to world-space coordinates model.transform = MatrixMultiply(MatrixMultiply(matScale, matRotation), matTranslation); - model.material.colTint = tint; + model.material.colDiffuse = tint; // TODO: Multiply tint color by diffuse color? rlglDrawMesh(model.mesh, model.material, model.transform); } diff --git a/src/raylib.h b/src/raylib.h index 5bef3698f..271c0e423 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -414,7 +414,6 @@ typedef struct Material { Texture2D texNormal; // Normal texture (binded to shader mapTexture1Loc) Texture2D texSpecular; // Specular texture (binded to shader mapTexture2Loc) - Color colTint; // Tint color Color colDiffuse; // Diffuse color Color colAmbient; // Ambient color Color colSpecular; // Specular color diff --git a/src/rlgl.c b/src/rlgl.c index 5c4c9c011..6a2adeb2f 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -1800,9 +1800,6 @@ void rlglDrawMesh(Mesh mesh, Material material, Matrix transform) // Setup shader uniforms for lights SetShaderLights(material.shader); - // Upload to shader material.colSpecular - glUniform4f(glGetUniformLocation(material.shader.id, "colTint"), (float)material.colTint.r/255, (float)material.colTint.g/255, (float)material.colTint.b/255, (float)material.colTint.a/255); - // Upload to shader material.colAmbient glUniform4f(glGetUniformLocation(material.shader.id, "colAmbient"), (float)material.colAmbient.r/255, (float)material.colAmbient.g/255, (float)material.colAmbient.b/255, (float)material.colAmbient.a/255); diff --git a/src/rlgl.h b/src/rlgl.h index ccf2b36aa..336f60198 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -201,8 +201,7 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; Texture2D texDiffuse; // Diffuse texture Texture2D texNormal; // Normal texture Texture2D texSpecular; // Specular texture - - Color colTint; // Tint color + Color colDiffuse; // Diffuse color Color colAmbient; // Ambient color Color colSpecular; // Specular color @@ -212,18 +211,18 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; // Light type typedef struct LightData { - int id; - int type; // LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT - bool enabled; + unsigned int id; // Light id + int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT + bool enabled; // Light enabled - Vector3 position; - Vector3 target; // Used on LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) - float radius; // Lost of light intensity with distance (world distance) + Vector3 position; // Light position + Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) + float radius; // Light attenuation radius light intensity reduced with distance (world distance) - Color diffuse; // Use Vector3 diffuse - float intensity; + Color diffuse; // Light diffuse color + float intensity; // Light intensity level - float coneAngle; // Spot light max angle + float coneAngle; // Light cone max angle: LIGHT_SPOT } LightData, *Light; // Color blending modes (pre-defined) From d17a0cee1aa53978387e68be58d901bffd1ac0a9 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Tue, 31 May 2016 19:12:37 +0200 Subject: [PATCH 3/9] Review text formatting (spacing, tabs...) --- examples/resources/shaders/standard.fs | 8 +- src/core.c | 18 ++--- src/raylib.h | 94 +++++++++++----------- src/raymath.h | 2 +- src/rlgl.c | 2 +- src/rlgl.h | 103 +++++++++++++------------ src/shapes.c | 2 +- 7 files changed, 116 insertions(+), 113 deletions(-) diff --git a/examples/resources/shaders/standard.fs b/examples/resources/shaders/standard.fs index e5916031b..e5a6d1bc4 100644 --- a/examples/resources/shaders/standard.fs +++ b/examples/resources/shaders/standard.fs @@ -88,8 +88,10 @@ vec3 CalcSpotLight(Light l, vec3 n, vec3 v, float s) // Spot attenuation float attenuation = clamp(dot(n, lightToSurface), 0.0, 1.0); attenuation = dot(lightToSurface, -lightDir); + float lightToSurfaceAngle = degrees(acos(attenuation)); if (lightToSurfaceAngle > l.coneAngle) attenuation = 0.0; + float falloff = (l.coneAngle - lightToSurfaceAngle)/l.coneAngle; // Combine diffuse and attenuation @@ -103,7 +105,7 @@ vec3 CalcSpotLight(Light l, vec3 n, vec3 v, float s) spec = pow(dot(n, h), 3 + glossiness)*s; } - return falloff*(diffAttenuation*l.diffuse.rgb + spec*colSpecular.rgb); + return (falloff*(diffAttenuation*l.diffuse.rgb + spec*colSpecular.rgb)); } void main() @@ -122,7 +124,7 @@ void main() vec3 lighting = colAmbient.rgb; // Calculate normal texture color fetching or set to maximum normal value by default - if(useNormal == 1) + if (useNormal == 1) { n *= texture(texture1, fragTexCoord).rgb; n = normalize(n); @@ -130,7 +132,7 @@ void main() // Calculate specular texture color fetching or set to maximum specular value by default float spec = 1.0; - if(useSpecular == 1) spec *= normalize(texture(texture2, fragTexCoord).r); + if (useSpecular == 1) spec *= normalize(texture(texture2, fragTexCoord).r); for (int i = 0; i < lightsCount; i++) { diff --git a/src/core.c b/src/core.c index 70dfa7a53..7bd44c81b 100644 --- a/src/core.c +++ b/src/core.c @@ -2078,10 +2078,10 @@ static void MouseButtonCallback(GLFWwindow *window, int button, int action, int gestureEvent.position[0] = GetMousePosition(); // Normalize gestureEvent.position[0] for screenWidth and screenHeight - gestureEvent.position[0].x /= (float)GetScreenWidth(); + gestureEvent.position[0].x /= (float)GetScreenWidth(); gestureEvent.position[0].y /= (float)GetScreenHeight(); - - // Gesture data is sent to gestures system for processing + + // Gesture data is sent to gestures system for processing ProcessGestureEvent(gestureEvent); #endif } @@ -2223,10 +2223,10 @@ static void AndroidCommandCallback(struct android_app *app, int32_t cmd) // Load default font for convenience // NOTE: External function (defined in module: text) LoadDefaultFont(); - + // TODO: GPU assets reload in case of lost focus (lost context) // NOTE: This problem has been solved just unbinding and rebinding context from display - /* + /* if (assetsReloadRequired) { for (int i = 0; i < assetsCount; i++) @@ -2759,9 +2759,9 @@ static void *GamepadThread(void *arg) }; // Read gamepad event - struct js_event gamepadEvent; + struct js_event gamepadEvent; - while (1) + while (1) { for (int i = 0; i < MAX_GAMEPADS; i++) { @@ -2792,8 +2792,8 @@ static void *GamepadThread(void *arg) } } } - } - + } + return NULL; } #endif diff --git a/src/raylib.h b/src/raylib.h index 271c0e423..1ef0a98ee 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -349,7 +349,7 @@ typedef struct Camera { Vector3 position; // Camera position Vector3 target; // Camera target it looks-at Vector3 up; // Camera up vector (rotation over its axis) - float fovy; // Field-Of-View apperture in Y (degrees) + float fovy; // Camera field-of-view apperture in Y (degrees) } Camera; // Camera2D type, defines a 2d camera @@ -362,86 +362,84 @@ typedef struct Camera2D { // Bounding box type typedef struct BoundingBox { - Vector3 min; - Vector3 max; + Vector3 min; // minimum vertex box-corner + Vector3 max; // maximum vertex box-corner } BoundingBox; // Vertex data definning a mesh typedef struct Mesh { - int vertexCount; // number of vertices stored in arrays - int triangleCount; // number of triangles stored (indexed or not) - float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) - float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) - float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5) - float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2) - float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4) - unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) - unsigned short *indices; // vertex indices (in case vertex data comes indexed) + int vertexCount; // number of vertices stored in arrays + int triangleCount; // number of triangles stored (indexed or not) + float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5) + float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4) + unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices;// vertex indices (in case vertex data comes indexed) - BoundingBox bounds; // mesh limits defined by min and max points - - unsigned int vaoId; // OpenGL Vertex Array Object id - unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data) + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data) } Mesh; // Shader type (generic shader) typedef struct Shader { - unsigned int id; // Shader program id + unsigned int id; // Shader program id // Vertex attributes locations (default locations) - int vertexLoc; // Vertex attribute location point (default-location = 0) - int texcoordLoc; // Texcoord attribute location point (default-location = 1) - int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5) - int normalLoc; // Normal attribute location point (default-location = 2) - int tangentLoc; // Tangent attribute location point (default-location = 4) - int colorLoc; // Color attibute location point (default-location = 3) + int vertexLoc; // Vertex attribute location point (default-location = 0) + int texcoordLoc; // Texcoord attribute location point (default-location = 1) + int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5) + int normalLoc; // Normal attribute location point (default-location = 2) + int tangentLoc; // Tangent attribute location point (default-location = 4) + int colorLoc; // Color attibute location point (default-location = 3) // Uniform locations - int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) - int tintColorLoc; // Diffuse color uniform location point (fragment shader) + int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) + int tintColorLoc; // Diffuse color uniform location point (fragment shader) // Texture map locations (generic for any kind of map) - int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0) - int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1) - int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) + int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0) + int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1) + int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) } Shader; // Material type typedef struct Material { - Shader shader; // Standard shader (supports 3 map textures) + Shader shader; // Standard shader (supports 3 map textures) - Texture2D texDiffuse; // Diffuse texture (binded to shader mapTexture0Loc) - Texture2D texNormal; // Normal texture (binded to shader mapTexture1Loc) - Texture2D texSpecular; // Specular texture (binded to shader mapTexture2Loc) + Texture2D texDiffuse; // Diffuse texture (binded to shader mapTexture0Loc) + Texture2D texNormal; // Normal texture (binded to shader mapTexture1Loc) + Texture2D texSpecular; // Specular texture (binded to shader mapTexture2Loc) - Color colDiffuse; // Diffuse color - Color colAmbient; // Ambient color - Color colSpecular; // Specular color + Color colDiffuse; // Diffuse color + Color colAmbient; // Ambient color + Color colSpecular; // Specular color - float glossiness; // Glossiness level (Ranges from 0 to 1000) + float glossiness; // Glossiness level (Ranges from 0 to 1000) } Material; // Model type typedef struct Model { - Mesh mesh; // Vertex data buffers (RAM and VRAM) - Matrix transform; // Local transform matrix - Material material; // Shader and textures data + Mesh mesh; // Vertex data buffers (RAM and VRAM) + Matrix transform; // Local transform matrix + Material material; // Shader and textures data } Model; // Light type typedef struct LightData { - unsigned int id; // Light id - int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT - bool enabled; // Light enabled + unsigned int id; // Light unique id + int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT + bool enabled; // Light enabled - Vector3 position; // Light position - Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) - float radius; // Light attenuation radius light intensity reduced with distance (world distance) + Vector3 position; // Light position + Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) + float radius; // Light attenuation radius light intensity reduced with distance (world distance) - Color diffuse; // Light diffuse color - float intensity; // Light intensity level + Color diffuse; // Light diffuse color + float intensity; // Light intensity level - float coneAngle; // Light cone max angle: LIGHT_SPOT + float coneAngle; // Light cone max angle: LIGHT_SPOT } LightData, *Light; // Light types diff --git a/src/raymath.h b/src/raymath.h index 59d66e562..2e055e9ff 100644 --- a/src/raymath.h +++ b/src/raymath.h @@ -73,7 +73,7 @@ //---------------------------------------------------------------------------------- #if defined(RAYMATH_STANDALONE) - // Vector2 type + // Vector2 type typedef struct Vector2 { float x; float y; diff --git a/src/rlgl.c b/src/rlgl.c index 6a2adeb2f..89361f462 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -2369,7 +2369,7 @@ static void LoadCompressedTexture(unsigned char *data, int width, int height, in static unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) { unsigned int program = 0; - + #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) GLuint vertexShader; GLuint fragmentShader; diff --git a/src/rlgl.h b/src/rlgl.h index 336f60198..e8e754b43 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -130,51 +130,43 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; COMPRESSED_ASTC_4x4_RGBA, // 8 bpp COMPRESSED_ASTC_8x8_RGBA // 2 bpp } TextureFormat; - - // Bounding box type - typedef struct BoundingBox { - Vector3 min; - Vector3 max; - } BoundingBox; // Vertex data definning a mesh typedef struct Mesh { - int vertexCount; // number of vertices stored in arrays - float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) - float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) - float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5) - float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2) - float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4) - unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) - unsigned short *indices; // vertex indices (in case vertex data comes indexed) - int triangleCount; // number of triangles stored (indexed or not) - - BoundingBox bounds; // mesh limits defined by min and max points - - unsigned int vaoId; // OpenGL Vertex Array Object id - unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data) + int vertexCount; // number of vertices stored in arrays + int triangleCount; // number of triangles stored (indexed or not) + float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5) + float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4) + unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices;// vertex indices (in case vertex data comes indexed) + + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data) } Mesh; // Shader type (generic shader) typedef struct Shader { - unsigned int id; // Shader program id + unsigned int id; // Shader program id // Vertex attributes locations (default locations) - int vertexLoc; // Vertex attribute location point (default-location = 0) - int texcoordLoc; // Texcoord attribute location point (default-location = 1) - int normalLoc; // Normal attribute location point (default-location = 2) - int colorLoc; // Color attibute location point (default-location = 3) - int tangentLoc; // Tangent attribute location point (default-location = 4) - int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5) + int vertexLoc; // Vertex attribute location point (default-location = 0) + int texcoordLoc; // Texcoord attribute location point (default-location = 1) + int normalLoc; // Normal attribute location point (default-location = 2) + int colorLoc; // Color attibute location point (default-location = 3) + int tangentLoc; // Tangent attribute location point (default-location = 4) + int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5) // Uniform locations - int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) - int tintColorLoc; // Color uniform location point (fragment shader) + int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) + int tintColorLoc; // Color uniform location point (fragment shader) // Texture map locations (generic for any kind of map) - int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0) - int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1) - int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) + int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0) + int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1) + int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) } Shader; // Texture2D type @@ -196,35 +188,46 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; // Material type typedef struct Material { - Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular) + Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular) - Texture2D texDiffuse; // Diffuse texture - Texture2D texNormal; // Normal texture - Texture2D texSpecular; // Specular texture + Texture2D texDiffuse; // Diffuse texture + Texture2D texNormal; // Normal texture + Texture2D texSpecular; // Specular texture - Color colDiffuse; // Diffuse color - Color colAmbient; // Ambient color - Color colSpecular; // Specular color + Color colDiffuse; // Diffuse color + Color colAmbient; // Ambient color + Color colSpecular; // Specular color - float glossiness; // Glossiness level (Ranges from 0 to 1000) + float glossiness; // Glossiness level (Ranges from 0 to 1000) } Material; + // Camera type, defines a camera position/orientation in 3d space + typedef struct Camera { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view apperture in Y (degrees) + } Camera; + // Light type typedef struct LightData { - unsigned int id; // Light id - int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT - bool enabled; // Light enabled + unsigned int id; // Light unique id + int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT + bool enabled; // Light enabled - Vector3 position; // Light position - Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) - float radius; // Light attenuation radius light intensity reduced with distance (world distance) + Vector3 position; // Light position + Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) + float radius; // Light attenuation radius light intensity reduced with distance (world distance) - Color diffuse; // Light diffuse color - float intensity; // Light intensity level + Color diffuse; // Light diffuse color + float intensity; // Light intensity level - float coneAngle; // Light cone max angle: LIGHT_SPOT + float coneAngle; // Light cone max angle: LIGHT_SPOT } LightData, *Light; - + + // Light types + typedef enum { LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT } LightType; + // Color blending modes (pre-defined) typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode; #endif diff --git a/src/shapes.c b/src/shapes.c index 5b66e5ef1..7129ac173 100644 --- a/src/shapes.c +++ b/src/shapes.c @@ -489,7 +489,7 @@ Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2) retRec.height = rec2.height - dyy; } } - + if (rec1.width > rec2.width) { if (retRec.width >= rec2.width) retRec.width = rec2.width; From 8f91ed81c58fd5cdbeda4db5478649bd677712da Mon Sep 17 00:00:00 2001 From: raysan5 Date: Tue, 31 May 2016 20:08:36 +0200 Subject: [PATCH 4/9] Updated Oculus sample to Oculus SDK 1.4 Still working on the sample but almost finished. Some rlgl internals redesign required and it will be ready! --- examples/oculus_glfw_sample/LibOVRRT32_1.dll | Bin 949712 -> 964048 bytes .../LibOVR/Include/Extras/OVR_CAPI_Util.h | 12 +- .../LibOVR/Include/Extras/OVR_Math.h | 4 +- .../OculusSDK/LibOVR/Include/OVR_CAPI.h | 27 +- .../OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h | 28 +- .../OculusSDK/LibOVR/Include/OVR_ErrorCode.h | 28 +- .../OculusSDK/LibOVR/Include/OVR_Version.h | 2 +- examples/oculus_glfw_sample/glad.c | 7684 ----------------- examples/oculus_glfw_sample/glad.h | 7678 ++++++++++++++++ .../oculus_glfw_sample/oculus_glfw_sample.c | 731 +- .../oculus_glfw_sample.old.c | 498 -- ...V1.png => raylib_OculusRiftCV1_test01.png} | Bin .../raylib_OculusRiftCV1_test02.png | Bin 0 -> 348126 bytes .../raylib_OculusRiftCV1_test03.png | Bin 0 -> 182957 bytes .../raylib_rlgl_standalone.c | 420 +- examples/oculus_glfw_sample/raymath.h | 20 +- examples/oculus_glfw_sample/rlgl.c | 1809 ++-- examples/oculus_glfw_sample/rlgl.h | 152 +- 18 files changed, 9807 insertions(+), 9286 deletions(-) delete mode 100644 examples/oculus_glfw_sample/glad.c delete mode 100644 examples/oculus_glfw_sample/oculus_glfw_sample.old.c rename examples/oculus_glfw_sample/{raylib_OculusRiftCV1.png => raylib_OculusRiftCV1_test01.png} (100%) create mode 100644 examples/oculus_glfw_sample/raylib_OculusRiftCV1_test02.png create mode 100644 examples/oculus_glfw_sample/raylib_OculusRiftCV1_test03.png diff --git a/examples/oculus_glfw_sample/LibOVRRT32_1.dll b/examples/oculus_glfw_sample/LibOVRRT32_1.dll index cfa119a5a1b28fd10cca3c12b83a451c65374dc4..70f63f7019536c1a296ddf354cf411c63819f275 100644 GIT binary patch delta 361690 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 dG3Q&J{QShABIMD-AXO0RTCcJx>4t delta 348197 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

&dvf2)2U_gL|d{} zSn>*#@P@sZDL4JhXI6Qp3c2ZTKeHOw|9SQQf28q&*S^884O+jIGP;GKG`AfPyU=lslGziun()B4f1(xV85B z(ThH0@#*uwuu3rBdCoC?*B4d~8J$E9f%rJk`Jo)3*b4j8UCPt#$6USsj@&mQSDZl{JVlVfyp0ta8lv?yyeh z_{OTp^m*oV?Qg8w^849Y z;y2b3ruwky?%!D*m~6wQcYbG$5I%MvG+hTi{_PLAGhmW5{mXY&t9sK~28Qkq(9nLT zAIl4MP;IdR!~->@K~27}7s4PFr5x5^;ZngD%pkrWOD9+pD8N2}>IpFKHD|XYi}i;R z{_Ydal`IUUALC+Qnuankbi1*1IxY0>A5a>3h%jwJjK~_T>A5a>3hB8nc{&~3a|J2t z^<;>6$|{iXlvN<(DXT!iQ&xeBr>p`EPgw;zp0WzeehTinih`7O|KIYIRbbCkR)I55 zSp^htfnu8xBEfbmgI2@9Gk!f?k#~z3DDt@{M-24dL8#S|Bx(ao|?y|F5O@WDz!C1y{S_1 z7quLqtO;&U-teBffz6z0!|SOp*<_d+y{EG?vgrx#Tmd@a`$P8!{%y>G0WVgqnC`~N z=D;NQdU^*Vn}*#rF9wF!zTK`LnsPe=L5X z&nwV;k-_*tC+{2m>9<(e{1q);a0tAX*$En2`@}Dx>j2{N?gS0QfVdVfIHr5CvMDh~ zyx^Fg&&npxZ193(`b3aOzzdG)+gRCLg#})42z=rfP?dNAS{;?ATkwKoIv*R`LGJh$ z90H{pH+36ca7@3&#wKgxYt6uL_eS#(g~Q-MbEpL%>p=%Ag1AuYSsB1n4ZqgX2lG$bqPD0H8V)+5l9N;AUO^;1qBAMJ0cDqPUFv0t$;eF211*byx^D~ z$H7*utnh+E;QP(yOAOy{y>R{i|381&aZnTfMOO}}<}YR2VUsld4+op3d>Bl?B8gkz zaPt8UP`T9Y%VB)Ln&;?+gy}AvZ2I*H+ydaDwfT)nukRU9r6u$jbhIp^tbNlN`{hOPMo>-HdZ0v>f4g1tF{Uhz@Xp#VFJd;%F?Gg%>2&=8b^?FLSI{Z7KN$I2KqA9q)`v=kt!v+u@)=*U4t-H1 zR?cee`=pE?WZP+$&e$KVCrdi&UrU7t{4ag*zx2)v(CN_3u3x%;WifQR{)rI&0SWn+ zdjJ3b|8|(A)cD(B#?sX8)6EZ=N`x9geY=Ko`63SEOV)?V#a}ZSUur#B>evWcbyZ(v zSiVqjqSc9^k*qxr=D=JWqwD}6i6RKjh1X+P+$wTA9PuSJ?q z{NMlo|Nr{e9Nn&eUbA+){xQDP?JLlFvV^JA5Tsh_`wih=-|xQ`>UIT<46}l&bPnT_ z-3PmWHq_o=C}HpRz0#am@VEOqwEqcOieU>b7(u-R(Cvl)OF2r}GYs;$1zs~{F}&dZ z`~Sao^ASkjISbmCIQ}0r#?1rH6ELyDE#Q)GdZ0I(q=iVS#EWduPzt2Oe$1YMq4~uB zm!OF2uH^xp@!R^XM6&gNsptzAgtGbe({FRKg)&Z^Zpg*v$2%Extp~(_cXrczxY+EO z+<#9$%f%+H{cZ)Dz>E2yR_zgq<{$q`eO}0buI8~&D$RZ&1X?R3@j9uSAvi4K-HPe_ z+-$P(&wl;?-)x~&YWm_1=yX`$Kb;(}HCqoa&p9K7a!u^r3-R}MmU zV7DWMSFHd;spyL-2qo`rr+0I+DKouWF?|C!o4AxWSPB%Kueo2?fjMBKX4+1F$jv4y zG5IcNf#Zkf$`Zyp(O%aN0a+}dGNovG0uP(ybafs!MF~d?B}^bC3Lqs`lJD=J8^8gQ zJ-2FlA`hFy^wT_Sijs3N)PN^>YM^RldD#@1yzfkR;AN9wRG%Kn%Vx?8P6wre-M$

4h| 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 @zIEU_7wbAHjHFe}|ZW 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 z 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 diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h index 587c696ea..552f3b125 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h @@ -137,14 +137,14 @@ OVR_PUBLIC_FUNCTION(ovrMatrix4f) ovrMatrix4f_OrthoSubProjection(ovrMatrix4f proj /// Computes offset eye poses based on headPose returned by ovrTrackingState. /// /// \param[in] headPose Indicates the HMD position and orientation to use for the calculation. -/// \param[in] HmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from +/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from /// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average /// of the two vectors for both eyes. /// \param[out] outEyePoses If outEyePoses are used for rendering, they should be passed to /// ovr_SubmitFrame in ovrLayerEyeFov::RenderPose or ovrLayerEyeFovDepth::RenderPose. /// OVR_PUBLIC_FUNCTION(void) ovr_CalcEyePoses(ovrPosef headPose, - const ovrVector3f HmdToEyeOffset[2], + const ovrVector3f hmdToEyeOffset[2], ovrPosef outEyePoses[2]); @@ -158,17 +158,17 @@ OVR_PUBLIC_FUNCTION(void) ovr_CalcEyePoses(ovrPosef headPose, /// \param[in] hmd Specifies an ovrSession previously returned by ovr_Create. /// \param[in] frameIndex Specifies the targeted frame index, or 0 to refer to one frame after /// the last time ovr_SubmitFrame was called. -/// \param[in] HmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from -/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average -/// of the two vectors for both eyes. /// \param[in] latencyMarker Specifies that this call is the point in time where /// the "App-to-Mid-Photon" latency timer starts from. If a given ovrLayer /// provides "SensorSampleTimestamp", that will override the value stored here. +/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from +/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average +/// of the two vectors for both eyes. /// \param[out] outEyePoses The predicted eye poses. /// \param[out] outSensorSampleTime The time when this function was called. May be NULL, in which case it is ignored. /// OVR_PUBLIC_FUNCTION(void) ovr_GetEyePoses(ovrSession session, long long frameIndex, ovrBool latencyMarker, - const ovrVector3f HmdToEyeOffset[2], + const ovrVector3f hmdToEyeOffset[2], ovrPosef outEyePoses[2], double* outSensorSampleTime); diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h index 3a8a80456..c182ed5b4 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h @@ -1,7 +1,7 @@ /********************************************************************************//** \file OVR_Math.h \brief Implementation of 3D primitives such as vectors, matrices. -\copyright Copyright 2015 Oculus VR, LLC All Rights reserved. +\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. *************************************************************************************/ #ifndef OVR_Math_h @@ -1754,7 +1754,7 @@ public: : Rotation(s.Rotation), Translation(s.Translation) { // Ensure normalized rotation if converting from float to double - if (sizeof(T) > sizeof(Math::OtherFloatType)) + if (sizeof(T) > sizeof(typename Math::OtherFloatType)) Rotation.Normalize(); } diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h index 5eb17e607..b1ec3cc0e 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h @@ -1,7 +1,7 @@ /********************************************************************************//** \file OVR_CAPI.h \brief C Interface to the Oculus PC SDK tracking and rendering library. -\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. +\copyright Copyright 2014 Oculus VR, LLC All Rights reserved. ************************************************************************************/ #ifndef OVR_CAPI_h // We don't use version numbers within this name, as all versioned variations of this file are currently mutually exclusive. @@ -687,6 +687,11 @@ typedef enum ovrTextureMiscFlags_ /// call. This flag requires that RenderTarget binding also be specified. ovrTextureMisc_AllowGenerateMips = 0x0002, + /// Texture swap chain contains protected content, and requires + /// HDCP connection in order to display to HMD. Also prevents + /// mirroring or other redirection of any frame containing this contents + ovrTextureMisc_ProtectedContent = 0x0004, + ovrTextureMisc_EnumSize = 0x7fffffff ///< \internal Force type int32_t. } ovrTextureFlags; @@ -695,7 +700,7 @@ typedef enum ovrTextureMiscFlags_ /// \see ovr_CreateTextureSwapChainDX /// \see ovr_CreateTextureSwapChainGL /// -typedef struct +typedef struct ovrTextureSwapChainDesc_ { ovrTextureType Type; ovrTextureFormat Format; @@ -705,7 +710,7 @@ typedef struct int MipLevels; int SampleCount; ///< Current only supported on depth textures ovrBool StaticImage; ///< Not buffered in a chain. For images that don't change - unsigned int MiscFlags; ///< ovrTextureMiscFlags + unsigned int MiscFlags; ///< ovrTextureFlags unsigned int BindFlags; ///< ovrTextureBindFlags. Not used for GL. } ovrTextureSwapChainDesc; @@ -714,12 +719,12 @@ typedef struct /// \see ovr_CreateMirrorTextureDX /// \see ovr_CreateMirrorTextureGL /// -typedef struct +typedef struct ovrMirrorTextureDesc_ { ovrTextureFormat Format; int Width; int Height; - unsigned int MiscFlags; ///< ovrTextureMiscFlags + unsigned int MiscFlags; ///< ovrTextureFlags } ovrMirrorTextureDesc; typedef struct ovrTextureSwapChainData* ovrTextureSwapChain; @@ -987,8 +992,8 @@ extern "C" { /// Initializes LibOVR /// /// Initialize LibOVR for application usage. This includes finding and loading the LibOVRRT -/// shared library. No LibOVR API functions, other than ovr_GetLastErrorInfo, can be called -/// unless ovr_Initialize succeeds. A successful call to ovr_Initialize must be eventually +/// shared library. No LibOVR API functions, other than ovr_GetLastErrorInfo and ovr_Detect, can +/// be called unless ovr_Initialize succeeds. A successful call to ovr_Initialize must be eventually /// followed by a call to ovr_Shutdown. ovr_Initialize calls are idempotent. /// Calling ovr_Initialize twice does not require two matching calls to ovr_Shutdown. /// If already initialized, the return value is ovr_Success. @@ -1696,6 +1701,14 @@ OVR_PUBLIC_FUNCTION(void) ovr_DestroyMirrorTexture(ovrSession session, ovrMirror /// \param[in] pixelsPerDisplayPixel Specifies the ratio of the number of render target pixels /// to display pixels at the center of distortion. 1.0 is the default value. Lower /// values can improve performance, higher values give improved quality. +/// +/// Example code +/// \code{.cpp} +/// ovrHmdDesc hmdDesc = ovr_GetHmdDesc(session); +/// ovrSizei eyeSizeLeft = ovr_GetFovTextureSize(session, ovrEye_Left, hmdDesc.DefaultEyeFov[ovrEye_Left], 1.0f); +/// ovrSizei eyeSizeRight = ovr_GetFovTextureSize(session, ovrEye_Right, hmdDesc.DefaultEyeFov[ovrEye_Right], 1.0f); +/// \endcode +/// /// \return Returns the texture width and height size. /// OVR_PUBLIC_FUNCTION(ovrSizei) ovr_GetFovTextureSize(ovrSession session, ovrEyeType eye, ovrFovPort fov, diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h index 5c6e94eb8..50806bca1 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h @@ -67,8 +67,8 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateTextureSwapChainDX(ovrSession session, /// /// Example code /// \code{.cpp} -/// ovr_GetTextureSwapChainBuffer(session, chain, 0, IID_ID3D11Texture2D, &d3d11Texture); -/// ovr_GetTextureSwapChainBuffer(session, chain, 1, IID_PPV_ARGS(&dxgiResource)); +/// ovr_GetTextureSwapChainBufferDX(session, chain, 0, IID_ID3D11Texture2D, &d3d11Texture); +/// ovr_GetTextureSwapChainBufferDX(session, chain, 1, IID_PPV_ARGS(&dxgiResource)); /// \endcode /// OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferDX(ovrSession session, @@ -102,6 +102,21 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferDX(ovrSession sessio /// compositor continues to treat is as sRGB. Failure to do so will cause the compositor to apply unexpected gamma conversions leading to /// gamma-curve artifacts. /// +/// +/// Example code +/// \code{.cpp} +/// ovrMirrorTexture mirrorTexture = nullptr; +/// ovrMirrorTextureDesc mirrorDesc = {}; +/// mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; +/// mirrorDesc.Width = mirrorWindowWidth; +/// mirrorDesc.Height = mirrorWindowHeight; +/// ovrResult result = ovr_CreateMirrorTextureDX(session, d3d11Device, &mirrorDesc, &mirrorTexture); +/// [...] +/// // Destroy the texture when done with it. +/// ovr_DestroyMirrorTexture(session, mirrorTexture); +/// mirrorTexture = nullptr; +/// \endcode +/// /// \see ovr_GetMirrorTextureBufferDX /// \see ovr_DestroyMirrorTexture /// @@ -120,6 +135,15 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateMirrorTextureDX(ovrSession session, /// \return Returns an ovrResult indicating success or failure. In the case of failure, use /// ovr_GetLastErrorInfo to get more information. /// +/// Example code +/// \code{.cpp} +/// ID3D11Texture2D* d3d11Texture = nullptr; +/// ovr_GetMirrorTextureBufferDX(session, mirrorTexture, IID_PPV_ARGS(&d3d11Texture)); +/// d3d11DeviceContext->CopyResource(d3d11TextureBackBuffer, d3d11Texture); +/// d3d11Texture->Release(); +/// dxgiSwapChain->Present(0, 0); +/// \endcode +/// OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetMirrorTextureBufferDX(ovrSession session, ovrMirrorTexture mirrorTexture, IID iid, diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h index 3d4061743..ed0be0e70 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h @@ -91,6 +91,7 @@ typedef enum ovrErrorType_ ovrError_InvalidHeadsetOrientation = -1011, ///< The headset was in an invalid orientation for the requested operation (e.g. vertically oriented during ovr_RecenterPose). ovrError_ClientSkippedDestroy = -1012, ///< The client failed to call ovr_Destroy on an active session before calling ovr_Shutdown. Or the client crashed. ovrError_ClientSkippedShutdown = -1013, ///< The client failed to call ovr_Shutdown or the client crashed. + ovrError_ServiceDeadlockDetected = -1014, ///< The service watchdog discovered a deadlock. /* Audio error range, reserved for Audio errors. */ ovrError_AudioReservedBegin = -2000, ///< First Audio error. @@ -140,25 +141,42 @@ typedef enum ovrErrorType_ ovrError_NordicEnabledNoSync = -4015, ///< The nordic indicates that sync is enabled but it is not sending sync pulses ovrError_NordicSyncNoFrames = -4016, ///< It looks like we're getting a sync signal, but no camera frames have been received ovrError_CatastrophicFailure = -4017, ///< A catastrophic failure has occurred. We will attempt to recover by resetting the device + ovrError_CatastrophicTimeout = -4018, ///< The catastrophic recovery has timed out. + ovrError_RepeatCatastrophicFail = -4019, ///< Catastrophic failure has repeated too many times. + ovrError_USBOpenDeviceFailure = -4020, ///< Could not open handle for Rift device (likely already in use by another process). + ovrError_HMDGeneralFailure = -4021, ///< Unexpected HMD issues that don't fit a specific bucket. ovrError_HMDFirmwareMismatch = -4100, ///< The HMD Firmware is out of date and is unacceptable. ovrError_TrackerFirmwareMismatch = -4101, ///< The sensor Firmware is out of date and is unacceptable. ovrError_BootloaderDeviceDetected = -4102, ///< A bootloader HMD is detected by the service. ovrError_TrackerCalibrationError = -4103, ///< The sensor calibration is missing or incorrect. ovrError_ControllerFirmwareMismatch = -4104, ///< The controller firmware is out of date and is unacceptable. + ovrError_DevManDeviceDetected = -4105, ///< A DeviceManagement mode HMD is detected by the service. + ovrError_RebootedBootloaderDevice = -4106, ///< Had to reboot bootloader device, which succeeded. + ovrError_FailedRebootBootloaderDev = -4107, ///< Had to reboot bootloader device, which failed. Device is stuck in bootloader mode. ovrError_IMUTooManyLostSamples = -4200, ///< Too many lost IMU samples. ovrError_IMURateError = -4201, ///< IMU rate is outside of the expected range. ovrError_FeatureReportFailure = -4202, ///< A feature report has failed. + ovrError_HMDWirelessTimeout = -4203, ///< HMD wireless interface never returned from busy state. + + ovrError_BootloaderAssertLog = -4300, ///< HMD Bootloader Assert Log was not empty. + ovrError_AppAssertLog = -4301, ///< HMD App Assert Log was not empty. /* Synchronization errors */ - ovrError_Incomplete = -5000, /// -#include -#include -#include "glad.h" - -struct gladGLversionStruct GLVersion; - -#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) -#define _GLAD_IS_SOME_NEW_VERSION 1 -#endif - -static int max_loaded_major; -static int max_loaded_minor; - -static const char *exts = NULL; -static int num_exts_i = 0; -static const char **exts_i = NULL; - -static int get_exts(void) { -#ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { -#endif - exts = (const char *)glGetString(GL_EXTENSIONS); -#ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - int index; - - num_exts_i = 0; - glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); - if (num_exts_i > 0) { - exts_i = (const char **)realloc((void *)exts_i, num_exts_i * sizeof *exts_i); - } - - if (exts_i == NULL) { - return 0; - } - - for(index = 0; index < num_exts_i; index++) { - exts_i[index] = (const char*)glGetStringi(GL_EXTENSIONS, index); - } - } -#endif - return 1; -} - -static void free_exts(void) { - if (exts_i != NULL) { - free(exts_i); - exts_i = NULL; - } -} - -static int has_ext(const char *ext) { -#ifdef _GLAD_IS_SOME_NEW_VERSION - if(max_loaded_major < 3) { -#endif - const char *extensions; - const char *loc; - const char *terminator; - extensions = exts; - if(extensions == NULL || ext == NULL) { - return 0; - } - - while(1) { - loc = strstr(extensions, ext); - if(loc == NULL) { - return 0; - } - - terminator = loc + strlen(ext); - if((loc == extensions || *(loc - 1) == ' ') && - (*terminator == ' ' || *terminator == '\0')) { - return 1; - } - extensions = terminator; - } -#ifdef _GLAD_IS_SOME_NEW_VERSION - } else { - int index; - - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; - - if(strcmp(e, ext) == 0) { - return 1; - } - } - } -#endif - - return 0; -} -int GLAD_GL_VERSION_1_0; -int GLAD_GL_VERSION_1_1; -int GLAD_GL_VERSION_1_2; -int GLAD_GL_VERSION_1_3; -int GLAD_GL_VERSION_1_4; -int GLAD_GL_VERSION_1_5; -int GLAD_GL_VERSION_2_0; -int GLAD_GL_VERSION_2_1; -int GLAD_GL_VERSION_3_0; -int GLAD_GL_VERSION_3_1; -int GLAD_GL_VERSION_3_2; -int GLAD_GL_VERSION_3_3; -PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; -PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; -PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; -PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; -PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; -PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; -PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; -PFNGLBINDSAMPLERPROC glad_glBindSampler; -PFNGLLINEWIDTHPROC glad_glLineWidth; -PFNGLCOLORP3UIVPROC glad_glColorP3uiv; -PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; -PFNGLCOMPILESHADERPROC glad_glCompileShader; -PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; -PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; -PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; -PFNGLVERTEXP4UIPROC glad_glVertexP4ui; -PFNGLENABLEIPROC glad_glEnablei; -PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; -PFNGLCREATESHADERPROC glad_glCreateShader; -PFNGLISBUFFERPROC glad_glIsBuffer; -PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; -PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; -PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; -PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; -PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; -PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; -PFNGLHINTPROC glad_glHint; -PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; -PFNGLSAMPLEMASKIPROC glad_glSampleMaski; -PFNGLVERTEXP2UIPROC glad_glVertexP2ui; -PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; -PFNGLPOINTSIZEPROC glad_glPointSize; -PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; -PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; -PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; -PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; -PFNGLWAITSYNCPROC glad_glWaitSync; -PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; -PFNGLUNIFORM3IPROC glad_glUniform3i; -PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; -PFNGLUNIFORM3FPROC glad_glUniform3f; -PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; -PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; -PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; -PFNGLCOLORMASKIPROC glad_glColorMaski; -PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; -PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; -PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; -PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; -PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; -PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; -PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; -PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; -PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; -PFNGLDRAWARRAYSPROC glad_glDrawArrays; -PFNGLUNIFORM1UIPROC glad_glUniform1ui; -PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; -PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; -PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; -PFNGLCLEARPROC glad_glClear; -PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; -PFNGLISENABLEDPROC glad_glIsEnabled; -PFNGLSTENCILOPPROC glad_glStencilOp; -PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; -PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; -PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; -PFNGLTEXIMAGE1DPROC glad_glTexImage1D; -PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; -PFNGLGETTEXIMAGEPROC glad_glGetTexImage; -PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; -PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; -PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; -PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; -PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; -PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; -PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; -PFNGLGETQUERYIVPROC glad_glGetQueryiv; -PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; -PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; -PFNGLISSHADERPROC glad_glIsShader; -PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; -PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; -PFNGLENABLEPROC glad_glEnable; -PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; -PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; -PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; -PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; -PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; -PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; -PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; -PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; -PFNGLDRAWBUFFERPROC glad_glDrawBuffer; -PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; -PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; -PFNGLFLUSHPROC glad_glFlush; -PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; -PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; -PFNGLFENCESYNCPROC glad_glFenceSync; -PFNGLCOLORP3UIPROC glad_glColorP3ui; -PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; -PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; -PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; -PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; -PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; -PFNGLGENSAMPLERSPROC glad_glGenSamplers; -PFNGLCLAMPCOLORPROC glad_glClampColor; -PFNGLUNIFORM4IVPROC glad_glUniform4iv; -PFNGLCLEARSTENCILPROC glad_glClearStencil; -PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; -PFNGLGENTEXTURESPROC glad_glGenTextures; -PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; -PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; -PFNGLISSYNCPROC glad_glIsSync; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; -PFNGLUNIFORM2IPROC glad_glUniform2i; -PFNGLUNIFORM2FPROC glad_glUniform2f; -PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; -PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; -PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; -PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; -PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; -PFNGLGENQUERIESPROC glad_glGenQueries; -PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; -PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; -PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; -PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; -PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; -PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; -PFNGLISENABLEDIPROC glad_glIsEnabledi; -PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; -PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; -PFNGLUNIFORM2IVPROC glad_glUniform2iv; -PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; -PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; -PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; -PFNGLGETSHADERIVPROC glad_glGetShaderiv; -PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; -PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; -PFNGLGETDOUBLEVPROC glad_glGetDoublev; -PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; -PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; -PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; -PFNGLUNIFORM3FVPROC glad_glUniform3fv; -PFNGLDEPTHRANGEPROC glad_glDepthRange; -PFNGLMAPBUFFERPROC glad_glMapBuffer; -PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; -PFNGLDELETESYNCPROC glad_glDeleteSync; -PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; -PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; -PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; -PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; -PFNGLUNIFORM3IVPROC glad_glUniform3iv; -PFNGLPOLYGONMODEPROC glad_glPolygonMode; -PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; -PFNGLUSEPROGRAMPROC glad_glUseProgram; -PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; -PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; -PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; -PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; -PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; -PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; -PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; -PFNGLFINISHPROC glad_glFinish; -PFNGLDELETESHADERPROC glad_glDeleteShader; -PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; -PFNGLVIEWPORTPROC glad_glViewport; -PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; -PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; -PFNGLUNIFORM2UIPROC glad_glUniform2ui; -PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; -PFNGLCLEARDEPTHPROC glad_glClearDepth; -PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; -PFNGLTEXPARAMETERFPROC glad_glTexParameterf; -PFNGLTEXPARAMETERIPROC glad_glTexParameteri; -PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; -PFNGLTEXBUFFERPROC glad_glTexBuffer; -PFNGLPIXELSTOREIPROC glad_glPixelStorei; -PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; -PFNGLPIXELSTOREFPROC glad_glPixelStoref; -PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; -PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; -PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; -PFNGLLINKPROGRAMPROC glad_glLinkProgram; -PFNGLBINDTEXTUREPROC glad_glBindTexture; -PFNGLGETSTRINGPROC glad_glGetString; -PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; -PFNGLDETACHSHADERPROC glad_glDetachShader; -PFNGLENDQUERYPROC glad_glEndQuery; -PFNGLNORMALP3UIPROC glad_glNormalP3ui; -PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; -PFNGLDELETETEXTURESPROC glad_glDeleteTextures; -PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; -PFNGLDELETEQUERIESPROC glad_glDeleteQueries; -PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; -PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; -PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; -PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; -PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; -PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; -PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; -PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; -PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; -PFNGLUNIFORM1FPROC glad_glUniform1f; -PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; -PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; -PFNGLUNIFORM1IPROC glad_glUniform1i; -PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; -PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; -PFNGLDISABLEPROC glad_glDisable; -PFNGLLOGICOPPROC glad_glLogicOp; -PFNGLUNIFORM4UIPROC glad_glUniform4ui; -PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; -PFNGLCULLFACEPROC glad_glCullFace; -PFNGLGETSTRINGIPROC glad_glGetStringi; -PFNGLATTACHSHADERPROC glad_glAttachShader; -PFNGLQUERYCOUNTERPROC glad_glQueryCounter; -PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; -PFNGLDRAWELEMENTSPROC glad_glDrawElements; -PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; -PFNGLUNIFORM1IVPROC glad_glUniform1iv; -PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; -PFNGLREADBUFFERPROC glad_glReadBuffer; -PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; -PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; -PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; -PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; -PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; -PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; -PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; -PFNGLBLENDCOLORPROC glad_glBlendColor; -PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; -PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; -PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; -PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; -PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; -PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; -PFNGLISPROGRAMPROC glad_glIsProgram; -PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; -PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; -PFNGLUNIFORM4IPROC glad_glUniform4i; -PFNGLACTIVETEXTUREPROC glad_glActiveTexture; -PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; -PFNGLREADPIXELSPROC glad_glReadPixels; -PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; -PFNGLUNIFORM4FPROC glad_glUniform4f; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; -PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; -PFNGLSTENCILFUNCPROC glad_glStencilFunc; -PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; -PFNGLCOLORP4UIPROC glad_glColorP4ui; -PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; -PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; -PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; -PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; -PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; -PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; -PFNGLGENBUFFERSPROC glad_glGenBuffers; -PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; -PFNGLBLENDFUNCPROC glad_glBlendFunc; -PFNGLCREATEPROGRAMPROC glad_glCreateProgram; -PFNGLTEXIMAGE3DPROC glad_glTexImage3D; -PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; -PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; -PFNGLGETINTEGER64VPROC glad_glGetInteger64v; -PFNGLSCISSORPROC glad_glScissor; -PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; -PFNGLGETBOOLEANVPROC glad_glGetBooleanv; -PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; -PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; -PFNGLCLEARCOLORPROC glad_glClearColor; -PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; -PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; -PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; -PFNGLCOLORP4UIVPROC glad_glColorP4uiv; -PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; -PFNGLUNIFORM3UIPROC glad_glUniform3ui; -PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; -PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; -PFNGLUNIFORM2FVPROC glad_glUniform2fv; -PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; -PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; -PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; -PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; -PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; -PFNGLDEPTHFUNCPROC glad_glDepthFunc; -PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; -PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; -PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; -PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; -PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; -PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; -PFNGLCOLORMASKPROC glad_glColorMask; -PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; -PFNGLBLENDEQUATIONPROC glad_glBlendEquation; -PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; -PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; -PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; -PFNGLUNIFORM4FVPROC glad_glUniform4fv; -PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; -PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; -PFNGLISSAMPLERPROC glad_glIsSampler; -PFNGLVERTEXP3UIPROC glad_glVertexP3ui; -PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; -PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; -PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; -PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; -PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; -PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; -PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; -PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; -PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; -PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; -PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; -PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; -PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; -PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; -PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; -PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; -PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; -PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; -PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; -PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; -PFNGLDISABLEIPROC glad_glDisablei; -PFNGLSHADERSOURCEPROC glad_glShaderSource; -PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; -PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; -PFNGLGETSYNCIVPROC glad_glGetSynciv; -PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; -PFNGLBEGINQUERYPROC glad_glBeginQuery; -PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; -PFNGLBINDBUFFERPROC glad_glBindBuffer; -PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; -PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; -PFNGLBUFFERDATAPROC glad_glBufferData; -PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; -PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; -PFNGLGETERRORPROC glad_glGetError; -PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; -PFNGLGETFLOATVPROC glad_glGetFloatv; -PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; -PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; -PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; -PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; -PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; -PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; -PFNGLGETINTEGERVPROC glad_glGetIntegerv; -PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; -PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; -PFNGLISQUERYPROC glad_glIsQuery; -PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; -PFNGLTEXIMAGE2DPROC glad_glTexImage2D; -PFNGLSTENCILMASKPROC glad_glStencilMask; -PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; -PFNGLISTEXTUREPROC glad_glIsTexture; -PFNGLUNIFORM1FVPROC glad_glUniform1fv; -PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; -PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; -PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; -PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; -PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; -PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; -PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; -PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; -PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; -PFNGLDEPTHMASKPROC glad_glDepthMask; -PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; -PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; -PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; -PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; -PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; -PFNGLFRONTFACEPROC glad_glFrontFace; -int GLAD_GL_SGIX_pixel_tiles; -int GLAD_GL_NV_point_sprite; -int GLAD_GL_APPLE_element_array; -int GLAD_GL_AMD_multi_draw_indirect; -int GLAD_GL_EXT_blend_subtract; -int GLAD_GL_SGIX_tag_sample_buffer; -int GLAD_GL_IBM_texture_mirrored_repeat; -int GLAD_GL_APPLE_transform_hint; -int GLAD_GL_ATI_separate_stencil; -int GLAD_GL_NV_shader_atomic_int64; -int GLAD_GL_NV_vertex_program2_option; -int GLAD_GL_EXT_texture_buffer_object; -int GLAD_GL_ARB_vertex_blend; -int GLAD_GL_OVR_multiview; -int GLAD_GL_ARB_program_interface_query; -int GLAD_GL_EXT_misc_attribute; -int GLAD_GL_NV_multisample_coverage; -int GLAD_GL_ARB_shading_language_packing; -int GLAD_GL_EXT_texture_cube_map; -int GLAD_GL_NV_viewport_array2; -int GLAD_GL_KHR_robustness; -int GLAD_GL_EXT_index_func; -int GLAD_GL_OES_compressed_paletted_texture; -int GLAD_GL_NV_depth_clamp; -int GLAD_GL_NV_shader_buffer_load; -int GLAD_GL_EXT_color_subtable; -int GLAD_GL_SUNX_constant_data; -int GLAD_GL_EXT_multi_draw_arrays; -int GLAD_GL_ARB_shader_atomic_counters; -int GLAD_GL_ARB_arrays_of_arrays; -int GLAD_GL_NV_conditional_render; -int GLAD_GL_EXT_texture_env_combine; -int GLAD_GL_AMD_depth_clamp_separate; -int GLAD_GL_SGIX_async_histogram; -int GLAD_GL_MESA_resize_buffers; -int GLAD_GL_ARB_sample_shading; -int GLAD_GL_NV_texture_env_combine4; -int GLAD_GL_ARB_texture_view; -int GLAD_GL_ARB_texture_env_combine; -int GLAD_GL_ARB_map_buffer_range; -int GLAD_GL_EXT_convolution; -int GLAD_GL_NV_compute_program5; -int GLAD_GL_EXT_paletted_texture; -int GLAD_GL_ARB_texture_buffer_object; -int GLAD_GL_SUN_triangle_list; -int GLAD_GL_SGIX_resample; -int GLAD_GL_SGIX_flush_raster; -int GLAD_GL_EXT_light_texture; -int GLAD_GL_ARB_point_sprite; -int GLAD_GL_ARB_sparse_texture2; -int GLAD_GL_ARB_half_float_pixel; -int GLAD_GL_NV_tessellation_program5; -int GLAD_GL_REND_screen_coordinates; -int GLAD_GL_HP_image_transform; -int GLAD_GL_EXT_packed_float; -int GLAD_GL_ATI_vertex_attrib_array_object; -int GLAD_GL_SGIX_vertex_preclip; -int GLAD_GL_SGIX_texture_scale_bias; -int GLAD_GL_AMD_draw_buffers_blend; -int GLAD_GL_APPLE_texture_range; -int GLAD_GL_SGIX_framezoom; -int GLAD_GL_NV_texture_barrier; -int GLAD_GL_ARB_texture_query_levels; -int GLAD_GL_EXT_blend_logic_op; -int GLAD_GL_EXT_texture_swizzle; -int GLAD_GL_ARB_texture_rg; -int GLAD_GL_ARB_vertex_type_2_10_10_10_rev; -int GLAD_GL_ARB_fragment_shader; -int GLAD_GL_3DFX_tbuffer; -int GLAD_GL_SGIX_ycrcb; -int GLAD_GL_IBM_cull_vertex; -int GLAD_GL_EXT_separate_shader_objects; -int GLAD_GL_NV_texture_multisample; -int GLAD_GL_ARB_shader_objects; -int GLAD_GL_ARB_framebuffer_object; -int GLAD_GL_ATI_envmap_bumpmap; -int GLAD_GL_ARB_robust_buffer_access_behavior; -int GLAD_GL_ARB_shader_stencil_export; -int GLAD_GL_AMD_sample_positions; -int GLAD_GL_ARB_enhanced_layouts; -int GLAD_GL_ARB_texture_rectangle; -int GLAD_GL_SGI_texture_color_table; -int GLAD_GL_ATI_map_object_buffer; -int GLAD_GL_ARB_robustness; -int GLAD_GL_NV_pixel_data_range; -int GLAD_GL_EXT_framebuffer_blit; -int GLAD_GL_ARB_gpu_shader_fp64; -int GLAD_GL_NV_command_list; -int GLAD_GL_ARB_window_pos; -int GLAD_GL_ARB_robustness_isolation; -int GLAD_GL_GREMEDY_string_marker; -int GLAD_GL_ARB_texture_compression_bptc; -int GLAD_GL_EXT_subtexture; -int GLAD_GL_EXT_pixel_transform_color_table; -int GLAD_GL_EXT_texture_compression_rgtc; -int GLAD_GL_ARB_shadow; -int GLAD_GL_SGIX_depth_pass_instrument; -int GLAD_GL_NVX_conditional_render; -int GLAD_GL_NV_evaluators; -int GLAD_GL_SGIS_texture_filter4; -int GLAD_GL_AMD_performance_monitor; -int GLAD_GL_NV_geometry_shader4; -int GLAD_GL_EXT_stencil_clear_tag; -int GLAD_GL_NV_vertex_program1_1; -int GLAD_GL_NV_present_video; -int GLAD_GL_ARB_texture_compression_rgtc; -int GLAD_GL_ARB_texture_filter_minmax; -int GLAD_GL_HP_convolution_border_modes; -int GLAD_GL_EXT_gpu_program_parameters; -int GLAD_GL_SGIX_list_priority; -int GLAD_GL_ARB_stencil_texturing; -int GLAD_GL_ARB_shader_clock; -int GLAD_GL_NV_shader_atomic_fp16_vector; -int GLAD_GL_SGIX_fog_offset; -int GLAD_GL_ARB_draw_elements_base_vertex; -int GLAD_GL_INGR_interlace_read; -int GLAD_GL_NV_transform_feedback; -int GLAD_GL_EXT_post_depth_coverage; -int GLAD_GL_ARB_debug_output; -int GLAD_GL_AMD_stencil_operation_extended; -int GLAD_GL_ARB_compatibility; -int GLAD_GL_ARB_instanced_arrays; -int GLAD_GL_ARB_get_texture_sub_image; -int GLAD_GL_NV_vertex_array_range2; -int GLAD_GL_ARB_texture_stencil8; -int GLAD_GL_AMD_sparse_texture; -int GLAD_GL_ARB_clip_control; -int GLAD_GL_NV_fragment_coverage_to_color; -int GLAD_GL_NV_fence; -int GLAD_GL_ARB_texture_buffer_range; -int GLAD_GL_SUN_mesh_array; -int GLAD_GL_ARB_vertex_attrib_binding; -int GLAD_GL_EXT_texture_compression_s3tc; -int GLAD_GL_ARB_cl_event; -int GLAD_GL_ARB_derivative_control; -int GLAD_GL_NV_packed_depth_stencil; -int GLAD_GL_OES_single_precision; -int GLAD_GL_NV_primitive_restart; -int GLAD_GL_ARB_fragment_shader_interlock; -int GLAD_GL_EXT_texture_object; -int GLAD_GL_AMD_name_gen_delete; -int GLAD_GL_NV_texture_compression_vtc; -int GLAD_GL_NV_sample_mask_override_coverage; -int GLAD_GL_NV_texture_shader3; -int GLAD_GL_NV_texture_shader2; -int GLAD_GL_EXT_texture; -int GLAD_GL_ARB_buffer_storage; -int GLAD_GL_AMD_shader_atomic_counter_ops; -int GLAD_GL_APPLE_vertex_program_evaluators; -int GLAD_GL_ARB_multi_bind; -int GLAD_GL_ARB_explicit_uniform_location; -int GLAD_GL_ARB_depth_buffer_float; -int GLAD_GL_NV_path_rendering_shared_edge; -int GLAD_GL_SGIX_shadow_ambient; -int GLAD_GL_ARB_texture_cube_map; -int GLAD_GL_AMD_vertex_shader_viewport_index; -int GLAD_GL_EXT_shader_integer_mix; -int GLAD_GL_NV_vertex_buffer_unified_memory; -int GLAD_GL_EXT_fog_coord; -int GLAD_GL_EXT_texture_env_dot3; -int GLAD_GL_ATI_texture_env_combine3; -int GLAD_GL_ARB_map_buffer_alignment; -int GLAD_GL_NV_blend_equation_advanced; -int GLAD_GL_SGIS_sharpen_texture; -int GLAD_GL_KHR_robust_buffer_access_behavior; -int GLAD_GL_ARB_pipeline_statistics_query; -int GLAD_GL_ARB_vertex_program; -int GLAD_GL_ARB_texture_rgb10_a2ui; -int GLAD_GL_OML_interlace; -int GLAD_GL_ATI_pixel_format_float; -int GLAD_GL_ARB_vertex_buffer_object; -int GLAD_GL_EXT_shadow_funcs; -int GLAD_GL_ATI_text_fragment_shader; -int GLAD_GL_NV_vertex_array_range; -int GLAD_GL_SGIX_fragment_lighting; -int GLAD_GL_NV_texture_expand_normal; -int GLAD_GL_NV_framebuffer_multisample_coverage; -int GLAD_GL_ARB_framebuffer_no_attachments; -int GLAD_GL_EXT_timer_query; -int GLAD_GL_EXT_vertex_array_bgra; -int GLAD_GL_NV_bindless_texture; -int GLAD_GL_KHR_debug; -int GLAD_GL_SGIS_texture_border_clamp; -int GLAD_GL_OML_subsample; -int GLAD_GL_SGIX_clipmap; -int GLAD_GL_EXT_geometry_shader4; -int GLAD_GL_ARB_shader_texture_image_samples; -int GLAD_GL_MESA_ycbcr_texture; -int GLAD_GL_MESAX_texture_stack; -int GLAD_GL_AMD_seamless_cubemap_per_texture; -int GLAD_GL_EXT_bindable_uniform; -int GLAD_GL_KHR_texture_compression_astc_hdr; -int GLAD_GL_ARB_shader_ballot; -int GLAD_GL_KHR_blend_equation_advanced; -int GLAD_GL_ARB_fragment_program_shadow; -int GLAD_GL_ATI_element_array; -int GLAD_GL_ARB_sparse_texture_clamp; -int GLAD_GL_AMD_texture_texture4; -int GLAD_GL_SGIX_reference_plane; -int GLAD_GL_EXT_stencil_two_side; -int GLAD_GL_ARB_transform_feedback_overflow_query; -int GLAD_GL_SGIX_texture_lod_bias; -int GLAD_GL_KHR_no_error; -int GLAD_GL_NV_explicit_multisample; -int GLAD_GL_IBM_static_data; -int GLAD_GL_EXT_clip_volume_hint; -int GLAD_GL_EXT_texture_perturb_normal; -int GLAD_GL_NV_fragment_program2; -int GLAD_GL_NV_fragment_program4; -int GLAD_GL_EXT_point_parameters; -int GLAD_GL_PGI_misc_hints; -int GLAD_GL_SGIX_subsample; -int GLAD_GL_AMD_shader_stencil_export; -int GLAD_GL_ARB_shader_texture_lod; -int GLAD_GL_ARB_vertex_shader; -int GLAD_GL_ARB_depth_clamp; -int GLAD_GL_SGIS_texture_select; -int GLAD_GL_NV_texture_shader; -int GLAD_GL_ARB_tessellation_shader; -int GLAD_GL_EXT_draw_buffers2; -int GLAD_GL_ARB_vertex_attrib_64bit; -int GLAD_GL_EXT_texture_filter_minmax; -int GLAD_GL_ARB_texture_gather; -int GLAD_GL_AMD_interleaved_elements; -int GLAD_GL_ARB_fragment_program; -int GLAD_GL_OML_resample; -int GLAD_GL_APPLE_ycbcr_422; -int GLAD_GL_SGIX_texture_add_env; -int GLAD_GL_ARB_shadow_ambient; -int GLAD_GL_ARB_texture_storage; -int GLAD_GL_EXT_pixel_buffer_object; -int GLAD_GL_NV_vertex_program; -int GLAD_GL_SGIS_pixel_texture; -int GLAD_GL_SGIS_generate_mipmap; -int GLAD_GL_SGIX_instruments; -int GLAD_GL_ARB_fragment_layer_viewport; -int GLAD_GL_ARB_shader_storage_buffer_object; -int GLAD_GL_EXT_sparse_texture2; -int GLAD_GL_EXT_blend_minmax; -int GLAD_GL_MESA_pack_invert; -int GLAD_GL_ARB_base_instance; -int GLAD_GL_SUN_global_alpha; -int GLAD_GL_PGI_vertex_hints; -int GLAD_GL_AMD_transform_feedback4; -int GLAD_GL_ARB_ES3_1_compatibility; -int GLAD_GL_EXT_texture_integer; -int GLAD_GL_ARB_texture_multisample; -int GLAD_GL_AMD_gpu_shader_int64; -int GLAD_GL_S3_s3tc; -int GLAD_GL_ARB_query_buffer_object; -int GLAD_GL_AMD_vertex_shader_tessellator; -int GLAD_GL_ARB_invalidate_subdata; -int GLAD_GL_ARB_draw_indirect; -int GLAD_GL_ARB_transform_feedback2; -int GLAD_GL_EXT_index_material; -int GLAD_GL_NV_blend_equation_advanced_coherent; -int GLAD_GL_ARB_texture_non_power_of_two; -int GLAD_GL_KHR_texture_compression_astc_sliced_3d; -int GLAD_GL_ATI_draw_buffers; -int GLAD_GL_EXT_cmyka; -int GLAD_GL_SGIX_pixel_texture; -int GLAD_GL_APPLE_specular_vector; -int GLAD_GL_ARB_seamless_cubemap_per_texture; -int GLAD_GL_ARB_conservative_depth; -int GLAD_GL_SGIX_interlace; -int GLAD_GL_NV_parameter_buffer_object; -int GLAD_GL_AMD_shader_trinary_minmax; -int GLAD_GL_EXT_texture_lod_bias; -int GLAD_GL_EXT_rescale_normal; -int GLAD_GL_ARB_pixel_buffer_object; -int GLAD_GL_ARB_uniform_buffer_object; -int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev; -int GLAD_GL_ARB_texture_swizzle; -int GLAD_GL_ARB_texture_compression; -int GLAD_GL_SGIX_async_pixel; -int GLAD_GL_NV_fragment_program_option; -int GLAD_GL_ARB_explicit_attrib_location; -int GLAD_GL_EXT_blend_color; -int GLAD_GL_NV_shader_thread_group; -int GLAD_GL_EXT_stencil_wrap; -int GLAD_GL_EXT_index_array_formats; -int GLAD_GL_OVR_multiview2; -int GLAD_GL_EXT_histogram; -int GLAD_GL_EXT_polygon_offset; -int GLAD_GL_SGIS_point_parameters; -int GLAD_GL_EXT_direct_state_access; -int GLAD_GL_ARB_shader_group_vote; -int GLAD_GL_NV_texture_rectangle; -int GLAD_GL_ARB_copy_image; -int GLAD_GL_NV_shader_thread_shuffle; -int GLAD_GL_ARB_shader_precision; -int GLAD_GL_EXT_vertex_shader; -int GLAD_GL_EXT_blend_func_separate; -int GLAD_GL_APPLE_fence; -int GLAD_GL_OES_byte_coordinates; -int GLAD_GL_ARB_transpose_matrix; -int GLAD_GL_ARB_provoking_vertex; -int GLAD_GL_NV_uniform_buffer_unified_memory; -int GLAD_GL_NV_fragment_shader_interlock; -int GLAD_GL_EXT_vertex_array; -int GLAD_GL_ARB_half_float_vertex; -int GLAD_GL_EXT_blend_equation_separate; -int GLAD_GL_NV_framebuffer_mixed_samples; -int GLAD_GL_ARB_multi_draw_indirect; -int GLAD_GL_EXT_raster_multisample; -int GLAD_GL_NV_copy_image; -int GLAD_GL_NV_geometry_shader_passthrough; -int GLAD_GL_INTEL_framebuffer_CMAA; -int GLAD_GL_SGIX_convolution_accuracy; -int GLAD_GL_ARB_transform_feedback3; -int GLAD_GL_SGIX_ycrcba; -int GLAD_GL_EXT_debug_marker; -int GLAD_GL_EXT_bgra; -int GLAD_GL_INTEL_parallel_arrays; -int GLAD_GL_EXT_pixel_transform; -int GLAD_GL_NV_vertex_attrib_integer_64bit; -int GLAD_GL_ATI_fragment_shader; -int GLAD_GL_ARB_vertex_array_object; -int GLAD_GL_ATI_pn_triangles; -int GLAD_GL_EXT_texture_env_add; -int GLAD_GL_EXT_packed_depth_stencil; -int GLAD_GL_EXT_texture_mirror_clamp; -int GLAD_GL_NV_multisample_filter_hint; -int GLAD_GL_INTEL_performance_query; -int GLAD_GL_ARB_transform_feedback_instanced; -int GLAD_GL_SGIX_async; -int GLAD_GL_EXT_texture_compression_latc; -int GLAD_GL_NV_shader_atomic_float; -int GLAD_GL_ARB_shading_language_100; -int GLAD_GL_APPLE_float_pixels; -int GLAD_GL_ARB_texture_mirror_clamp_to_edge; -int GLAD_GL_NV_vertex_program2; -int GLAD_GL_NV_bindless_multi_draw_indirect_count; -int GLAD_GL_ARB_depth_texture; -int GLAD_GL_ARB_ES2_compatibility; -int GLAD_GL_ARB_indirect_parameters; -int GLAD_GL_NV_half_float; -int GLAD_GL_ARB_ES3_2_compatibility; -int GLAD_GL_ATI_texture_mirror_once; -int GLAD_GL_IBM_rasterpos_clip; -int GLAD_GL_SGIX_shadow; -int GLAD_GL_EXT_polygon_offset_clamp; -int GLAD_GL_NV_deep_texture3D; -int GLAD_GL_ARB_shader_draw_parameters; -int GLAD_GL_SGIX_calligraphic_fragment; -int GLAD_GL_ARB_shader_bit_encoding; -int GLAD_GL_EXT_compiled_vertex_array; -int GLAD_GL_NV_depth_buffer_float; -int GLAD_GL_APPLE_flush_buffer_range; -int GLAD_GL_ARB_imaging; -int GLAD_GL_ARB_draw_buffers_blend; -int GLAD_GL_AMD_gcn_shader; -int GLAD_GL_AMD_blend_minmax_factor; -int GLAD_GL_EXT_texture_sRGB_decode; -int GLAD_GL_ARB_shading_language_420pack; -int GLAD_GL_ARB_shader_viewport_layer_array; -int GLAD_GL_ATI_meminfo; -int GLAD_GL_EXT_abgr; -int GLAD_GL_AMD_pinned_memory; -int GLAD_GL_EXT_texture_snorm; -int GLAD_GL_SGIX_texture_coordinate_clamp; -int GLAD_GL_ARB_clear_buffer_object; -int GLAD_GL_ARB_multisample; -int GLAD_GL_EXT_debug_label; -int GLAD_GL_NV_light_max_exponent; -int GLAD_GL_NV_internalformat_sample_query; -int GLAD_GL_INTEL_map_texture; -int GLAD_GL_ARB_texture_env_crossbar; -int GLAD_GL_EXT_422_pixels; -int GLAD_GL_ARB_compute_shader; -int GLAD_GL_NV_texgen_emboss; -int GLAD_GL_ARB_blend_func_extended; -int GLAD_GL_IBM_vertex_array_lists; -int GLAD_GL_ARB_color_buffer_float; -int GLAD_GL_ARB_bindless_texture; -int GLAD_GL_SGIX_depth_texture; -int GLAD_GL_ARB_internalformat_query; -int GLAD_GL_ARB_shader_atomic_counter_ops; -int GLAD_GL_ARB_texture_mirrored_repeat; -int GLAD_GL_EXT_shader_image_load_store; -int GLAD_GL_EXT_copy_texture; -int GLAD_GL_NV_register_combiners2; -int GLAD_GL_SGIX_ycrcb_subsample; -int GLAD_GL_ARB_copy_buffer; -int GLAD_GL_NV_draw_texture; -int GLAD_GL_EXT_texture_shared_exponent; -int GLAD_GL_EXT_draw_instanced; -int GLAD_GL_NV_copy_depth_to_color; -int GLAD_GL_ARB_viewport_array; -int GLAD_GL_ARB_separate_shader_objects; -int GLAD_GL_EXT_multisample; -int GLAD_GL_EXT_depth_bounds_test; -int GLAD_GL_EXT_shared_texture_palette; -int GLAD_GL_ARB_texture_env_add; -int GLAD_GL_NV_video_capture; -int GLAD_GL_ARB_sampler_objects; -int GLAD_GL_ARB_matrix_palette; -int GLAD_GL_SGIS_texture_color_mask; -int GLAD_GL_EXT_packed_pixels; -int GLAD_GL_EXT_coordinate_frame; -int GLAD_GL_NV_transform_feedback2; -int GLAD_GL_APPLE_aux_depth_stencil; -int GLAD_GL_ARB_shader_subroutine; -int GLAD_GL_EXT_framebuffer_sRGB; -int GLAD_GL_ARB_texture_storage_multisample; -int GLAD_GL_KHR_blend_equation_advanced_coherent; -int GLAD_GL_EXT_vertex_attrib_64bit; -int GLAD_GL_HP_texture_lighting; -int GLAD_GL_NV_shader_buffer_store; -int GLAD_GL_OES_query_matrix; -int GLAD_GL_MESA_window_pos; -int GLAD_GL_NV_fill_rectangle; -int GLAD_GL_NV_shader_storage_buffer_object; -int GLAD_GL_ARB_texture_query_lod; -int GLAD_GL_SGIX_ir_instrument1; -int GLAD_GL_ARB_shader_image_size; -int GLAD_GL_NV_shader_atomic_counters; -int GLAD_GL_APPLE_object_purgeable; -int GLAD_GL_ARB_occlusion_query; -int GLAD_GL_INGR_color_clamp; -int GLAD_GL_SGI_color_table; -int GLAD_GL_EXT_framebuffer_multisample_blit_scaled; -int GLAD_GL_ARB_texture_cube_map_array; -int GLAD_GL_AMD_debug_output; -int GLAD_GL_EXT_gpu_shader4; -int GLAD_GL_NV_geometry_program4; -int GLAD_GL_NV_gpu_program5_mem_extended; -int GLAD_GL_SGIX_scalebias_hint; -int GLAD_GL_ARB_texture_border_clamp; -int GLAD_GL_ARB_fragment_coord_conventions; -int GLAD_GL_SGIX_polynomial_ffd; -int GLAD_GL_EXT_provoking_vertex; -int GLAD_GL_ARB_point_parameters; -int GLAD_GL_ARB_shader_image_load_store; -int GLAD_GL_ARB_conditional_render_inverted; -int GLAD_GL_HP_occlusion_test; -int GLAD_GL_ARB_ES3_compatibility; -int GLAD_GL_EXT_texture_array; -int GLAD_GL_ARB_texture_buffer_object_rgb32; -int GLAD_GL_NV_bindless_multi_draw_indirect; -int GLAD_GL_SGIX_texture_multi_buffer; -int GLAD_GL_EXT_transform_feedback; -int GLAD_GL_KHR_texture_compression_astc_ldr; -int GLAD_GL_3DFX_multisample; -int GLAD_GL_INTEL_fragment_shader_ordering; -int GLAD_GL_ARB_texture_env_dot3; -int GLAD_GL_NV_gpu_program4; -int GLAD_GL_NV_gpu_program5; -int GLAD_GL_NV_float_buffer; -int GLAD_GL_SGIS_texture_edge_clamp; -int GLAD_GL_ARB_framebuffer_sRGB; -int GLAD_GL_SUN_slice_accum; -int GLAD_GL_EXT_index_texture; -int GLAD_GL_EXT_shader_image_load_formatted; -int GLAD_GL_ARB_geometry_shader4; -int GLAD_GL_EXT_separate_specular_color; -int GLAD_GL_NV_fog_distance; -int GLAD_GL_NV_conservative_raster; -int GLAD_GL_SUN_convolution_border_modes; -int GLAD_GL_SGIX_sprite; -int GLAD_GL_ARB_get_program_binary; -int GLAD_GL_ARB_timer_query; -int GLAD_GL_AMD_occlusion_query_event; -int GLAD_GL_SGIS_multisample; -int GLAD_GL_EXT_framebuffer_object; -int GLAD_GL_EXT_vertex_weighting; -int GLAD_GL_ARB_vertex_array_bgra; -int GLAD_GL_APPLE_vertex_array_range; -int GLAD_GL_AMD_query_buffer_object; -int GLAD_GL_NV_register_combiners; -int GLAD_GL_ARB_draw_buffers; -int GLAD_GL_ARB_clear_texture; -int GLAD_GL_NV_fragment_program; -int GLAD_GL_SGI_color_matrix; -int GLAD_GL_EXT_cull_vertex; -int GLAD_GL_EXT_texture_sRGB; -int GLAD_GL_APPLE_row_bytes; -int GLAD_GL_NV_texgen_reflection; -int GLAD_GL_IBM_multimode_draw_arrays; -int GLAD_GL_APPLE_vertex_array_object; -int GLAD_GL_3DFX_texture_compression_FXT1; -int GLAD_GL_GREMEDY_frame_terminator; -int GLAD_GL_AMD_conservative_depth; -int GLAD_GL_ARB_texture_float; -int GLAD_GL_ARB_compressed_texture_pixel_storage; -int GLAD_GL_SGIS_detail_texture; -int GLAD_GL_ARB_draw_instanced; -int GLAD_GL_OES_read_format; -int GLAD_GL_ATI_texture_float; -int GLAD_GL_WIN_specular_fog; -int GLAD_GL_AMD_vertex_shader_layer; -int GLAD_GL_ARB_shading_language_include; -int GLAD_GL_APPLE_client_storage; -int GLAD_GL_WIN_phong_shading; -int GLAD_GL_INGR_blend_func_separate; -int GLAD_GL_NV_path_rendering; -int GLAD_GL_NV_conservative_raster_dilate; -int GLAD_GL_ARB_texture_barrier; -int GLAD_GL_ATI_vertex_streams; -int GLAD_GL_ARB_post_depth_coverage; -int GLAD_GL_NV_occlusion_query; -int GLAD_GL_APPLE_rgb_422; -int GLAD_GL_ARB_direct_state_access; -int GLAD_GL_ARB_gpu_shader_int64; -int GLAD_GL_ARB_seamless_cube_map; -int GLAD_GL_ARB_cull_distance; -int GLAD_GL_NV_vdpau_interop; -int GLAD_GL_ARB_occlusion_query2; -int GLAD_GL_ARB_internalformat_query2; -int GLAD_GL_EXT_texture_filter_anisotropic; -int GLAD_GL_SUN_vertex; -int GLAD_GL_ARB_sparse_texture; -int GLAD_GL_SGIS_texture_lod; -int GLAD_GL_NV_vertex_program3; -int GLAD_GL_NV_gpu_shader5; -int GLAD_GL_NV_vertex_program4; -int GLAD_GL_AMD_transform_feedback3_lines_triangles; -int GLAD_GL_SGIS_fog_function; -int GLAD_GL_EXT_x11_sync_object; -int GLAD_GL_ARB_sync; -int GLAD_GL_NV_sample_locations; -int GLAD_GL_ARB_compute_variable_group_size; -int GLAD_GL_OES_fixed_point; -int GLAD_GL_NV_blend_square; -int GLAD_GL_EXT_framebuffer_multisample; -int GLAD_GL_ARB_gpu_shader5; -int GLAD_GL_SGIS_texture4D; -int GLAD_GL_EXT_texture3D; -int GLAD_GL_ARB_multitexture; -int GLAD_GL_EXT_secondary_color; -int GLAD_GL_NV_parameter_buffer_object2; -int GLAD_GL_ATI_vertex_array_object; -int GLAD_GL_ARB_parallel_shader_compile; -int GLAD_GL_NVX_gpu_memory_info; -int GLAD_GL_SGIX_igloo_interface; -int GLAD_GL_SGIS_point_line_texgen; -int GLAD_GL_ARB_sample_locations; -int GLAD_GL_ARB_sparse_buffer; -int GLAD_GL_EXT_draw_range_elements; -int GLAD_GL_SGIX_blend_alpha_minmax; -int GLAD_GL_KHR_context_flush_control; -PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE; -PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE; -PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE; -PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE; -PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE; -PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD; -PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD; -PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX; -PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV; -PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV; -PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI; -PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI; -PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT; -PFNGLWEIGHTBVARBPROC glad_glWeightbvARB; -PFNGLWEIGHTSVARBPROC glad_glWeightsvARB; -PFNGLWEIGHTIVARBPROC glad_glWeightivARB; -PFNGLWEIGHTFVARBPROC glad_glWeightfvARB; -PFNGLWEIGHTDVARBPROC glad_glWeightdvARB; -PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB; -PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB; -PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB; -PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB; -PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB; -PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR; -PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; -PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; -PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; -PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; -PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; -PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; -PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT; -PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV; -PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV; -PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV; -PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV; -PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV; -PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV; -PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV; -PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV; -PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV; -PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV; -PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV; -PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV; -PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV; -PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV; -PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT; -PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT; -PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX; -PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT; -PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT; -PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; -PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV; -PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV; -PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA; -PFNGLTEXTUREVIEWPROC glad_glTextureView; -PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT; -PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT; -PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT; -PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT; -PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT; -PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT; -PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT; -PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT; -PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT; -PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT; -PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT; -PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT; -PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT; -PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV; -PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV; -PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV; -PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV; -PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV; -PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV; -PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV; -PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV; -PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV; -PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV; -PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV; -PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV; -PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV; -PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV; -PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV; -PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV; -PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV; -PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV; -PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV; -PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT; -PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT; -PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT; -PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT; -PFNGLTEXBUFFERARBPROC glad_glTexBufferARB; -PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI; -PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI; -PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX; -PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT; -PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT; -PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT; -PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP; -PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP; -PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP; -PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP; -PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP; -PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP; -PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD; -PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD; -PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD; -PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD; -PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE; -PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE; -PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT; -PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV; -PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX; -PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY; -PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT; -PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT; -PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT; -PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT; -PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT; -PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT; -PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT; -PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT; -PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT; -PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT; -PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT; -PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT; -PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT; -PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT; -PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT; -PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT; -PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT; -PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT; -PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT; -PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT; -PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT; -PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT; -PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT; -PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT; -PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT; -PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT; -PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT; -PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT; -PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT; -PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT; -PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT; -PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT; -PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT; -PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT; -PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT; -PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT; -PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT; -PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT; -PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT; -PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT; -PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT; -PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT; -PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT; -PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV; -PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV; -PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV; -PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV; -PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV; -PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV; -PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB; -PFNGLGETHANDLEARBPROC glad_glGetHandleARB; -PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB; -PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB; -PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB; -PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB; -PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB; -PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB; -PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB; -PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB; -PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB; -PFNGLUNIFORM1FARBPROC glad_glUniform1fARB; -PFNGLUNIFORM2FARBPROC glad_glUniform2fARB; -PFNGLUNIFORM3FARBPROC glad_glUniform3fARB; -PFNGLUNIFORM4FARBPROC glad_glUniform4fARB; -PFNGLUNIFORM1IARBPROC glad_glUniform1iARB; -PFNGLUNIFORM2IARBPROC glad_glUniform2iARB; -PFNGLUNIFORM3IARBPROC glad_glUniform3iARB; -PFNGLUNIFORM4IARBPROC glad_glUniform4iARB; -PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB; -PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB; -PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB; -PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB; -PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB; -PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB; -PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB; -PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB; -PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB; -PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB; -PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB; -PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB; -PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB; -PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB; -PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB; -PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB; -PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB; -PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB; -PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB; -PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB; -PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI; -PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI; -PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI; -PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI; -PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI; -PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI; -PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; -PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; -PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; -PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; -PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; -PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; -PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; -PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; -PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; -PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; -PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; -PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; -PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; -PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; -PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; -PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; -PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; -PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; -PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; -PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; -PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV; -PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV; -PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT; -PFNGLUNIFORM1DPROC glad_glUniform1d; -PFNGLUNIFORM2DPROC glad_glUniform2d; -PFNGLUNIFORM3DPROC glad_glUniform3d; -PFNGLUNIFORM4DPROC glad_glUniform4d; -PFNGLUNIFORM1DVPROC glad_glUniform1dv; -PFNGLUNIFORM2DVPROC glad_glUniform2dv; -PFNGLUNIFORM3DVPROC glad_glUniform3dv; -PFNGLUNIFORM4DVPROC glad_glUniform4dv; -PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; -PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; -PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; -PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; -PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; -PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; -PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; -PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; -PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; -PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; -PFNGLCREATESTATESNVPROC glad_glCreateStatesNV; -PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV; -PFNGLISSTATENVPROC glad_glIsStateNV; -PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV; -PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV; -PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV; -PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV; -PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV; -PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV; -PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV; -PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV; -PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV; -PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV; -PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV; -PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV; -PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV; -PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV; -PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT; -PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT; -PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT; -PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY; -PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT; -PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT; -PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT; -PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT; -PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV; -PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV; -PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV; -PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV; -PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV; -PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV; -PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV; -PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV; -PFNGLEVALMAPSNVPROC glad_glEvalMapsNV; -PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS; -PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS; -PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD; -PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD; -PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD; -PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD; -PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD; -PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD; -PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD; -PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD; -PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD; -PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD; -PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD; -PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT; -PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV; -PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV; -PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV; -PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV; -PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV; -PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV; -PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX; -PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV; -PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV; -PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV; -PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV; -PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV; -PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV; -PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV; -PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV; -PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV; -PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV; -PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV; -PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV; -PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV; -PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV; -PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV; -PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV; -PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV; -PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV; -PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD; -PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB; -PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT; -PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; -PFNGLREADNPIXELSPROC glad_glReadnPixels; -PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; -PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; -PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; -PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR; -PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR; -PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR; -PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR; -PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR; -PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD; -PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD; -PFNGLCLIPCONTROLPROC glad_glClipControl; -PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV; -PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV; -PFNGLGENFENCESNVPROC glad_glGenFencesNV; -PFNGLISFENCENVPROC glad_glIsFenceNV; -PFNGLTESTFENCENVPROC glad_glTestFenceNV; -PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV; -PFNGLFINISHFENCENVPROC glad_glFinishFenceNV; -PFNGLSETFENCENVPROC glad_glSetFenceNV; -PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; -PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN; -PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; -PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; -PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; -PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; -PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; -PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; -PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; -PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; -PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB; -PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES; -PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES; -PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES; -PFNGLFRUSTUMFOESPROC glad_glFrustumfOES; -PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES; -PFNGLORTHOFOESPROC glad_glOrthofOES; -PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV; -PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV; -PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN; -PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN; -PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN; -PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN; -PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN; -PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN; -PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN; -PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN; -PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT; -PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT; -PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT; -PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT; -PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT; -PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT; -PFNGLGENNAMESAMDPROC glad_glGenNamesAMD; -PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD; -PFNGLISNAMEAMDPROC glad_glIsNameAMD; -PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; -PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE; -PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE; -PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE; -PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE; -PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE; -PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE; -PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE; -PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; -PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; -PFNGLBINDTEXTURESPROC glad_glBindTextures; -PFNGLBINDSAMPLERSPROC glad_glBindSamplers; -PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; -PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; -PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX; -PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX; -PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX; -PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX; -PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX; -PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX; -PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV; -PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV; -PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV; -PFNGLCOLORFORMATNVPROC glad_glColorFormatNV; -PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV; -PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV; -PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV; -PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV; -PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV; -PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV; -PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV; -PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV; -PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV; -PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV; -PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS; -PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS; -PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB; -PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB; -PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB; -PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB; -PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB; -PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB; -PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB; -PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB; -PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB; -PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB; -PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB; -PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB; -PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB; -PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB; -PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB; -PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB; -PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB; -PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB; -PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB; -PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB; -PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB; -PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB; -PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB; -PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB; -PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB; -PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB; -PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB; -PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB; -PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB; -PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB; -PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB; -PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB; -PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB; -PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB; -PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB; -PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB; -PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB; -PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB; -PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB; -PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB; -PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB; -PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB; -PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB; -PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB; -PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB; -PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB; -PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB; -PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB; -PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB; -PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB; -PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB; -PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB; -PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB; -PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB; -PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB; -PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB; -PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB; -PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB; -PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB; -PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB; -PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB; -PFNGLISPROGRAMARBPROC glad_glIsProgramARB; -PFNGLBINDBUFFERARBPROC glad_glBindBufferARB; -PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB; -PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB; -PFNGLISBUFFERARBPROC glad_glIsBufferARB; -PFNGLBUFFERDATAARBPROC glad_glBufferDataARB; -PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB; -PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB; -PFNGLMAPBUFFERARBPROC glad_glMapBufferARB; -PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB; -PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB; -PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB; -PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV; -PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV; -PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX; -PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX; -PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX; -PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX; -PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX; -PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX; -PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX; -PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX; -PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX; -PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX; -PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX; -PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX; -PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX; -PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX; -PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX; -PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX; -PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX; -PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV; -PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT; -PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT; -PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV; -PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV; -PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV; -PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV; -PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV; -PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV; -PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV; -PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV; -PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV; -PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV; -PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV; -PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV; -PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV; -PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; -PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; -PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; -PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; -PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; -PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; -PFNGLOBJECTLABELPROC glad_glObjectLabel; -PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; -PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; -PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; -PFNGLGETPOINTERVPROC glad_glGetPointerv; -PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR; -PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR; -PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR; -PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR; -PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR; -PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR; -PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR; -PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR; -PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR; -PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR; -PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR; -PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI; -PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI; -PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI; -PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT; -PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT; -PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT; -PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR; -PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI; -PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI; -PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI; -PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX; -PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT; -PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV; -PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV; -PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV; -PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM; -PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT; -PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT; -PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT; -PFNGLHINTPGIPROC glad_glHintPGI; -PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB; -PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB; -PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB; -PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; -PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; -PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT; -PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT; -PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT; -PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT; -PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT; -PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT; -PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; -PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; -PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; -PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; -PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; -PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; -PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; -PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; -PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; -PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; -PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT; -PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD; -PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; -PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; -PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; -PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; -PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS; -PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS; -PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS; -PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS; -PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS; -PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS; -PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX; -PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX; -PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX; -PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX; -PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX; -PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX; -PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; -PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT; -PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; -PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; -PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; -PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT; -PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT; -PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT; -PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT; -PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT; -PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT; -PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV; -PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV; -PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV; -PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV; -PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV; -PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV; -PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV; -PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV; -PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV; -PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV; -PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV; -PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV; -PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV; -PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV; -PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV; -PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV; -PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV; -PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV; -PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV; -PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV; -PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV; -PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV; -PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV; -PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV; -PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV; -PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV; -PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV; -PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV; -PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV; -PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV; -PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV; -PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV; -PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV; -PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD; -PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD; -PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; -PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; -PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; -PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; -PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; -PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; -PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT; -PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL; -PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL; -PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL; -PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL; -PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI; -PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX; -PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV; -PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV; -PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV; -PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; -PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; -PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; -PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; -PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; -PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; -PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; -PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; -PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; -PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; -PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; -PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; -PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; -PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; -PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; -PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; -PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; -PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; -PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; -PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; -PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; -PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; -PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; -PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; -PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; -PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; -PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; -PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; -PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; -PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; -PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; -PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; -PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; -PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; -PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; -PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; -PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; -PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; -PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; -PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; -PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; -PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; -PFNGLCREATETEXTURESPROC glad_glCreateTextures; -PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; -PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; -PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; -PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; -PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; -PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; -PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; -PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; -PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; -PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; -PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; -PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; -PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; -PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; -PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; -PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; -PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; -PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; -PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; -PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; -PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; -PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; -PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; -PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; -PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; -PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; -PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; -PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; -PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; -PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; -PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; -PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; -PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; -PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; -PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; -PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; -PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; -PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; -PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; -PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; -PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; -PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; -PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; -PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; -PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; -PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; -PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; -PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; -PFNGLCREATEQUERIESPROC glad_glCreateQueries; -PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; -PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; -PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; -PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; -PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV; -PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV; -PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV; -PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV; -PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV; -PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV; -PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV; -PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT; -PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT; -PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT; -PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT; -PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT; -PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT; -PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT; -PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT; -PFNGLMINMAXEXTPROC glad_glMinmaxEXT; -PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT; -PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT; -PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; -PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; -PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS; -PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS; -PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT; -PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT; -PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT; -PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT; -PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT; -PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT; -PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT; -PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT; -PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT; -PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT; -PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT; -PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT; -PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT; -PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT; -PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT; -PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT; -PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT; -PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT; -PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT; -PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT; -PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT; -PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT; -PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT; -PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT; -PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT; -PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT; -PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT; -PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT; -PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT; -PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT; -PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT; -PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT; -PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT; -PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT; -PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT; -PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT; -PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT; -PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT; -PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT; -PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT; -PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT; -PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT; -PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT; -PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT; -PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT; -PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT; -PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT; -PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT; -PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT; -PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT; -PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT; -PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT; -PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT; -PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT; -PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT; -PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT; -PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT; -PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT; -PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT; -PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT; -PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT; -PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT; -PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT; -PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT; -PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT; -PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT; -PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT; -PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT; -PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT; -PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT; -PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT; -PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT; -PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT; -PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT; -PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT; -PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT; -PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT; -PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT; -PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT; -PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT; -PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT; -PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT; -PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT; -PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT; -PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT; -PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT; -PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT; -PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT; -PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT; -PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT; -PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT; -PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT; -PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT; -PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT; -PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT; -PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT; -PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT; -PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT; -PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT; -PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT; -PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT; -PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT; -PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT; -PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT; -PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT; -PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT; -PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT; -PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT; -PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT; -PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT; -PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT; -PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT; -PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT; -PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT; -PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT; -PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT; -PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT; -PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT; -PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT; -PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT; -PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT; -PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT; -PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT; -PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT; -PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT; -PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT; -PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT; -PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT; -PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT; -PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT; -PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT; -PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT; -PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT; -PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT; -PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT; -PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT; -PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT; -PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT; -PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT; -PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT; -PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT; -PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT; -PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT; -PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT; -PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT; -PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT; -PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT; -PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT; -PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT; -PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT; -PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT; -PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT; -PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT; -PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT; -PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT; -PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT; -PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT; -PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT; -PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT; -PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT; -PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT; -PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT; -PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT; -PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT; -PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT; -PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT; -PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT; -PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT; -PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT; -PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT; -PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT; -PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT; -PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT; -PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; -PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; -PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; -PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT; -PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT; -PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT; -PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT; -PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT; -PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT; -PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT; -PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT; -PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD; -PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV; -PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV; -PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV; -PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV; -PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV; -PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV; -PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV; -PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV; -PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV; -PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV; -PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV; -PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV; -PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV; -PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV; -PFNGLISPROGRAMNVPROC glad_glIsProgramNV; -PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV; -PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV; -PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV; -PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV; -PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV; -PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV; -PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV; -PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV; -PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV; -PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV; -PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV; -PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV; -PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV; -PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV; -PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV; -PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV; -PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV; -PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV; -PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV; -PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV; -PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV; -PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV; -PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV; -PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV; -PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV; -PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV; -PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV; -PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV; -PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV; -PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV; -PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV; -PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV; -PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV; -PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV; -PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV; -PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV; -PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV; -PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV; -PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV; -PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV; -PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV; -PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV; -PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV; -PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV; -PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV; -PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV; -PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV; -PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV; -PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV; -PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT; -PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT; -PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT; -PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT; -PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT; -PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT; -PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT; -PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT; -PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT; -PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT; -PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT; -PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT; -PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT; -PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT; -PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT; -PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT; -PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT; -PFNGLVARIANTIVEXTPROC glad_glVariantivEXT; -PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT; -PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT; -PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT; -PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT; -PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT; -PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT; -PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT; -PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT; -PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT; -PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT; -PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT; -PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT; -PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT; -PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT; -PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT; -PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT; -PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT; -PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT; -PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT; -PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT; -PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT; -PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT; -PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT; -PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT; -PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT; -PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE; -PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE; -PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE; -PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE; -PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE; -PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE; -PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE; -PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE; -PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES; -PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES; -PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES; -PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES; -PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES; -PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES; -PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES; -PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES; -PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES; -PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES; -PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES; -PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES; -PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES; -PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES; -PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES; -PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES; -PFNGLVERTEX2BOESPROC glad_glVertex2bOES; -PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES; -PFNGLVERTEX3BOESPROC glad_glVertex3bOES; -PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES; -PFNGLVERTEX4BOESPROC glad_glVertex4bOES; -PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES; -PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB; -PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB; -PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB; -PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB; -PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT; -PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT; -PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT; -PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT; -PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT; -PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT; -PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT; -PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT; -PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT; -PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT; -PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT; -PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT; -PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT; -PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT; -PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT; -PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV; -PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV; -PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV; -PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX; -PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX; -PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; -PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; -PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV; -PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL; -PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; -PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; -PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; -PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; -PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; -PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; -PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; -PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; -PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; -PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; -PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; -PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT; -PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT; -PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT; -PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT; -PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT; -PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT; -PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT; -PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT; -PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT; -PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI; -PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI; -PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI; -PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI; -PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI; -PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI; -PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI; -PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI; -PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI; -PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI; -PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI; -PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI; -PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI; -PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI; -PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN; -PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN; -PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN; -PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN; -PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN; -PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN; -PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN; -PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; -PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; -PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX; -PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX; -PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX; -PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX; -PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX; -PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX; -PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL; -PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL; -PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL; -PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL; -PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL; -PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL; -PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL; -PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL; -PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL; -PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL; -PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV; -PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV; -PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; -PFNGLSHADERBINARYPROC glad_glShaderBinary; -PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; -PFNGLDEPTHRANGEFPROC glad_glDepthRangef; -PFNGLCLEARDEPTHFPROC glad_glClearDepthf; -PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB; -PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB; -PFNGLVERTEX2HNVPROC glad_glVertex2hNV; -PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV; -PFNGLVERTEX3HNVPROC glad_glVertex3hNV; -PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV; -PFNGLVERTEX4HNVPROC glad_glVertex4hNV; -PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV; -PFNGLNORMAL3HNVPROC glad_glNormal3hNV; -PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV; -PFNGLCOLOR3HNVPROC glad_glColor3hNV; -PFNGLCOLOR3HVNVPROC glad_glColor3hvNV; -PFNGLCOLOR4HNVPROC glad_glColor4hNV; -PFNGLCOLOR4HVNVPROC glad_glColor4hvNV; -PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV; -PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV; -PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV; -PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV; -PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV; -PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV; -PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV; -PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV; -PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV; -PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV; -PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV; -PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV; -PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV; -PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV; -PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV; -PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV; -PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV; -PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV; -PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV; -PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV; -PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV; -PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV; -PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV; -PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV; -PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV; -PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV; -PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV; -PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV; -PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV; -PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV; -PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV; -PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV; -PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV; -PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV; -PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB; -PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT; -PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT; -PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT; -PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV; -PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV; -PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV; -PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV; -PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV; -PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV; -PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV; -PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV; -PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV; -PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV; -PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE; -PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE; -PFNGLCOLORTABLEPROC glad_glColorTable; -PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv; -PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv; -PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable; -PFNGLGETCOLORTABLEPROC glad_glGetColorTable; -PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv; -PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv; -PFNGLCOLORSUBTABLEPROC glad_glColorSubTable; -PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable; -PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D; -PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D; -PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf; -PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv; -PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri; -PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv; -PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D; -PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D; -PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter; -PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv; -PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv; -PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter; -PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D; -PFNGLGETHISTOGRAMPROC glad_glGetHistogram; -PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv; -PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv; -PFNGLGETMINMAXPROC glad_glGetMinmax; -PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv; -PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv; -PFNGLHISTOGRAMPROC glad_glHistogram; -PFNGLMINMAXPROC glad_glMinmax; -PFNGLRESETHISTOGRAMPROC glad_glResetHistogram; -PFNGLRESETMINMAXPROC glad_glResetMinmax; -PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB; -PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB; -PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB; -PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB; -PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; -PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; -PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; -PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT; -PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT; -PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB; -PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV; -PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL; -PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL; -PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL; -PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; -PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; -PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM; -PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM; -PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM; -PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM; -PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM; -PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM; -PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM; -PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM; -PFNGLCLAMPCOLORARBPROC glad_glClampColorARB; -PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB; -PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB; -PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB; -PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB; -PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB; -PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB; -PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB; -PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB; -PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB; -PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB; -PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB; -PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB; -PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB; -PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB; -PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB; -PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB; -PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB; -PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB; -PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB; -PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB; -PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB; -PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB; -PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB; -PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB; -PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB; -PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB; -PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB; -PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB; -PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB; -PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB; -PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB; -PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB; -PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; -PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT; -PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT; -PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT; -PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT; -PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT; -PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT; -PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT; -PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV; -PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV; -PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV; -PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT; -PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT; -PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; -PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; -PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; -PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; -PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; -PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; -PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; -PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; -PFNGLGETFLOATI_VPROC glad_glGetFloati_v; -PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; -PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; -PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; -PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; -PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; -PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; -PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; -PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; -PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; -PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; -PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; -PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; -PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; -PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; -PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; -PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; -PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; -PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; -PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; -PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; -PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; -PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; -PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; -PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; -PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; -PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; -PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; -PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; -PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; -PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; -PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; -PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; -PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; -PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; -PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; -PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; -PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; -PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; -PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; -PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; -PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; -PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; -PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; -PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; -PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; -PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; -PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; -PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; -PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; -PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; -PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; -PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; -PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; -PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; -PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; -PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; -PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; -PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; -PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; -PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; -PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; -PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT; -PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV; -PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV; -PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV; -PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV; -PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV; -PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV; -PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV; -PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV; -PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV; -PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV; -PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV; -PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV; -PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB; -PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB; -PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB; -PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB; -PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB; -PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS; -PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT; -PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT; -PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT; -PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT; -PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT; -PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT; -PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT; -PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT; -PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT; -PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT; -PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT; -PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT; -PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT; -PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT; -PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT; -PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT; -PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT; -PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT; -PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT; -PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT; -PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT; -PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT; -PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB; -PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB; -PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB; -PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB; -PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB; -PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB; -PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB; -PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; -PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; -PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; -PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; -PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; -PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; -PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; -PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; -PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; -PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; -PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT; -PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT; -PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT; -PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT; -PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT; -PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT; -PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT; -PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT; -PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT; -PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT; -PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES; -PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA; -PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA; -PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA; -PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA; -PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA; -PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA; -PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA; -PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA; -PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA; -PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA; -PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA; -PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA; -PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA; -PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA; -PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA; -PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA; -PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA; -PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA; -PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA; -PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA; -PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA; -PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA; -PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA; -PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA; -PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE; -PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE; -PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE; -PFNGLGENQUERIESARBPROC glad_glGenQueriesARB; -PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB; -PFNGLISQUERYARBPROC glad_glIsQueryARB; -PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB; -PFNGLENDQUERYARBPROC glad_glEndQueryARB; -PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB; -PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB; -PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB; -PFNGLCOLORTABLESGIPROC glad_glColorTableSGI; -PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI; -PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI; -PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI; -PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI; -PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI; -PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI; -PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT; -PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT; -PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT; -PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT; -PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT; -PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT; -PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT; -PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT; -PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT; -PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT; -PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT; -PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV; -PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT; -PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT; -PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD; -PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD; -PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD; -PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD; -PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB; -PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB; -PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB; -PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB; -PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB; -PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB; -PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB; -PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB; -PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB; -PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB; -PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB; -PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB; -PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB; -PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB; -PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB; -PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB; -PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB; -PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB; -PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB; -PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB; -PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB; -PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB; -PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB; -PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB; -PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB; -PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB; -PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB; -PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB; -PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB; -PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB; -PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB; -PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB; -PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB; -PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB; -PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX; -PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX; -PFNGLDEFORMSGIXPROC glad_glDeformSGIX; -PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX; -PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT; -PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB; -PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB; -PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; -PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; -PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; -PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV; -PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV; -PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT; -PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT; -PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT; -PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT; -PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT; -PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT; -PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT; -PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV; -PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV; -PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV; -PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV; -PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV; -PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV; -PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV; -PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV; -PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV; -PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV; -PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV; -PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV; -PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV; -PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV; -PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV; -PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV; -PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV; -PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV; -PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB; -PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB; -PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB; -PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB; -PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV; -PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX; -PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX; -PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX; -PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX; -PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; -PFNGLPROGRAMBINARYPROC glad_glProgramBinary; -PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; -PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD; -PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS; -PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS; -PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT; -PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT; -PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT; -PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT; -PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT; -PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT; -PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT; -PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT; -PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT; -PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT; -PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT; -PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT; -PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT; -PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT; -PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT; -PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT; -PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE; -PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE; -PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE; -PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV; -PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV; -PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV; -PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV; -PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV; -PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV; -PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV; -PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV; -PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV; -PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV; -PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV; -PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV; -PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV; -PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB; -PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; -PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; -PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB; -PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB; -PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB; -PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; -PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT; -PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT; -PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM; -PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM; -PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE; -PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE; -PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE; -PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE; -PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS; -PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS; -PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB; -PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB; -PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB; -PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB; -PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB; -PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB; -PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB; -PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB; -PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR; -PFNGLGENPATHSNVPROC glad_glGenPathsNV; -PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV; -PFNGLISPATHNVPROC glad_glIsPathNV; -PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV; -PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV; -PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV; -PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV; -PFNGLPATHSTRINGNVPROC glad_glPathStringNV; -PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV; -PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV; -PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV; -PFNGLCOPYPATHNVPROC glad_glCopyPathNV; -PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV; -PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV; -PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV; -PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV; -PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV; -PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV; -PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV; -PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV; -PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV; -PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV; -PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV; -PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV; -PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV; -PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV; -PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV; -PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV; -PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV; -PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV; -PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV; -PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV; -PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV; -PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV; -PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV; -PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV; -PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV; -PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV; -PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV; -PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV; -PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV; -PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV; -PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV; -PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV; -PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV; -PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV; -PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV; -PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV; -PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV; -PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV; -PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV; -PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV; -PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV; -PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV; -PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV; -PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV; -PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV; -PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV; -PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV; -PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV; -PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV; -PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV; -PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV; -PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV; -PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV; -PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI; -PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI; -PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI; -PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI; -PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI; -PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI; -PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI; -PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI; -PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI; -PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI; -PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI; -PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI; -PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI; -PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI; -PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI; -PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI; -PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI; -PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI; -PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI; -PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI; -PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI; -PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI; -PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI; -PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI; -PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI; -PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI; -PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI; -PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI; -PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI; -PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI; -PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI; -PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI; -PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI; -PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI; -PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI; -PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI; -PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI; -PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI; -PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI; -PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI; -PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI; -PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI; -PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI; -PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI; -PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI; -PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB; -PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB; -PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB; -PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB; -PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB; -PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB; -PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB; -PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB; -PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB; -PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB; -PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB; -PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB; -PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB; -PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB; -PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB; -PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB; -PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB; -PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB; -PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB; -PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB; -PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB; -PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB; -PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB; -PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB; -PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB; -PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB; -PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB; -PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB; -PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB; -PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB; -PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB; -PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB; -PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB; -PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB; -PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB; -PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB; -PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV; -PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV; -PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV; -PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV; -PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV; -PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV; -PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV; -PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV; -PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV; -PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV; -PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; -PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN; -PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN; -PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN; -PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN; -PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN; -PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN; -PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN; -PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN; -PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN; -PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN; -PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN; -PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN; -PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN; -PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN; -PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN; -PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN; -PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN; -PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN; -PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN; -PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN; -PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN; -PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN; -PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN; -PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN; -PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN; -PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN; -PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN; -PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN; -PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN; -PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; -PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX; -PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; -PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; -PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT; -PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT; -PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT; -PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT; -PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT; -PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT; -PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT; -PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT; -PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT; -PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT; -PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT; -PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT; -PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT; -PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT; -PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT; -PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT; -PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT; -PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT; -PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT; -PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT; -PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT; -PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT; -PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT; -PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS; -PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS; -PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT; -PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV; -PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV; -PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV; -PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB; -PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES; -PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES; -PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES; -PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES; -PFNGLCOLOR4XOESPROC glad_glColor4xOES; -PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES; -PFNGLFOGXOESPROC glad_glFogxOES; -PFNGLFOGXVOESPROC glad_glFogxvOES; -PFNGLFRUSTUMXOESPROC glad_glFrustumxOES; -PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES; -PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES; -PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES; -PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES; -PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES; -PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES; -PFNGLLIGHTXOESPROC glad_glLightxOES; -PFNGLLIGHTXVOESPROC glad_glLightxvOES; -PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES; -PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES; -PFNGLMATERIALXOESPROC glad_glMaterialxOES; -PFNGLMATERIALXVOESPROC glad_glMaterialxvOES; -PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES; -PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES; -PFNGLNORMAL3XOESPROC glad_glNormal3xOES; -PFNGLORTHOXOESPROC glad_glOrthoxOES; -PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES; -PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES; -PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES; -PFNGLROTATEXOESPROC glad_glRotatexOES; -PFNGLSCALEXOESPROC glad_glScalexOES; -PFNGLTEXENVXOESPROC glad_glTexEnvxOES; -PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES; -PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES; -PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES; -PFNGLTRANSLATEXOESPROC glad_glTranslatexOES; -PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES; -PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES; -PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES; -PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES; -PFNGLACCUMXOESPROC glad_glAccumxOES; -PFNGLBITMAPXOESPROC glad_glBitmapxOES; -PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES; -PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES; -PFNGLCOLOR3XOESPROC glad_glColor3xOES; -PFNGLCOLOR3XVOESPROC glad_glColor3xvOES; -PFNGLCOLOR4XVOESPROC glad_glColor4xvOES; -PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES; -PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES; -PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES; -PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES; -PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES; -PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES; -PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES; -PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES; -PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES; -PFNGLGETLIGHTXOESPROC glad_glGetLightxOES; -PFNGLGETMAPXVOESPROC glad_glGetMapxvOES; -PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES; -PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv; -PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES; -PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES; -PFNGLINDEXXOESPROC glad_glIndexxOES; -PFNGLINDEXXVOESPROC glad_glIndexxvOES; -PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES; -PFNGLMAP1XOESPROC glad_glMap1xOES; -PFNGLMAP2XOESPROC glad_glMap2xOES; -PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES; -PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES; -PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES; -PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES; -PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES; -PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES; -PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES; -PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES; -PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES; -PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES; -PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES; -PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES; -PFNGLPIXELMAPXPROC glad_glPixelMapx; -PFNGLPIXELSTOREXPROC glad_glPixelStorex; -PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES; -PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES; -PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES; -PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES; -PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES; -PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES; -PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES; -PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES; -PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES; -PFNGLRECTXOESPROC glad_glRectxOES; -PFNGLRECTXVOESPROC glad_glRectxvOES; -PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES; -PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES; -PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES; -PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES; -PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES; -PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES; -PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES; -PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES; -PFNGLTEXGENXOESPROC glad_glTexGenxOES; -PFNGLTEXGENXVOESPROC glad_glTexGenxvOES; -PFNGLVERTEX2XOESPROC glad_glVertex2xOES; -PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES; -PFNGLVERTEX3XOESPROC glad_glVertex3xOES; -PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES; -PFNGLVERTEX4XOESPROC glad_glVertex4xOES; -PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT; -PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS; -PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS; -PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT; -PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT; -PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT; -PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT; -PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT; -PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT; -PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT; -PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT; -PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT; -PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT; -PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT; -PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT; -PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT; -PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT; -PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT; -PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT; -PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT; -PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT; -PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT; -PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT; -PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT; -PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI; -PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI; -PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI; -PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI; -PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI; -PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI; -PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI; -PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI; -PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI; -PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI; -PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI; -PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI; -PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB; -PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB; -PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB; -PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB; -PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB; -PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB; -PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT; -PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB; -PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT; -static void load_GL_VERSION_1_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_0) return; - glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); - glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); - glad_glHint = (PFNGLHINTPROC)load("glHint"); - glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); - glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); - glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); - glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); - glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); - glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); - glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); - glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); - glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); - glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); - glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); - glad_glClear = (PFNGLCLEARPROC)load("glClear"); - glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); - glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); - glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); - glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); - glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); - glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); - glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); - glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); - glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); - glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); - glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); - glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); - glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); - glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); - glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); - glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); - glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); - glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); - glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); - glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); - glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); - glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); - glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); - glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); - glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); - glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); - glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); - glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); - glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); - glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); - glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); - glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); -} -static void load_GL_VERSION_1_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_1) return; - glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); - glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); - glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); - glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); - glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); - glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); - glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); - glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); - glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); - glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); - glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); - glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); - glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); -} -static void load_GL_VERSION_1_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_2) return; - glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); - glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); - glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); - glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); -} -static void load_GL_VERSION_1_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_3) return; - glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); - glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); - glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); - glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); - glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); - glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); - glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); - glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); - glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); -} -static void load_GL_VERSION_1_4(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_4) return; - glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); - glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); - glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); - glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); - glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); - glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); - glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); - glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); - glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); -} -static void load_GL_VERSION_1_5(GLADloadproc load) { - if(!GLAD_GL_VERSION_1_5) return; - glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); - glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); - glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); - glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); - glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); - glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); - glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); - glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); - glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); - glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); - glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); - glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); - glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); - glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); - glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); - glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); - glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); - glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); - glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); -} -static void load_GL_VERSION_2_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_2_0) return; - glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); - glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); - glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); - glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); - glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); - glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); - glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); - glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); - glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); - glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); - glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); - glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); - glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); - glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); - glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); - glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); - glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); - glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); - glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); - glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); - glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); - glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); - glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); - glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); - glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); - glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); - glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); - glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); - glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); - glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); - glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); - glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); - glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); - glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); - glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); - glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); - glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); - glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); - glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); - glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); - glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); - glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); - glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); - glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); - glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); - glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); - glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); - glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); - glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); - glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); - glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); - glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); - glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); - glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); - glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); - glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); - glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); - glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); - glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); - glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); - glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); - glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); - glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); - glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); - glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); - glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); - glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); - glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); - glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); - glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); - glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); - glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); - glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); - glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); - glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); - glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); - glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); - glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); - glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); - glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); - glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); - glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); - glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); - glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); - glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); - glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); - glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); - glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); - glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); - glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); - glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); - glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); - glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); -} -static void load_GL_VERSION_2_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_2_1) return; - glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); - glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); - glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); - glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); - glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); - glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); -} -static void load_GL_VERSION_3_0(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_0) return; - glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); - glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); - glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); - glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); - glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); - glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); - glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); - glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); - glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); - glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); - glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); - glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); - glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); - glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); - glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); - glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); - glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); - glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); - glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); - glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); - glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); - glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); - glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); - glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); - glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); - glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); - glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); - glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); - glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); - glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); - glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); - glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); - glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); - glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); - glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); - glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); - glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); - glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); - glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); - glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); - glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); - glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); - glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); - glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); - glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); - glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); - glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); - glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); - glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); - glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); - glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); - glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); - glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); - glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); - glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); - glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); - glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); - glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); - glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); - glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); - glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); - glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); - glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); - glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); - glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); - glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); - glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); - glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); - glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); - glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); - glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); - glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); - glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); - glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); - glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); - glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); - glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); - glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); - glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); - glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); - glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); - glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); - glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); -} -static void load_GL_VERSION_3_1(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_1) return; - glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); - glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); - glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); - glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); - glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); - glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); - glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); - glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); - glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); - glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); - glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); - glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); - glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); - glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); -} -static void load_GL_VERSION_3_2(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_2) return; - glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); - glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); - glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); - glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); - glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); - glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); - glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); - glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); - glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); - glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); - glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); - glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); - glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); - glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); - glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); - glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); - glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); - glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); - glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); -} -static void load_GL_VERSION_3_3(GLADloadproc load) { - if(!GLAD_GL_VERSION_3_3) return; - glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); - glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); - glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); - glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); - glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); - glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); - glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); - glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); - glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); - glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); - glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); - glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); - glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); - glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); - glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); - glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); - glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); - glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); - glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); - glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); - glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); - glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); - glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); - glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); - glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); - glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); - glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); - glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); - glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); - glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); - glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); - glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); - glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); - glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); - glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); - glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); - glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); - glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); - glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); - glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); - glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); - glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); - glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); - glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); - glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); - glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); - glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); - glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); - glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); - glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); - glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); - glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); - glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); - glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); - glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); - glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); - glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); - glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); -} -static void load_GL_APPLE_element_array(GLADloadproc load) { - if(!GLAD_GL_APPLE_element_array) return; - glad_glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)load("glElementPointerAPPLE"); - glad_glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)load("glDrawElementArrayAPPLE"); - glad_glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)load("glDrawRangeElementArrayAPPLE"); - glad_glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)load("glMultiDrawElementArrayAPPLE"); - glad_glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)load("glMultiDrawRangeElementArrayAPPLE"); -} -static void load_GL_AMD_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_AMD_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)load("glMultiDrawArraysIndirectAMD"); - glad_glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)load("glMultiDrawElementsIndirectAMD"); -} -static void load_GL_SGIX_tag_sample_buffer(GLADloadproc load) { - if(!GLAD_GL_SGIX_tag_sample_buffer) return; - glad_glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)load("glTagSampleBufferSGIX"); -} -static void load_GL_NV_point_sprite(GLADloadproc load) { - if(!GLAD_GL_NV_point_sprite) return; - glad_glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)load("glPointParameteriNV"); - glad_glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)load("glPointParameterivNV"); -} -static void load_GL_ATI_separate_stencil(GLADloadproc load) { - if(!GLAD_GL_ATI_separate_stencil) return; - glad_glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)load("glStencilOpSeparateATI"); - glad_glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)load("glStencilFuncSeparateATI"); -} -static void load_GL_EXT_texture_buffer_object(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_buffer_object) return; - glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); -} -static void load_GL_ARB_vertex_blend(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_blend) return; - glad_glWeightbvARB = (PFNGLWEIGHTBVARBPROC)load("glWeightbvARB"); - glad_glWeightsvARB = (PFNGLWEIGHTSVARBPROC)load("glWeightsvARB"); - glad_glWeightivARB = (PFNGLWEIGHTIVARBPROC)load("glWeightivARB"); - glad_glWeightfvARB = (PFNGLWEIGHTFVARBPROC)load("glWeightfvARB"); - glad_glWeightdvARB = (PFNGLWEIGHTDVARBPROC)load("glWeightdvARB"); - glad_glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)load("glWeightubvARB"); - glad_glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)load("glWeightusvARB"); - glad_glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)load("glWeightuivARB"); - glad_glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)load("glWeightPointerARB"); - glad_glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)load("glVertexBlendARB"); -} -static void load_GL_OVR_multiview(GLADloadproc load) { - if(!GLAD_GL_OVR_multiview) return; - glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); -} -static void load_GL_ARB_program_interface_query(GLADloadproc load) { - if(!GLAD_GL_ARB_program_interface_query) return; - glad_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)load("glGetProgramInterfaceiv"); - glad_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)load("glGetProgramResourceIndex"); - glad_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)load("glGetProgramResourceName"); - glad_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)load("glGetProgramResourceiv"); - glad_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)load("glGetProgramResourceLocation"); - glad_glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)load("glGetProgramResourceLocationIndex"); -} -static void load_GL_EXT_index_func(GLADloadproc load) { - if(!GLAD_GL_EXT_index_func) return; - glad_glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)load("glIndexFuncEXT"); -} -static void load_GL_NV_shader_buffer_load(GLADloadproc load) { - if(!GLAD_GL_NV_shader_buffer_load) return; - glad_glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)load("glMakeBufferResidentNV"); - glad_glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)load("glMakeBufferNonResidentNV"); - glad_glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)load("glIsBufferResidentNV"); - glad_glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)load("glMakeNamedBufferResidentNV"); - glad_glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)load("glMakeNamedBufferNonResidentNV"); - glad_glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)load("glIsNamedBufferResidentNV"); - glad_glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)load("glGetBufferParameterui64vNV"); - glad_glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)load("glGetNamedBufferParameterui64vNV"); - glad_glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)load("glGetIntegerui64vNV"); - glad_glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)load("glUniformui64NV"); - glad_glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)load("glUniformui64vNV"); - glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); - glad_glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)load("glProgramUniformui64NV"); - glad_glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)load("glProgramUniformui64vNV"); -} -static void load_GL_EXT_color_subtable(GLADloadproc load) { - if(!GLAD_GL_EXT_color_subtable) return; - glad_glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)load("glColorSubTableEXT"); - glad_glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)load("glCopyColorSubTableEXT"); -} -static void load_GL_SUNX_constant_data(GLADloadproc load) { - if(!GLAD_GL_SUNX_constant_data) return; - glad_glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)load("glFinishTextureSUNX"); -} -static void load_GL_EXT_multi_draw_arrays(GLADloadproc load) { - if(!GLAD_GL_EXT_multi_draw_arrays) return; - glad_glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)load("glMultiDrawArraysEXT"); - glad_glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)load("glMultiDrawElementsEXT"); -} -static void load_GL_ARB_shader_atomic_counters(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_atomic_counters) return; - glad_glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)load("glGetActiveAtomicCounterBufferiv"); -} -static void load_GL_NV_conditional_render(GLADloadproc load) { - if(!GLAD_GL_NV_conditional_render) return; - glad_glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)load("glBeginConditionalRenderNV"); - glad_glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)load("glEndConditionalRenderNV"); -} -static void load_GL_MESA_resize_buffers(GLADloadproc load) { - if(!GLAD_GL_MESA_resize_buffers) return; - glad_glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)load("glResizeBuffersMESA"); -} -static void load_GL_ARB_texture_view(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_view) return; - glad_glTextureView = (PFNGLTEXTUREVIEWPROC)load("glTextureView"); -} -static void load_GL_ARB_map_buffer_range(GLADloadproc load) { - if(!GLAD_GL_ARB_map_buffer_range) return; - glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); - glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); -} -static void load_GL_EXT_convolution(GLADloadproc load) { - if(!GLAD_GL_EXT_convolution) return; - glad_glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)load("glConvolutionFilter1DEXT"); - glad_glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)load("glConvolutionFilter2DEXT"); - glad_glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)load("glConvolutionParameterfEXT"); - glad_glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)load("glConvolutionParameterfvEXT"); - glad_glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)load("glConvolutionParameteriEXT"); - glad_glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)load("glConvolutionParameterivEXT"); - glad_glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)load("glCopyConvolutionFilter1DEXT"); - glad_glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)load("glCopyConvolutionFilter2DEXT"); - glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)load("glGetConvolutionFilterEXT"); - glad_glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)load("glGetConvolutionParameterfvEXT"); - glad_glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)load("glGetConvolutionParameterivEXT"); - glad_glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)load("glGetSeparableFilterEXT"); - glad_glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)load("glSeparableFilter2DEXT"); -} -static void load_GL_NV_vertex_attrib_integer_64bit(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_attrib_integer_64bit) return; - glad_glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)load("glVertexAttribL1i64NV"); - glad_glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)load("glVertexAttribL2i64NV"); - glad_glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)load("glVertexAttribL3i64NV"); - glad_glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)load("glVertexAttribL4i64NV"); - glad_glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)load("glVertexAttribL1i64vNV"); - glad_glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)load("glVertexAttribL2i64vNV"); - glad_glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)load("glVertexAttribL3i64vNV"); - glad_glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)load("glVertexAttribL4i64vNV"); - glad_glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)load("glVertexAttribL1ui64NV"); - glad_glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)load("glVertexAttribL2ui64NV"); - glad_glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)load("glVertexAttribL3ui64NV"); - glad_glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)load("glVertexAttribL4ui64NV"); - glad_glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)load("glVertexAttribL1ui64vNV"); - glad_glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)load("glVertexAttribL2ui64vNV"); - glad_glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)load("glVertexAttribL3ui64vNV"); - glad_glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)load("glVertexAttribL4ui64vNV"); - glad_glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)load("glGetVertexAttribLi64vNV"); - glad_glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)load("glGetVertexAttribLui64vNV"); - glad_glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)load("glVertexAttribLFormatNV"); -} -static void load_GL_EXT_paletted_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_paletted_texture) return; - glad_glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)load("glColorTableEXT"); - glad_glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)load("glGetColorTableEXT"); - glad_glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)load("glGetColorTableParameterivEXT"); - glad_glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)load("glGetColorTableParameterfvEXT"); -} -static void load_GL_ARB_texture_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_buffer_object) return; - glad_glTexBufferARB = (PFNGLTEXBUFFERARBPROC)load("glTexBufferARB"); -} -static void load_GL_ATI_pn_triangles(GLADloadproc load) { - if(!GLAD_GL_ATI_pn_triangles) return; - glad_glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)load("glPNTrianglesiATI"); - glad_glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)load("glPNTrianglesfATI"); -} -static void load_GL_SGIX_flush_raster(GLADloadproc load) { - if(!GLAD_GL_SGIX_flush_raster) return; - glad_glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)load("glFlushRasterSGIX"); -} -static void load_GL_EXT_light_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_light_texture) return; - glad_glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)load("glApplyTextureEXT"); - glad_glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)load("glTextureLightEXT"); - glad_glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)load("glTextureMaterialEXT"); -} -static void load_GL_HP_image_transform(GLADloadproc load) { - if(!GLAD_GL_HP_image_transform) return; - glad_glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)load("glImageTransformParameteriHP"); - glad_glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)load("glImageTransformParameterfHP"); - glad_glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)load("glImageTransformParameterivHP"); - glad_glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)load("glImageTransformParameterfvHP"); - glad_glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)load("glGetImageTransformParameterivHP"); - glad_glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)load("glGetImageTransformParameterfvHP"); -} -static void load_GL_AMD_draw_buffers_blend(GLADloadproc load) { - if(!GLAD_GL_AMD_draw_buffers_blend) return; - glad_glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)load("glBlendFuncIndexedAMD"); - glad_glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)load("glBlendFuncSeparateIndexedAMD"); - glad_glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)load("glBlendEquationIndexedAMD"); - glad_glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)load("glBlendEquationSeparateIndexedAMD"); -} -static void load_GL_APPLE_texture_range(GLADloadproc load) { - if(!GLAD_GL_APPLE_texture_range) return; - glad_glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)load("glTextureRangeAPPLE"); - glad_glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)load("glGetTexParameterPointervAPPLE"); -} -static void load_GL_EXT_texture_array(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_array) return; - glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); -} -static void load_GL_NV_texture_barrier(GLADloadproc load) { - if(!GLAD_GL_NV_texture_barrier) return; - glad_glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)load("glTextureBarrierNV"); -} -static void load_GL_ARB_vertex_type_2_10_10_10_rev(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_type_2_10_10_10_rev) return; - glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); - glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); - glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); - glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); - glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); - glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); - glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); - glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); - glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); - glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); - glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); - glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); - glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); - glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); - glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); - glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); - glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); - glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); - glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); - glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); - glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); - glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); - glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); - glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); - glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); - glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); - glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); - glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); - glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); - glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); - glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); - glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); - glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); - glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); - glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); - glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); - glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); - glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); -} -static void load_GL_3DFX_tbuffer(GLADloadproc load) { - if(!GLAD_GL_3DFX_tbuffer) return; - glad_glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)load("glTbufferMask3DFX"); -} -static void load_GL_GREMEDY_frame_terminator(GLADloadproc load) { - if(!GLAD_GL_GREMEDY_frame_terminator) return; - glad_glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)load("glFrameTerminatorGREMEDY"); -} -static void load_GL_ARB_blend_func_extended(GLADloadproc load) { - if(!GLAD_GL_ARB_blend_func_extended) return; - glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); - glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); -} -static void load_GL_EXT_separate_shader_objects(GLADloadproc load) { - if(!GLAD_GL_EXT_separate_shader_objects) return; - glad_glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)load("glUseShaderProgramEXT"); - glad_glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)load("glActiveProgramEXT"); - glad_glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)load("glCreateShaderProgramEXT"); - glad_glActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC)load("glActiveShaderProgramEXT"); - glad_glBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC)load("glBindProgramPipelineEXT"); - glad_glCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC)load("glCreateShaderProgramvEXT"); - glad_glDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC)load("glDeleteProgramPipelinesEXT"); - glad_glGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC)load("glGenProgramPipelinesEXT"); - glad_glGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)load("glGetProgramPipelineInfoLogEXT"); - glad_glGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC)load("glGetProgramPipelineivEXT"); - glad_glIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC)load("glIsProgramPipelineEXT"); - glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); - glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); - glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); - glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); - glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); - glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); - glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); - glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); - glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); - glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); - glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); - glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); - glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); - glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); - glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); - glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); - glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); - glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); - glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); - glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); - glad_glUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC)load("glUseProgramStagesEXT"); - glad_glValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)load("glValidateProgramPipelineEXT"); - glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); - glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); - glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); - glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); - glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); - glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); - glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); - glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); - glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); - glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); - glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); - glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); - glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); - glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); - glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); -} -static void load_GL_NV_texture_multisample(GLADloadproc load) { - if(!GLAD_GL_NV_texture_multisample) return; - glad_glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTexImage2DMultisampleCoverageNV"); - glad_glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTexImage3DMultisampleCoverageNV"); - glad_glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)load("glTextureImage2DMultisampleNV"); - glad_glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)load("glTextureImage3DMultisampleNV"); - glad_glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTextureImage2DMultisampleCoverageNV"); - glad_glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTextureImage3DMultisampleCoverageNV"); -} -static void load_GL_ARB_shader_objects(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_objects) return; - glad_glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)load("glDeleteObjectARB"); - glad_glGetHandleARB = (PFNGLGETHANDLEARBPROC)load("glGetHandleARB"); - glad_glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)load("glDetachObjectARB"); - glad_glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)load("glCreateShaderObjectARB"); - glad_glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)load("glShaderSourceARB"); - glad_glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)load("glCompileShaderARB"); - glad_glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)load("glCreateProgramObjectARB"); - glad_glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)load("glAttachObjectARB"); - glad_glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)load("glLinkProgramARB"); - glad_glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)load("glUseProgramObjectARB"); - glad_glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)load("glValidateProgramARB"); - glad_glUniform1fARB = (PFNGLUNIFORM1FARBPROC)load("glUniform1fARB"); - glad_glUniform2fARB = (PFNGLUNIFORM2FARBPROC)load("glUniform2fARB"); - glad_glUniform3fARB = (PFNGLUNIFORM3FARBPROC)load("glUniform3fARB"); - glad_glUniform4fARB = (PFNGLUNIFORM4FARBPROC)load("glUniform4fARB"); - glad_glUniform1iARB = (PFNGLUNIFORM1IARBPROC)load("glUniform1iARB"); - glad_glUniform2iARB = (PFNGLUNIFORM2IARBPROC)load("glUniform2iARB"); - glad_glUniform3iARB = (PFNGLUNIFORM3IARBPROC)load("glUniform3iARB"); - glad_glUniform4iARB = (PFNGLUNIFORM4IARBPROC)load("glUniform4iARB"); - glad_glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)load("glUniform1fvARB"); - glad_glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)load("glUniform2fvARB"); - glad_glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)load("glUniform3fvARB"); - glad_glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)load("glUniform4fvARB"); - glad_glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)load("glUniform1ivARB"); - glad_glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)load("glUniform2ivARB"); - glad_glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)load("glUniform3ivARB"); - glad_glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)load("glUniform4ivARB"); - glad_glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)load("glUniformMatrix2fvARB"); - glad_glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)load("glUniformMatrix3fvARB"); - glad_glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)load("glUniformMatrix4fvARB"); - glad_glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)load("glGetObjectParameterfvARB"); - glad_glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)load("glGetObjectParameterivARB"); - glad_glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)load("glGetInfoLogARB"); - glad_glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)load("glGetAttachedObjectsARB"); - glad_glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)load("glGetUniformLocationARB"); - glad_glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)load("glGetActiveUniformARB"); - glad_glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)load("glGetUniformfvARB"); - glad_glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)load("glGetUniformivARB"); - glad_glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)load("glGetShaderSourceARB"); -} -static void load_GL_ARB_framebuffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_framebuffer_object) return; - glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); - glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); - glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); - glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); - glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); - glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); - glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); - glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); - glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); - glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); - glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); - glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); - glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); - glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); - glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); - glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); - glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); - glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); - glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); - glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); -} -static void load_GL_ATI_envmap_bumpmap(GLADloadproc load) { - if(!GLAD_GL_ATI_envmap_bumpmap) return; - glad_glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)load("glTexBumpParameterivATI"); - glad_glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)load("glTexBumpParameterfvATI"); - glad_glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)load("glGetTexBumpParameterivATI"); - glad_glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)load("glGetTexBumpParameterfvATI"); -} -static void load_GL_ATI_map_object_buffer(GLADloadproc load) { - if(!GLAD_GL_ATI_map_object_buffer) return; - glad_glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)load("glMapObjectBufferATI"); - glad_glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)load("glUnmapObjectBufferATI"); -} -static void load_GL_ARB_robustness(GLADloadproc load) { - if(!GLAD_GL_ARB_robustness) return; - glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)load("glGetGraphicsResetStatusARB"); - glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)load("glGetnTexImageARB"); - glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)load("glReadnPixelsARB"); - glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)load("glGetnCompressedTexImageARB"); - glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)load("glGetnUniformfvARB"); - glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)load("glGetnUniformivARB"); - glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)load("glGetnUniformuivARB"); - glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)load("glGetnUniformdvARB"); - glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)load("glGetnMapdvARB"); - glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)load("glGetnMapfvARB"); - glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)load("glGetnMapivARB"); - glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)load("glGetnPixelMapfvARB"); - glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)load("glGetnPixelMapuivARB"); - glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)load("glGetnPixelMapusvARB"); - glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)load("glGetnPolygonStippleARB"); - glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)load("glGetnColorTableARB"); - glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)load("glGetnConvolutionFilterARB"); - glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)load("glGetnSeparableFilterARB"); - glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)load("glGetnHistogramARB"); - glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)load("glGetnMinmaxARB"); -} -static void load_GL_NV_pixel_data_range(GLADloadproc load) { - if(!GLAD_GL_NV_pixel_data_range) return; - glad_glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)load("glPixelDataRangeNV"); - glad_glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)load("glFlushPixelDataRangeNV"); -} -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_ARB_gpu_shader_fp64(GLADloadproc load) { - if(!GLAD_GL_ARB_gpu_shader_fp64) return; - glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); - glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); - glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); - glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); - glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); - glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); - glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); - glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); - glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); - glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); - glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); - glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); - glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); - glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); - glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); - glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); - glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); - glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); -} -static void load_GL_NV_command_list(GLADloadproc load) { - if(!GLAD_GL_NV_command_list) return; - glad_glCreateStatesNV = (PFNGLCREATESTATESNVPROC)load("glCreateStatesNV"); - glad_glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)load("glDeleteStatesNV"); - glad_glIsStateNV = (PFNGLISSTATENVPROC)load("glIsStateNV"); - glad_glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)load("glStateCaptureNV"); - glad_glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)load("glGetCommandHeaderNV"); - glad_glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)load("glGetStageIndexNV"); - glad_glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)load("glDrawCommandsNV"); - glad_glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)load("glDrawCommandsAddressNV"); - glad_glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)load("glDrawCommandsStatesNV"); - glad_glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)load("glDrawCommandsStatesAddressNV"); - glad_glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)load("glCreateCommandListsNV"); - glad_glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)load("glDeleteCommandListsNV"); - glad_glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)load("glIsCommandListNV"); - glad_glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)load("glListDrawCommandsStatesClientNV"); - glad_glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)load("glCommandListSegmentsNV"); - glad_glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)load("glCompileCommandListNV"); - glad_glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)load("glCallCommandListNV"); -} -static void load_GL_EXT_vertex_weighting(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_weighting) return; - glad_glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)load("glVertexWeightfEXT"); - glad_glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)load("glVertexWeightfvEXT"); - glad_glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)load("glVertexWeightPointerEXT"); -} -static void load_GL_GREMEDY_string_marker(GLADloadproc load) { - if(!GLAD_GL_GREMEDY_string_marker) return; - glad_glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)load("glStringMarkerGREMEDY"); -} -static void load_GL_EXT_subtexture(GLADloadproc load) { - if(!GLAD_GL_EXT_subtexture) return; - glad_glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)load("glTexSubImage1DEXT"); - glad_glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)load("glTexSubImage2DEXT"); -} -static void load_GL_EXT_gpu_program_parameters(GLADloadproc load) { - if(!GLAD_GL_EXT_gpu_program_parameters) return; - glad_glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)load("glProgramEnvParameters4fvEXT"); - glad_glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glProgramLocalParameters4fvEXT"); -} -static void load_GL_NV_evaluators(GLADloadproc load) { - if(!GLAD_GL_NV_evaluators) return; - glad_glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)load("glMapControlPointsNV"); - glad_glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)load("glMapParameterivNV"); - glad_glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)load("glMapParameterfvNV"); - glad_glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)load("glGetMapControlPointsNV"); - glad_glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)load("glGetMapParameterivNV"); - glad_glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)load("glGetMapParameterfvNV"); - glad_glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)load("glGetMapAttribParameterivNV"); - glad_glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)load("glGetMapAttribParameterfvNV"); - glad_glEvalMapsNV = (PFNGLEVALMAPSNVPROC)load("glEvalMapsNV"); -} -static void load_GL_SGIS_texture_filter4(GLADloadproc load) { - if(!GLAD_GL_SGIS_texture_filter4) return; - glad_glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)load("glGetTexFilterFuncSGIS"); - glad_glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)load("glTexFilterFuncSGIS"); -} -static void load_GL_AMD_performance_monitor(GLADloadproc load) { - if(!GLAD_GL_AMD_performance_monitor) return; - glad_glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)load("glGetPerfMonitorGroupsAMD"); - glad_glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)load("glGetPerfMonitorCountersAMD"); - glad_glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)load("glGetPerfMonitorGroupStringAMD"); - glad_glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)load("glGetPerfMonitorCounterStringAMD"); - glad_glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)load("glGetPerfMonitorCounterInfoAMD"); - glad_glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)load("glGenPerfMonitorsAMD"); - glad_glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)load("glDeletePerfMonitorsAMD"); - glad_glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)load("glSelectPerfMonitorCountersAMD"); - glad_glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)load("glBeginPerfMonitorAMD"); - glad_glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)load("glEndPerfMonitorAMD"); - glad_glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)load("glGetPerfMonitorCounterDataAMD"); -} -static void load_GL_EXT_stencil_clear_tag(GLADloadproc load) { - if(!GLAD_GL_EXT_stencil_clear_tag) return; - glad_glStencilClearTagEXT = (PFNGLSTENCILCLEARTAGEXTPROC)load("glStencilClearTagEXT"); -} -static void load_GL_NV_present_video(GLADloadproc load) { - if(!GLAD_GL_NV_present_video) return; - glad_glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)load("glPresentFrameKeyedNV"); - glad_glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)load("glPresentFrameDualFillNV"); - glad_glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)load("glGetVideoivNV"); - glad_glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)load("glGetVideouivNV"); - glad_glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)load("glGetVideoi64vNV"); - glad_glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)load("glGetVideoui64vNV"); -} -static void load_GL_SGIX_framezoom(GLADloadproc load) { - if(!GLAD_GL_SGIX_framezoom) return; - glad_glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)load("glFrameZoomSGIX"); -} -static void load_GL_ARB_draw_elements_base_vertex(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_elements_base_vertex) return; - glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); - glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); - glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); - glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); -} -static void load_GL_NV_transform_feedback(GLADloadproc load) { - if(!GLAD_GL_NV_transform_feedback) return; - glad_glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)load("glBeginTransformFeedbackNV"); - glad_glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)load("glEndTransformFeedbackNV"); - glad_glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)load("glTransformFeedbackAttribsNV"); - glad_glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)load("glBindBufferRangeNV"); - glad_glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)load("glBindBufferOffsetNV"); - glad_glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)load("glBindBufferBaseNV"); - glad_glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)load("glTransformFeedbackVaryingsNV"); - glad_glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)load("glActiveVaryingNV"); - glad_glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)load("glGetVaryingLocationNV"); - glad_glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)load("glGetActiveVaryingNV"); - glad_glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)load("glGetTransformFeedbackVaryingNV"); - glad_glTransformFeedbackStreamAttribsNV = (PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)load("glTransformFeedbackStreamAttribsNV"); -} -static void load_GL_NV_fragment_program(GLADloadproc load) { - if(!GLAD_GL_NV_fragment_program) return; - glad_glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)load("glProgramNamedParameter4fNV"); - glad_glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)load("glProgramNamedParameter4fvNV"); - glad_glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)load("glProgramNamedParameter4dNV"); - glad_glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)load("glProgramNamedParameter4dvNV"); - glad_glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)load("glGetProgramNamedParameterfvNV"); - glad_glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)load("glGetProgramNamedParameterdvNV"); -} -static void load_GL_AMD_stencil_operation_extended(GLADloadproc load) { - if(!GLAD_GL_AMD_stencil_operation_extended) return; - glad_glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)load("glStencilOpValueAMD"); -} -static void load_GL_ARB_instanced_arrays(GLADloadproc load) { - if(!GLAD_GL_ARB_instanced_arrays) return; - glad_glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)load("glVertexAttribDivisorARB"); -} -static void load_GL_EXT_polygon_offset(GLADloadproc load) { - if(!GLAD_GL_EXT_polygon_offset) return; - glad_glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)load("glPolygonOffsetEXT"); -} -static void load_GL_KHR_robustness(GLADloadproc load) { - if(!GLAD_GL_KHR_robustness) return; - glad_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)load("glGetGraphicsResetStatus"); - glad_glReadnPixels = (PFNGLREADNPIXELSPROC)load("glReadnPixels"); - glad_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)load("glGetnUniformfv"); - glad_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)load("glGetnUniformiv"); - glad_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)load("glGetnUniformuiv"); - glad_glGetGraphicsResetStatusKHR = (PFNGLGETGRAPHICSRESETSTATUSKHRPROC)load("glGetGraphicsResetStatusKHR"); - glad_glReadnPixelsKHR = (PFNGLREADNPIXELSKHRPROC)load("glReadnPixelsKHR"); - glad_glGetnUniformfvKHR = (PFNGLGETNUNIFORMFVKHRPROC)load("glGetnUniformfvKHR"); - glad_glGetnUniformivKHR = (PFNGLGETNUNIFORMIVKHRPROC)load("glGetnUniformivKHR"); - glad_glGetnUniformuivKHR = (PFNGLGETNUNIFORMUIVKHRPROC)load("glGetnUniformuivKHR"); -} -static void load_GL_AMD_sparse_texture(GLADloadproc load) { - if(!GLAD_GL_AMD_sparse_texture) return; - glad_glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)load("glTexStorageSparseAMD"); - glad_glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)load("glTextureStorageSparseAMD"); -} -static void load_GL_ARB_clip_control(GLADloadproc load) { - if(!GLAD_GL_ARB_clip_control) return; - glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); -} -static void load_GL_NV_fragment_coverage_to_color(GLADloadproc load) { - if(!GLAD_GL_NV_fragment_coverage_to_color) return; - glad_glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)load("glFragmentCoverageColorNV"); -} -static void load_GL_NV_fence(GLADloadproc load) { - if(!GLAD_GL_NV_fence) return; - glad_glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)load("glDeleteFencesNV"); - glad_glGenFencesNV = (PFNGLGENFENCESNVPROC)load("glGenFencesNV"); - glad_glIsFenceNV = (PFNGLISFENCENVPROC)load("glIsFenceNV"); - glad_glTestFenceNV = (PFNGLTESTFENCENVPROC)load("glTestFenceNV"); - glad_glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)load("glGetFenceivNV"); - glad_glFinishFenceNV = (PFNGLFINISHFENCENVPROC)load("glFinishFenceNV"); - glad_glSetFenceNV = (PFNGLSETFENCENVPROC)load("glSetFenceNV"); -} -static void load_GL_ARB_texture_buffer_range(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_buffer_range) return; - glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); -} -static void load_GL_SUN_mesh_array(GLADloadproc load) { - if(!GLAD_GL_SUN_mesh_array) return; - glad_glDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC)load("glDrawMeshArraysSUN"); -} -static void load_GL_ARB_vertex_attrib_binding(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_attrib_binding) return; - glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); - glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); - glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); - glad_glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)load("glVertexAttribLFormat"); - glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); - glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); -} -static void load_GL_ARB_framebuffer_no_attachments(GLADloadproc load) { - if(!GLAD_GL_ARB_framebuffer_no_attachments) return; - glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); - glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); -} -static void load_GL_ARB_cl_event(GLADloadproc load) { - if(!GLAD_GL_ARB_cl_event) return; - glad_glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)load("glCreateSyncFromCLeventARB"); -} -static void load_GL_OES_single_precision(GLADloadproc load) { - if(!GLAD_GL_OES_single_precision) return; - glad_glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)load("glClearDepthfOES"); - glad_glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)load("glClipPlanefOES"); - glad_glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)load("glDepthRangefOES"); - glad_glFrustumfOES = (PFNGLFRUSTUMFOESPROC)load("glFrustumfOES"); - glad_glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)load("glGetClipPlanefOES"); - glad_glOrthofOES = (PFNGLORTHOFOESPROC)load("glOrthofOES"); -} -static void load_GL_NV_primitive_restart(GLADloadproc load) { - if(!GLAD_GL_NV_primitive_restart) return; - glad_glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)load("glPrimitiveRestartNV"); - glad_glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)load("glPrimitiveRestartIndexNV"); -} -static void load_GL_SUN_global_alpha(GLADloadproc load) { - if(!GLAD_GL_SUN_global_alpha) return; - glad_glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)load("glGlobalAlphaFactorbSUN"); - glad_glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)load("glGlobalAlphaFactorsSUN"); - glad_glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)load("glGlobalAlphaFactoriSUN"); - glad_glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)load("glGlobalAlphaFactorfSUN"); - glad_glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)load("glGlobalAlphaFactordSUN"); - glad_glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)load("glGlobalAlphaFactorubSUN"); - glad_glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)load("glGlobalAlphaFactorusSUN"); - glad_glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)load("glGlobalAlphaFactoruiSUN"); -} -static void load_GL_EXT_texture_object(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_object) return; - glad_glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)load("glAreTexturesResidentEXT"); - glad_glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)load("glBindTextureEXT"); - glad_glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)load("glDeleteTexturesEXT"); - glad_glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)load("glGenTexturesEXT"); - glad_glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)load("glIsTextureEXT"); - glad_glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)load("glPrioritizeTexturesEXT"); -} -static void load_GL_AMD_name_gen_delete(GLADloadproc load) { - if(!GLAD_GL_AMD_name_gen_delete) return; - glad_glGenNamesAMD = (PFNGLGENNAMESAMDPROC)load("glGenNamesAMD"); - glad_glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)load("glDeleteNamesAMD"); - glad_glIsNameAMD = (PFNGLISNAMEAMDPROC)load("glIsNameAMD"); -} -static void load_GL_ARB_buffer_storage(GLADloadproc load) { - if(!GLAD_GL_ARB_buffer_storage) return; - glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); -} -static void load_GL_APPLE_vertex_program_evaluators(GLADloadproc load) { - if(!GLAD_GL_APPLE_vertex_program_evaluators) return; - glad_glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)load("glEnableVertexAttribAPPLE"); - glad_glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)load("glDisableVertexAttribAPPLE"); - glad_glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)load("glIsVertexAttribEnabledAPPLE"); - glad_glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)load("glMapVertexAttrib1dAPPLE"); - glad_glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)load("glMapVertexAttrib1fAPPLE"); - glad_glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)load("glMapVertexAttrib2dAPPLE"); - glad_glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)load("glMapVertexAttrib2fAPPLE"); -} -static void load_GL_ARB_multi_bind(GLADloadproc load) { - if(!GLAD_GL_ARB_multi_bind) return; - glad_glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)load("glBindBuffersBase"); - glad_glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)load("glBindBuffersRange"); - glad_glBindTextures = (PFNGLBINDTEXTURESPROC)load("glBindTextures"); - glad_glBindSamplers = (PFNGLBINDSAMPLERSPROC)load("glBindSamplers"); - glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); - glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); -} -static void load_GL_SGIX_list_priority(GLADloadproc load) { - if(!GLAD_GL_SGIX_list_priority) return; - glad_glGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC)load("glGetListParameterfvSGIX"); - glad_glGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC)load("glGetListParameterivSGIX"); - glad_glListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC)load("glListParameterfSGIX"); - glad_glListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC)load("glListParameterfvSGIX"); - glad_glListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC)load("glListParameteriSGIX"); - glad_glListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC)load("glListParameterivSGIX"); -} -static void load_GL_NV_vertex_buffer_unified_memory(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_buffer_unified_memory) return; - glad_glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)load("glBufferAddressRangeNV"); - glad_glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)load("glVertexFormatNV"); - glad_glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)load("glNormalFormatNV"); - glad_glColorFormatNV = (PFNGLCOLORFORMATNVPROC)load("glColorFormatNV"); - glad_glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)load("glIndexFormatNV"); - glad_glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)load("glTexCoordFormatNV"); - glad_glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)load("glEdgeFlagFormatNV"); - glad_glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)load("glSecondaryColorFormatNV"); - glad_glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)load("glFogCoordFormatNV"); - glad_glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)load("glVertexAttribFormatNV"); - glad_glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)load("glVertexAttribIFormatNV"); - glad_glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)load("glGetIntegerui64i_vNV"); -} -static void load_GL_NV_blend_equation_advanced(GLADloadproc load) { - if(!GLAD_GL_NV_blend_equation_advanced) return; - glad_glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)load("glBlendParameteriNV"); - glad_glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)load("glBlendBarrierNV"); -} -static void load_GL_SGIS_sharpen_texture(GLADloadproc load) { - if(!GLAD_GL_SGIS_sharpen_texture) return; - glad_glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)load("glSharpenTexFuncSGIS"); - glad_glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)load("glGetSharpenTexFuncSGIS"); -} -static void load_GL_ARB_vertex_program(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_program) return; - glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); - glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); - glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); - glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); - glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); - glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); - glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); - glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); - glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); - glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); - glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); - glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); - glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); - glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); - glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); - glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); - glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); - glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); - glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); - glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); - glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); - glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); - glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); - glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); - glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); - glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); - glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); - glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); - glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); - glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); - glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); - glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); - glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); - glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); - glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); - glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); - glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); - glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); - glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); - glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); - glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); - glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); - glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); - glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); - glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); - glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); - glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); - glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); - glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); - glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); - glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); - glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); - glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); - glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); - glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); - glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); - glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); - glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); - glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); - glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); - glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); - glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); -} -static void load_GL_ARB_vertex_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_buffer_object) return; - glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC)load("glBindBufferARB"); - glad_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)load("glDeleteBuffersARB"); - glad_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)load("glGenBuffersARB"); - glad_glIsBufferARB = (PFNGLISBUFFERARBPROC)load("glIsBufferARB"); - glad_glBufferDataARB = (PFNGLBUFFERDATAARBPROC)load("glBufferDataARB"); - glad_glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)load("glBufferSubDataARB"); - glad_glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)load("glGetBufferSubDataARB"); - glad_glMapBufferARB = (PFNGLMAPBUFFERARBPROC)load("glMapBufferARB"); - glad_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)load("glUnmapBufferARB"); - glad_glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)load("glGetBufferParameterivARB"); - glad_glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)load("glGetBufferPointervARB"); -} -static void load_GL_NV_vertex_array_range(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_array_range) return; - glad_glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)load("glFlushVertexArrayRangeNV"); - glad_glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)load("glVertexArrayRangeNV"); -} -static void load_GL_SGIX_fragment_lighting(GLADloadproc load) { - if(!GLAD_GL_SGIX_fragment_lighting) return; - glad_glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)load("glFragmentColorMaterialSGIX"); - glad_glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)load("glFragmentLightfSGIX"); - glad_glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)load("glFragmentLightfvSGIX"); - glad_glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)load("glFragmentLightiSGIX"); - glad_glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)load("glFragmentLightivSGIX"); - glad_glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)load("glFragmentLightModelfSGIX"); - glad_glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)load("glFragmentLightModelfvSGIX"); - glad_glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)load("glFragmentLightModeliSGIX"); - glad_glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)load("glFragmentLightModelivSGIX"); - glad_glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)load("glFragmentMaterialfSGIX"); - glad_glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)load("glFragmentMaterialfvSGIX"); - glad_glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)load("glFragmentMaterialiSGIX"); - glad_glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)load("glFragmentMaterialivSGIX"); - glad_glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)load("glGetFragmentLightfvSGIX"); - glad_glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)load("glGetFragmentLightivSGIX"); - glad_glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)load("glGetFragmentMaterialfvSGIX"); - glad_glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)load("glGetFragmentMaterialivSGIX"); - glad_glLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC)load("glLightEnviSGIX"); -} -static void load_GL_NV_framebuffer_multisample_coverage(GLADloadproc load) { - if(!GLAD_GL_NV_framebuffer_multisample_coverage) return; - glad_glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)load("glRenderbufferStorageMultisampleCoverageNV"); -} -static void load_GL_EXT_timer_query(GLADloadproc load) { - if(!GLAD_GL_EXT_timer_query) return; - glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); - glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); -} -static void load_GL_NV_bindless_texture(GLADloadproc load) { - if(!GLAD_GL_NV_bindless_texture) return; - glad_glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)load("glGetTextureHandleNV"); - glad_glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)load("glGetTextureSamplerHandleNV"); - glad_glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)load("glMakeTextureHandleResidentNV"); - glad_glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)load("glMakeTextureHandleNonResidentNV"); - glad_glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)load("glGetImageHandleNV"); - glad_glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)load("glMakeImageHandleResidentNV"); - glad_glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)load("glMakeImageHandleNonResidentNV"); - glad_glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)load("glUniformHandleui64NV"); - glad_glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)load("glUniformHandleui64vNV"); - glad_glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)load("glProgramUniformHandleui64NV"); - glad_glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)load("glProgramUniformHandleui64vNV"); - glad_glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)load("glIsTextureHandleResidentNV"); - glad_glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)load("glIsImageHandleResidentNV"); -} -static void load_GL_KHR_debug(GLADloadproc load) { - if(!GLAD_GL_KHR_debug) return; - glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl"); - glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)load("glDebugMessageInsert"); - glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)load("glDebugMessageCallback"); - glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)load("glGetDebugMessageLog"); - glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)load("glPushDebugGroup"); - glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)load("glPopDebugGroup"); - glad_glObjectLabel = (PFNGLOBJECTLABELPROC)load("glObjectLabel"); - glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)load("glGetObjectLabel"); - glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)load("glObjectPtrLabel"); - glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); - glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); - glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)load("glDebugMessageControlKHR"); - glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)load("glDebugMessageInsertKHR"); - glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)load("glDebugMessageCallbackKHR"); - glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC)load("glGetDebugMessageLogKHR"); - glad_glPushDebugGroupKHR = (PFNGLPUSHDEBUGGROUPKHRPROC)load("glPushDebugGroupKHR"); - glad_glPopDebugGroupKHR = (PFNGLPOPDEBUGGROUPKHRPROC)load("glPopDebugGroupKHR"); - glad_glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)load("glObjectLabelKHR"); - glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC)load("glGetObjectLabelKHR"); - glad_glObjectPtrLabelKHR = (PFNGLOBJECTPTRLABELKHRPROC)load("glObjectPtrLabelKHR"); - glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC)load("glGetObjectPtrLabelKHR"); - glad_glGetPointervKHR = (PFNGLGETPOINTERVKHRPROC)load("glGetPointervKHR"); -} -static void load_GL_ATI_vertex_attrib_array_object(GLADloadproc load) { - if(!GLAD_GL_ATI_vertex_attrib_array_object) return; - glad_glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)load("glVertexAttribArrayObjectATI"); - glad_glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)load("glGetVertexAttribArrayObjectfvATI"); - glad_glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)load("glGetVertexAttribArrayObjectivATI"); -} -static void load_GL_EXT_geometry_shader4(GLADloadproc load) { - if(!GLAD_GL_EXT_geometry_shader4) return; - glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); -} -static void load_GL_EXT_bindable_uniform(GLADloadproc load) { - if(!GLAD_GL_EXT_bindable_uniform) return; - glad_glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)load("glUniformBufferEXT"); - glad_glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)load("glGetUniformBufferSizeEXT"); - glad_glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)load("glGetUniformOffsetEXT"); -} -static void load_GL_KHR_blend_equation_advanced(GLADloadproc load) { - if(!GLAD_GL_KHR_blend_equation_advanced) return; - glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); -} -static void load_GL_ATI_element_array(GLADloadproc load) { - if(!GLAD_GL_ATI_element_array) return; - glad_glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)load("glElementPointerATI"); - glad_glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)load("glDrawElementArrayATI"); - glad_glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)load("glDrawRangeElementArrayATI"); -} -static void load_GL_SGIX_reference_plane(GLADloadproc load) { - if(!GLAD_GL_SGIX_reference_plane) return; - glad_glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)load("glReferencePlaneSGIX"); -} -static void load_GL_EXT_stencil_two_side(GLADloadproc load) { - if(!GLAD_GL_EXT_stencil_two_side) return; - glad_glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)load("glActiveStencilFaceEXT"); -} -static void load_GL_NV_explicit_multisample(GLADloadproc load) { - if(!GLAD_GL_NV_explicit_multisample) return; - glad_glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)load("glGetMultisamplefvNV"); - glad_glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)load("glSampleMaskIndexedNV"); - glad_glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)load("glTexRenderbufferNV"); -} -static void load_GL_IBM_static_data(GLADloadproc load) { - if(!GLAD_GL_IBM_static_data) return; - glad_glFlushStaticDataIBM = (PFNGLFLUSHSTATICDATAIBMPROC)load("glFlushStaticDataIBM"); -} -static void load_GL_EXT_texture_perturb_normal(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_perturb_normal) return; - glad_glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)load("glTextureNormalEXT"); -} -static void load_GL_EXT_point_parameters(GLADloadproc load) { - if(!GLAD_GL_EXT_point_parameters) return; - glad_glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)load("glPointParameterfEXT"); - glad_glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)load("glPointParameterfvEXT"); -} -static void load_GL_PGI_misc_hints(GLADloadproc load) { - if(!GLAD_GL_PGI_misc_hints) return; - glad_glHintPGI = (PFNGLHINTPGIPROC)load("glHintPGI"); -} -static void load_GL_ARB_vertex_shader(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_shader) return; - glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); - glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); - glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); - glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); - glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); - glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); - glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); - glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); - glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); - glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); - glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); - glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); - glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); - glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); - glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); - glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); - glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); - glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); - glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); - glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); - glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); - glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); - glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); - glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); - glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); - glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); - glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); - glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); - glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); - glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); - glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); - glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); - glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); - glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); - glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); - glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); - glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); - glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); - glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); - glad_glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)load("glBindAttribLocationARB"); - glad_glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)load("glGetActiveAttribARB"); - glad_glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)load("glGetAttribLocationARB"); - glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); - glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); - glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); - glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); -} -static void load_GL_ARB_tessellation_shader(GLADloadproc load) { - if(!GLAD_GL_ARB_tessellation_shader) return; - glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); - glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); -} -static void load_GL_EXT_draw_buffers2(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_buffers2) return; - glad_glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)load("glColorMaskIndexedEXT"); - glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); - glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); - glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); - glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); - glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); -} -static void load_GL_ARB_vertex_attrib_64bit(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_attrib_64bit) return; - glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); - glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); - glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); - glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); - glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); - glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); - glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); - glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); - glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); - glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); -} -static void load_GL_EXT_texture_filter_minmax(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_filter_minmax) return; - glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); -} -static void load_GL_AMD_interleaved_elements(GLADloadproc load) { - if(!GLAD_GL_AMD_interleaved_elements) return; - glad_glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)load("glVertexAttribParameteriAMD"); -} -static void load_GL_ARB_fragment_program(GLADloadproc load) { - if(!GLAD_GL_ARB_fragment_program) return; - glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); - glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); - glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); - glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); - glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); - glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); - glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); - glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); - glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); - glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); - glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); - glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); - glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); - glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); - glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); - glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); - glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); - glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); - glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); -} -static void load_GL_ARB_texture_storage(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_storage) return; - glad_glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)load("glTexStorage1D"); - glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); - glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); -} -static void load_GL_ARB_copy_image(GLADloadproc load) { - if(!GLAD_GL_ARB_copy_image) return; - glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); -} -static void load_GL_SGIS_pixel_texture(GLADloadproc load) { - if(!GLAD_GL_SGIS_pixel_texture) return; - glad_glPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC)load("glPixelTexGenParameteriSGIS"); - glad_glPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC)load("glPixelTexGenParameterivSGIS"); - glad_glPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC)load("glPixelTexGenParameterfSGIS"); - glad_glPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC)load("glPixelTexGenParameterfvSGIS"); - glad_glGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)load("glGetPixelTexGenParameterivSGIS"); - glad_glGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)load("glGetPixelTexGenParameterfvSGIS"); -} -static void load_GL_SGIX_instruments(GLADloadproc load) { - if(!GLAD_GL_SGIX_instruments) return; - glad_glGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC)load("glGetInstrumentsSGIX"); - glad_glInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC)load("glInstrumentsBufferSGIX"); - glad_glPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC)load("glPollInstrumentsSGIX"); - glad_glReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC)load("glReadInstrumentsSGIX"); - glad_glStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC)load("glStartInstrumentsSGIX"); - glad_glStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC)load("glStopInstrumentsSGIX"); -} -static void load_GL_ARB_shader_storage_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_storage_buffer_object) return; - glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)load("glShaderStorageBlockBinding"); -} -static void load_GL_EXT_blend_minmax(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_minmax) return; - glad_glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)load("glBlendEquationEXT"); -} -static void load_GL_ARB_base_instance(GLADloadproc load) { - if(!GLAD_GL_ARB_base_instance) return; - glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); - glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); - glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); -} -static void load_GL_ARB_ES3_1_compatibility(GLADloadproc load) { - if(!GLAD_GL_ARB_ES3_1_compatibility) return; - glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); -} -static void load_GL_EXT_texture_integer(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_integer) return; - glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); - glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); - glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); - glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); - glad_glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)load("glClearColorIiEXT"); - glad_glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)load("glClearColorIuiEXT"); -} -static void load_GL_ARB_texture_multisample(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_multisample) return; - glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); - glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); - glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); - glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); -} -static void load_GL_AMD_gpu_shader_int64(GLADloadproc load) { - if(!GLAD_GL_AMD_gpu_shader_int64) return; - glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); - glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); - glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); - glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); - glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); - glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); - glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); - glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); - glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); - glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); - glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); - glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); - glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); - glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); - glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); - glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); - glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); - glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); - glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); - glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); - glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); - glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); - glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); - glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); - glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); - glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); - glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); - glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); - glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); - glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); - glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); - glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); - glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); - glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); -} -static void load_GL_AMD_vertex_shader_tessellator(GLADloadproc load) { - if(!GLAD_GL_AMD_vertex_shader_tessellator) return; - glad_glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)load("glTessellationFactorAMD"); - glad_glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)load("glTessellationModeAMD"); -} -static void load_GL_ARB_invalidate_subdata(GLADloadproc load) { - if(!GLAD_GL_ARB_invalidate_subdata) return; - glad_glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)load("glInvalidateTexSubImage"); - glad_glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)load("glInvalidateTexImage"); - glad_glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)load("glInvalidateBufferSubData"); - glad_glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)load("glInvalidateBufferData"); - glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); - glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); -} -static void load_GL_EXT_index_material(GLADloadproc load) { - if(!GLAD_GL_EXT_index_material) return; - glad_glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)load("glIndexMaterialEXT"); -} -static void load_GL_INTEL_parallel_arrays(GLADloadproc load) { - if(!GLAD_GL_INTEL_parallel_arrays) return; - glad_glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)load("glVertexPointervINTEL"); - glad_glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)load("glNormalPointervINTEL"); - glad_glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)load("glColorPointervINTEL"); - glad_glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)load("glTexCoordPointervINTEL"); -} -static void load_GL_ATI_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_ATI_draw_buffers) return; - glad_glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)load("glDrawBuffersATI"); -} -static void load_GL_SGIX_pixel_texture(GLADloadproc load) { - if(!GLAD_GL_SGIX_pixel_texture) return; - glad_glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)load("glPixelTexGenSGIX"); -} -static void load_GL_ARB_timer_query(GLADloadproc load) { - if(!GLAD_GL_ARB_timer_query) return; - glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); - glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); - glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); -} -static void load_GL_NV_parameter_buffer_object(GLADloadproc load) { - if(!GLAD_GL_NV_parameter_buffer_object) return; - glad_glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)load("glProgramBufferParametersfvNV"); - glad_glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)load("glProgramBufferParametersIivNV"); - glad_glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)load("glProgramBufferParametersIuivNV"); -} -static void load_GL_ARB_direct_state_access(GLADloadproc load) { - if(!GLAD_GL_ARB_direct_state_access) return; - glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); - glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); - glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)load("glTransformFeedbackBufferRange"); - glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)load("glGetTransformFeedbackiv"); - glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)load("glGetTransformFeedbacki_v"); - glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)load("glGetTransformFeedbacki64_v"); - glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC)load("glCreateBuffers"); - glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)load("glNamedBufferStorage"); - glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)load("glNamedBufferData"); - glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)load("glNamedBufferSubData"); - glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)load("glCopyNamedBufferSubData"); - glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)load("glClearNamedBufferData"); - glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)load("glClearNamedBufferSubData"); - glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)load("glMapNamedBuffer"); - glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)load("glMapNamedBufferRange"); - glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)load("glUnmapNamedBuffer"); - glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)load("glFlushMappedNamedBufferRange"); - glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)load("glGetNamedBufferParameteriv"); - glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)load("glGetNamedBufferParameteri64v"); - glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)load("glGetNamedBufferPointerv"); - glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)load("glGetNamedBufferSubData"); - glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)load("glCreateFramebuffers"); - glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)load("glNamedFramebufferRenderbuffer"); - glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)load("glNamedFramebufferParameteri"); - glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)load("glNamedFramebufferTexture"); - glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)load("glNamedFramebufferTextureLayer"); - glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)load("glNamedFramebufferDrawBuffer"); - glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)load("glNamedFramebufferDrawBuffers"); - glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)load("glNamedFramebufferReadBuffer"); - glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)load("glInvalidateNamedFramebufferData"); - glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)load("glInvalidateNamedFramebufferSubData"); - glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)load("glClearNamedFramebufferiv"); - glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)load("glClearNamedFramebufferuiv"); - glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)load("glClearNamedFramebufferfv"); - glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)load("glClearNamedFramebufferfi"); - glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)load("glBlitNamedFramebuffer"); - glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)load("glCheckNamedFramebufferStatus"); - glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)load("glGetNamedFramebufferParameteriv"); - glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetNamedFramebufferAttachmentParameteriv"); - glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)load("glCreateRenderbuffers"); - glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)load("glNamedRenderbufferStorage"); - glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glNamedRenderbufferStorageMultisample"); - glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)load("glGetNamedRenderbufferParameteriv"); - glad_glCreateTextures = (PFNGLCREATETEXTURESPROC)load("glCreateTextures"); - glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)load("glTextureBuffer"); - glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)load("glTextureBufferRange"); - glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)load("glTextureStorage1D"); - glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)load("glTextureStorage2D"); - glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)load("glTextureStorage3D"); - glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)load("glTextureStorage2DMultisample"); - glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)load("glTextureStorage3DMultisample"); - glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)load("glTextureSubImage1D"); - glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)load("glTextureSubImage2D"); - glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)load("glTextureSubImage3D"); - glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)load("glCompressedTextureSubImage1D"); - glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)load("glCompressedTextureSubImage2D"); - glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)load("glCompressedTextureSubImage3D"); - glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)load("glCopyTextureSubImage1D"); - glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)load("glCopyTextureSubImage2D"); - glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)load("glCopyTextureSubImage3D"); - glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)load("glTextureParameterf"); - glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)load("glTextureParameterfv"); - glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)load("glTextureParameteri"); - glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)load("glTextureParameterIiv"); - glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)load("glTextureParameterIuiv"); - glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)load("glTextureParameteriv"); - glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)load("glGenerateTextureMipmap"); - glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)load("glBindTextureUnit"); - glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)load("glGetTextureImage"); - glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)load("glGetCompressedTextureImage"); - glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)load("glGetTextureLevelParameterfv"); - glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)load("glGetTextureLevelParameteriv"); - glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)load("glGetTextureParameterfv"); - glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)load("glGetTextureParameterIiv"); - glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)load("glGetTextureParameterIuiv"); - glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)load("glGetTextureParameteriv"); - glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)load("glCreateVertexArrays"); - glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)load("glDisableVertexArrayAttrib"); - glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)load("glEnableVertexArrayAttrib"); - glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)load("glVertexArrayElementBuffer"); - glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)load("glVertexArrayVertexBuffer"); - glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)load("glVertexArrayVertexBuffers"); - glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)load("glVertexArrayAttribBinding"); - glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)load("glVertexArrayAttribFormat"); - glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)load("glVertexArrayAttribIFormat"); - glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)load("glVertexArrayAttribLFormat"); - glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)load("glVertexArrayBindingDivisor"); - glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)load("glGetVertexArrayiv"); - glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)load("glGetVertexArrayIndexediv"); - glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)load("glGetVertexArrayIndexed64iv"); - glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC)load("glCreateSamplers"); - glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)load("glCreateProgramPipelines"); - glad_glCreateQueries = (PFNGLCREATEQUERIESPROC)load("glCreateQueries"); - glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)load("glGetQueryBufferObjecti64v"); - glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)load("glGetQueryBufferObjectiv"); - glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)load("glGetQueryBufferObjectui64v"); - glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)load("glGetQueryBufferObjectuiv"); -} -static void load_GL_ARB_uniform_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_uniform_buffer_object) return; - glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); - glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); - glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); - glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); - glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); - glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); - glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); - glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); - glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); -} -static void load_GL_NV_transform_feedback2(GLADloadproc load) { - if(!GLAD_GL_NV_transform_feedback2) return; - glad_glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)load("glBindTransformFeedbackNV"); - glad_glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)load("glDeleteTransformFeedbacksNV"); - glad_glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)load("glGenTransformFeedbacksNV"); - glad_glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)load("glIsTransformFeedbackNV"); - glad_glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)load("glPauseTransformFeedbackNV"); - glad_glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)load("glResumeTransformFeedbackNV"); - glad_glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)load("glDrawTransformFeedbackNV"); -} -static void load_GL_EXT_blend_color(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_color) return; - glad_glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)load("glBlendColorEXT"); -} -static void load_GL_EXT_histogram(GLADloadproc load) { - if(!GLAD_GL_EXT_histogram) return; - glad_glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)load("glGetHistogramEXT"); - glad_glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)load("glGetHistogramParameterfvEXT"); - glad_glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)load("glGetHistogramParameterivEXT"); - glad_glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)load("glGetMinmaxEXT"); - glad_glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)load("glGetMinmaxParameterfvEXT"); - glad_glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)load("glGetMinmaxParameterivEXT"); - glad_glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)load("glHistogramEXT"); - glad_glMinmaxEXT = (PFNGLMINMAXEXTPROC)load("glMinmaxEXT"); - glad_glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)load("glResetHistogramEXT"); - glad_glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)load("glResetMinmaxEXT"); -} -static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { - if(!GLAD_GL_ARB_get_texture_sub_image) return; - glad_glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)load("glGetTextureSubImage"); - glad_glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)load("glGetCompressedTextureSubImage"); -} -static void load_GL_SGIS_point_parameters(GLADloadproc load) { - if(!GLAD_GL_SGIS_point_parameters) return; - glad_glPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC)load("glPointParameterfSGIS"); - glad_glPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC)load("glPointParameterfvSGIS"); -} -static void load_GL_EXT_direct_state_access(GLADloadproc load) { - if(!GLAD_GL_EXT_direct_state_access) return; - glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); - glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); - glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); - glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); - glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); - glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); - glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); - glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); - glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); - glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); - glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); - glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); - glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); - glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); - glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); - glad_glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)load("glClientAttribDefaultEXT"); - glad_glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)load("glPushClientAttribDefaultEXT"); - glad_glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)load("glTextureParameterfEXT"); - glad_glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)load("glTextureParameterfvEXT"); - glad_glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)load("glTextureParameteriEXT"); - glad_glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)load("glTextureParameterivEXT"); - glad_glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)load("glTextureImage1DEXT"); - glad_glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)load("glTextureImage2DEXT"); - glad_glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)load("glTextureSubImage1DEXT"); - glad_glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)load("glTextureSubImage2DEXT"); - glad_glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)load("glCopyTextureImage1DEXT"); - glad_glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)load("glCopyTextureImage2DEXT"); - glad_glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)load("glCopyTextureSubImage1DEXT"); - glad_glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)load("glCopyTextureSubImage2DEXT"); - glad_glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)load("glGetTextureImageEXT"); - glad_glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)load("glGetTextureParameterfvEXT"); - glad_glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)load("glGetTextureParameterivEXT"); - glad_glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)load("glGetTextureLevelParameterfvEXT"); - glad_glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)load("glGetTextureLevelParameterivEXT"); - glad_glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)load("glTextureImage3DEXT"); - glad_glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)load("glTextureSubImage3DEXT"); - glad_glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)load("glCopyTextureSubImage3DEXT"); - glad_glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)load("glBindMultiTextureEXT"); - glad_glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)load("glMultiTexCoordPointerEXT"); - glad_glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)load("glMultiTexEnvfEXT"); - glad_glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)load("glMultiTexEnvfvEXT"); - glad_glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)load("glMultiTexEnviEXT"); - glad_glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)load("glMultiTexEnvivEXT"); - glad_glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)load("glMultiTexGendEXT"); - glad_glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)load("glMultiTexGendvEXT"); - glad_glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)load("glMultiTexGenfEXT"); - glad_glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)load("glMultiTexGenfvEXT"); - glad_glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)load("glMultiTexGeniEXT"); - glad_glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)load("glMultiTexGenivEXT"); - glad_glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)load("glGetMultiTexEnvfvEXT"); - glad_glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)load("glGetMultiTexEnvivEXT"); - glad_glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)load("glGetMultiTexGendvEXT"); - glad_glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)load("glGetMultiTexGenfvEXT"); - glad_glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)load("glGetMultiTexGenivEXT"); - glad_glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)load("glMultiTexParameteriEXT"); - glad_glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)load("glMultiTexParameterivEXT"); - glad_glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)load("glMultiTexParameterfEXT"); - glad_glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)load("glMultiTexParameterfvEXT"); - glad_glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)load("glMultiTexImage1DEXT"); - glad_glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)load("glMultiTexImage2DEXT"); - glad_glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)load("glMultiTexSubImage1DEXT"); - glad_glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)load("glMultiTexSubImage2DEXT"); - glad_glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)load("glCopyMultiTexImage1DEXT"); - glad_glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)load("glCopyMultiTexImage2DEXT"); - glad_glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)load("glCopyMultiTexSubImage1DEXT"); - glad_glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)load("glCopyMultiTexSubImage2DEXT"); - glad_glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)load("glGetMultiTexImageEXT"); - glad_glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)load("glGetMultiTexParameterfvEXT"); - glad_glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)load("glGetMultiTexParameterivEXT"); - glad_glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)load("glGetMultiTexLevelParameterfvEXT"); - glad_glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)load("glGetMultiTexLevelParameterivEXT"); - glad_glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)load("glMultiTexImage3DEXT"); - glad_glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)load("glMultiTexSubImage3DEXT"); - glad_glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)load("glCopyMultiTexSubImage3DEXT"); - glad_glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)load("glEnableClientStateIndexedEXT"); - glad_glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)load("glDisableClientStateIndexedEXT"); - glad_glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)load("glGetFloatIndexedvEXT"); - glad_glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)load("glGetDoubleIndexedvEXT"); - glad_glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)load("glGetPointerIndexedvEXT"); - glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); - glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); - glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); - glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); - glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); - glad_glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)load("glCompressedTextureImage3DEXT"); - glad_glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)load("glCompressedTextureImage2DEXT"); - glad_glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)load("glCompressedTextureImage1DEXT"); - glad_glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)load("glCompressedTextureSubImage3DEXT"); - glad_glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)load("glCompressedTextureSubImage2DEXT"); - glad_glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)load("glCompressedTextureSubImage1DEXT"); - glad_glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)load("glGetCompressedTextureImageEXT"); - glad_glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)load("glCompressedMultiTexImage3DEXT"); - glad_glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)load("glCompressedMultiTexImage2DEXT"); - glad_glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)load("glCompressedMultiTexImage1DEXT"); - glad_glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)load("glCompressedMultiTexSubImage3DEXT"); - glad_glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)load("glCompressedMultiTexSubImage2DEXT"); - glad_glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)load("glCompressedMultiTexSubImage1DEXT"); - glad_glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)load("glGetCompressedMultiTexImageEXT"); - glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); - glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); - glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); - glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); - glad_glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)load("glNamedBufferDataEXT"); - glad_glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)load("glNamedBufferSubDataEXT"); - glad_glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)load("glMapNamedBufferEXT"); - glad_glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)load("glUnmapNamedBufferEXT"); - glad_glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)load("glGetNamedBufferParameterivEXT"); - glad_glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)load("glGetNamedBufferPointervEXT"); - glad_glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)load("glGetNamedBufferSubDataEXT"); - glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); - glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); - glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); - glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); - glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); - glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); - glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); - glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); - glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); - glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); - glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); - glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); - glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); - glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); - glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); - glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); - glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); - glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); - glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); - glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); - glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); - glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); - glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); - glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); - glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); - glad_glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)load("glTextureBufferEXT"); - glad_glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)load("glMultiTexBufferEXT"); - glad_glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)load("glTextureParameterIivEXT"); - glad_glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)load("glTextureParameterIuivEXT"); - glad_glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)load("glGetTextureParameterIivEXT"); - glad_glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)load("glGetTextureParameterIuivEXT"); - glad_glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)load("glMultiTexParameterIivEXT"); - glad_glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)load("glMultiTexParameterIuivEXT"); - glad_glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)load("glGetMultiTexParameterIivEXT"); - glad_glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)load("glGetMultiTexParameterIuivEXT"); - glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); - glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); - glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); - glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); - glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); - glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); - glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); - glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); - glad_glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glNamedProgramLocalParameters4fvEXT"); - glad_glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)load("glNamedProgramLocalParameterI4iEXT"); - glad_glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)load("glNamedProgramLocalParameterI4ivEXT"); - glad_glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)load("glNamedProgramLocalParametersI4ivEXT"); - glad_glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)load("glNamedProgramLocalParameterI4uiEXT"); - glad_glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)load("glNamedProgramLocalParameterI4uivEXT"); - glad_glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)load("glNamedProgramLocalParametersI4uivEXT"); - glad_glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)load("glGetNamedProgramLocalParameterIivEXT"); - glad_glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)load("glGetNamedProgramLocalParameterIuivEXT"); - glad_glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)load("glEnableClientStateiEXT"); - glad_glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)load("glDisableClientStateiEXT"); - glad_glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)load("glGetFloati_vEXT"); - glad_glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)load("glGetDoublei_vEXT"); - glad_glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)load("glGetPointeri_vEXT"); - glad_glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)load("glNamedProgramStringEXT"); - glad_glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)load("glNamedProgramLocalParameter4dEXT"); - glad_glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)load("glNamedProgramLocalParameter4dvEXT"); - glad_glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)load("glNamedProgramLocalParameter4fEXT"); - glad_glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)load("glNamedProgramLocalParameter4fvEXT"); - glad_glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)load("glGetNamedProgramLocalParameterdvEXT"); - glad_glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)load("glGetNamedProgramLocalParameterfvEXT"); - glad_glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)load("glGetNamedProgramivEXT"); - glad_glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)load("glGetNamedProgramStringEXT"); - glad_glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)load("glNamedRenderbufferStorageEXT"); - glad_glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)load("glGetNamedRenderbufferParameterivEXT"); - glad_glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glNamedRenderbufferStorageMultisampleEXT"); - glad_glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)load("glNamedRenderbufferStorageMultisampleCoverageEXT"); - glad_glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)load("glCheckNamedFramebufferStatusEXT"); - glad_glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)load("glNamedFramebufferTexture1DEXT"); - glad_glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)load("glNamedFramebufferTexture2DEXT"); - glad_glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)load("glNamedFramebufferTexture3DEXT"); - glad_glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)load("glNamedFramebufferRenderbufferEXT"); - glad_glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetNamedFramebufferAttachmentParameterivEXT"); - glad_glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)load("glGenerateTextureMipmapEXT"); - glad_glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)load("glGenerateMultiTexMipmapEXT"); - glad_glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)load("glFramebufferDrawBufferEXT"); - glad_glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)load("glFramebufferDrawBuffersEXT"); - glad_glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)load("glFramebufferReadBufferEXT"); - glad_glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetFramebufferParameterivEXT"); - glad_glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)load("glNamedCopyBufferSubDataEXT"); - glad_glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)load("glNamedFramebufferTextureEXT"); - glad_glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)load("glNamedFramebufferTextureLayerEXT"); - glad_glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)load("glNamedFramebufferTextureFaceEXT"); - glad_glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)load("glTextureRenderbufferEXT"); - glad_glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)load("glMultiTexRenderbufferEXT"); - glad_glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)load("glVertexArrayVertexOffsetEXT"); - glad_glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)load("glVertexArrayColorOffsetEXT"); - glad_glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)load("glVertexArrayEdgeFlagOffsetEXT"); - glad_glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)load("glVertexArrayIndexOffsetEXT"); - glad_glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)load("glVertexArrayNormalOffsetEXT"); - glad_glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)load("glVertexArrayTexCoordOffsetEXT"); - glad_glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)load("glVertexArrayMultiTexCoordOffsetEXT"); - glad_glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)load("glVertexArrayFogCoordOffsetEXT"); - glad_glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)load("glVertexArraySecondaryColorOffsetEXT"); - glad_glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)load("glVertexArrayVertexAttribOffsetEXT"); - glad_glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)load("glVertexArrayVertexAttribIOffsetEXT"); - glad_glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)load("glEnableVertexArrayEXT"); - glad_glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)load("glDisableVertexArrayEXT"); - glad_glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)load("glEnableVertexArrayAttribEXT"); - glad_glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)load("glDisableVertexArrayAttribEXT"); - glad_glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)load("glGetVertexArrayIntegervEXT"); - glad_glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)load("glGetVertexArrayPointervEXT"); - glad_glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)load("glGetVertexArrayIntegeri_vEXT"); - glad_glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)load("glGetVertexArrayPointeri_vEXT"); - glad_glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)load("glMapNamedBufferRangeEXT"); - glad_glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)load("glFlushMappedNamedBufferRangeEXT"); - glad_glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)load("glNamedBufferStorageEXT"); - glad_glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)load("glClearNamedBufferDataEXT"); - glad_glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)load("glClearNamedBufferSubDataEXT"); - glad_glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)load("glNamedFramebufferParameteriEXT"); - glad_glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetNamedFramebufferParameterivEXT"); - glad_glProgramUniform1dEXT = (PFNGLPROGRAMUNIFORM1DEXTPROC)load("glProgramUniform1dEXT"); - glad_glProgramUniform2dEXT = (PFNGLPROGRAMUNIFORM2DEXTPROC)load("glProgramUniform2dEXT"); - glad_glProgramUniform3dEXT = (PFNGLPROGRAMUNIFORM3DEXTPROC)load("glProgramUniform3dEXT"); - glad_glProgramUniform4dEXT = (PFNGLPROGRAMUNIFORM4DEXTPROC)load("glProgramUniform4dEXT"); - glad_glProgramUniform1dvEXT = (PFNGLPROGRAMUNIFORM1DVEXTPROC)load("glProgramUniform1dvEXT"); - glad_glProgramUniform2dvEXT = (PFNGLPROGRAMUNIFORM2DVEXTPROC)load("glProgramUniform2dvEXT"); - glad_glProgramUniform3dvEXT = (PFNGLPROGRAMUNIFORM3DVEXTPROC)load("glProgramUniform3dvEXT"); - glad_glProgramUniform4dvEXT = (PFNGLPROGRAMUNIFORM4DVEXTPROC)load("glProgramUniform4dvEXT"); - glad_glProgramUniformMatrix2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)load("glProgramUniformMatrix2dvEXT"); - glad_glProgramUniformMatrix3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)load("glProgramUniformMatrix3dvEXT"); - glad_glProgramUniformMatrix4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)load("glProgramUniformMatrix4dvEXT"); - glad_glProgramUniformMatrix2x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)load("glProgramUniformMatrix2x3dvEXT"); - glad_glProgramUniformMatrix2x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)load("glProgramUniformMatrix2x4dvEXT"); - glad_glProgramUniformMatrix3x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)load("glProgramUniformMatrix3x2dvEXT"); - glad_glProgramUniformMatrix3x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)load("glProgramUniformMatrix3x4dvEXT"); - glad_glProgramUniformMatrix4x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)load("glProgramUniformMatrix4x2dvEXT"); - glad_glProgramUniformMatrix4x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)load("glProgramUniformMatrix4x3dvEXT"); - glad_glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)load("glTextureBufferRangeEXT"); - glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); - glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); - glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); - glad_glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)load("glTextureStorage2DMultisampleEXT"); - glad_glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)load("glTextureStorage3DMultisampleEXT"); - glad_glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)load("glVertexArrayBindVertexBufferEXT"); - glad_glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)load("glVertexArrayVertexAttribFormatEXT"); - glad_glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)load("glVertexArrayVertexAttribIFormatEXT"); - glad_glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)load("glVertexArrayVertexAttribLFormatEXT"); - glad_glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)load("glVertexArrayVertexAttribBindingEXT"); - glad_glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)load("glVertexArrayVertexBindingDivisorEXT"); - glad_glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)load("glVertexArrayVertexAttribLOffsetEXT"); - glad_glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)load("glTexturePageCommitmentEXT"); - glad_glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)load("glVertexArrayVertexAttribDivisorEXT"); -} -static void load_GL_AMD_sample_positions(GLADloadproc load) { - if(!GLAD_GL_AMD_sample_positions) return; - glad_glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)load("glSetMultisamplefvAMD"); -} -static void load_GL_NV_vertex_program(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_program) return; - glad_glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)load("glAreProgramsResidentNV"); - glad_glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)load("glBindProgramNV"); - glad_glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)load("glDeleteProgramsNV"); - glad_glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)load("glExecuteProgramNV"); - glad_glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)load("glGenProgramsNV"); - glad_glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)load("glGetProgramParameterdvNV"); - glad_glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)load("glGetProgramParameterfvNV"); - glad_glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)load("glGetProgramivNV"); - glad_glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)load("glGetProgramStringNV"); - glad_glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)load("glGetTrackMatrixivNV"); - glad_glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)load("glGetVertexAttribdvNV"); - glad_glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)load("glGetVertexAttribfvNV"); - glad_glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)load("glGetVertexAttribivNV"); - glad_glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)load("glGetVertexAttribPointervNV"); - glad_glIsProgramNV = (PFNGLISPROGRAMNVPROC)load("glIsProgramNV"); - glad_glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)load("glLoadProgramNV"); - glad_glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)load("glProgramParameter4dNV"); - glad_glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)load("glProgramParameter4dvNV"); - glad_glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)load("glProgramParameter4fNV"); - glad_glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)load("glProgramParameter4fvNV"); - glad_glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)load("glProgramParameters4dvNV"); - glad_glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)load("glProgramParameters4fvNV"); - glad_glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)load("glRequestResidentProgramsNV"); - glad_glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)load("glTrackMatrixNV"); - glad_glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)load("glVertexAttribPointerNV"); - glad_glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)load("glVertexAttrib1dNV"); - glad_glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)load("glVertexAttrib1dvNV"); - glad_glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)load("glVertexAttrib1fNV"); - glad_glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)load("glVertexAttrib1fvNV"); - glad_glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)load("glVertexAttrib1sNV"); - glad_glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)load("glVertexAttrib1svNV"); - glad_glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)load("glVertexAttrib2dNV"); - glad_glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)load("glVertexAttrib2dvNV"); - glad_glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)load("glVertexAttrib2fNV"); - glad_glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)load("glVertexAttrib2fvNV"); - glad_glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)load("glVertexAttrib2sNV"); - glad_glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)load("glVertexAttrib2svNV"); - glad_glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)load("glVertexAttrib3dNV"); - glad_glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)load("glVertexAttrib3dvNV"); - glad_glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)load("glVertexAttrib3fNV"); - glad_glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)load("glVertexAttrib3fvNV"); - glad_glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)load("glVertexAttrib3sNV"); - glad_glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)load("glVertexAttrib3svNV"); - glad_glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)load("glVertexAttrib4dNV"); - glad_glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)load("glVertexAttrib4dvNV"); - glad_glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)load("glVertexAttrib4fNV"); - glad_glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)load("glVertexAttrib4fvNV"); - glad_glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)load("glVertexAttrib4sNV"); - glad_glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)load("glVertexAttrib4svNV"); - glad_glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)load("glVertexAttrib4ubNV"); - glad_glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)load("glVertexAttrib4ubvNV"); - glad_glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)load("glVertexAttribs1dvNV"); - glad_glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)load("glVertexAttribs1fvNV"); - glad_glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)load("glVertexAttribs1svNV"); - glad_glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)load("glVertexAttribs2dvNV"); - glad_glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)load("glVertexAttribs2fvNV"); - glad_glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)load("glVertexAttribs2svNV"); - glad_glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)load("glVertexAttribs3dvNV"); - glad_glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)load("glVertexAttribs3fvNV"); - glad_glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)load("glVertexAttribs3svNV"); - glad_glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)load("glVertexAttribs4dvNV"); - glad_glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)load("glVertexAttribs4fvNV"); - glad_glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)load("glVertexAttribs4svNV"); - glad_glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)load("glVertexAttribs4ubvNV"); -} -static void load_GL_EXT_vertex_shader(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_shader) return; - glad_glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)load("glBeginVertexShaderEXT"); - glad_glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)load("glEndVertexShaderEXT"); - glad_glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)load("glBindVertexShaderEXT"); - glad_glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)load("glGenVertexShadersEXT"); - glad_glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)load("glDeleteVertexShaderEXT"); - glad_glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)load("glShaderOp1EXT"); - glad_glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)load("glShaderOp2EXT"); - glad_glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)load("glShaderOp3EXT"); - glad_glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)load("glSwizzleEXT"); - glad_glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)load("glWriteMaskEXT"); - glad_glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)load("glInsertComponentEXT"); - glad_glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)load("glExtractComponentEXT"); - glad_glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)load("glGenSymbolsEXT"); - glad_glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)load("glSetInvariantEXT"); - glad_glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)load("glSetLocalConstantEXT"); - glad_glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)load("glVariantbvEXT"); - glad_glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)load("glVariantsvEXT"); - glad_glVariantivEXT = (PFNGLVARIANTIVEXTPROC)load("glVariantivEXT"); - glad_glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)load("glVariantfvEXT"); - glad_glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)load("glVariantdvEXT"); - glad_glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)load("glVariantubvEXT"); - glad_glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)load("glVariantusvEXT"); - glad_glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)load("glVariantuivEXT"); - glad_glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)load("glVariantPointerEXT"); - glad_glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)load("glEnableVariantClientStateEXT"); - glad_glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)load("glDisableVariantClientStateEXT"); - glad_glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)load("glBindLightParameterEXT"); - glad_glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)load("glBindMaterialParameterEXT"); - glad_glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)load("glBindTexGenParameterEXT"); - glad_glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)load("glBindTextureUnitParameterEXT"); - glad_glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)load("glBindParameterEXT"); - glad_glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)load("glIsVariantEnabledEXT"); - glad_glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)load("glGetVariantBooleanvEXT"); - glad_glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)load("glGetVariantIntegervEXT"); - glad_glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)load("glGetVariantFloatvEXT"); - glad_glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)load("glGetVariantPointervEXT"); - glad_glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)load("glGetInvariantBooleanvEXT"); - glad_glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)load("glGetInvariantIntegervEXT"); - glad_glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)load("glGetInvariantFloatvEXT"); - glad_glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)load("glGetLocalConstantBooleanvEXT"); - glad_glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)load("glGetLocalConstantIntegervEXT"); - glad_glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)load("glGetLocalConstantFloatvEXT"); -} -static void load_GL_EXT_blend_func_separate(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_func_separate) return; - glad_glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)load("glBlendFuncSeparateEXT"); -} -static void load_GL_APPLE_fence(GLADloadproc load) { - if(!GLAD_GL_APPLE_fence) return; - glad_glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)load("glGenFencesAPPLE"); - glad_glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)load("glDeleteFencesAPPLE"); - glad_glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)load("glSetFenceAPPLE"); - glad_glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)load("glIsFenceAPPLE"); - glad_glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)load("glTestFenceAPPLE"); - glad_glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)load("glFinishFenceAPPLE"); - glad_glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)load("glTestObjectAPPLE"); - glad_glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)load("glFinishObjectAPPLE"); -} -static void load_GL_OES_byte_coordinates(GLADloadproc load) { - if(!GLAD_GL_OES_byte_coordinates) return; - glad_glMultiTexCoord1bOES = (PFNGLMULTITEXCOORD1BOESPROC)load("glMultiTexCoord1bOES"); - glad_glMultiTexCoord1bvOES = (PFNGLMULTITEXCOORD1BVOESPROC)load("glMultiTexCoord1bvOES"); - glad_glMultiTexCoord2bOES = (PFNGLMULTITEXCOORD2BOESPROC)load("glMultiTexCoord2bOES"); - glad_glMultiTexCoord2bvOES = (PFNGLMULTITEXCOORD2BVOESPROC)load("glMultiTexCoord2bvOES"); - glad_glMultiTexCoord3bOES = (PFNGLMULTITEXCOORD3BOESPROC)load("glMultiTexCoord3bOES"); - glad_glMultiTexCoord3bvOES = (PFNGLMULTITEXCOORD3BVOESPROC)load("glMultiTexCoord3bvOES"); - glad_glMultiTexCoord4bOES = (PFNGLMULTITEXCOORD4BOESPROC)load("glMultiTexCoord4bOES"); - glad_glMultiTexCoord4bvOES = (PFNGLMULTITEXCOORD4BVOESPROC)load("glMultiTexCoord4bvOES"); - glad_glTexCoord1bOES = (PFNGLTEXCOORD1BOESPROC)load("glTexCoord1bOES"); - glad_glTexCoord1bvOES = (PFNGLTEXCOORD1BVOESPROC)load("glTexCoord1bvOES"); - glad_glTexCoord2bOES = (PFNGLTEXCOORD2BOESPROC)load("glTexCoord2bOES"); - glad_glTexCoord2bvOES = (PFNGLTEXCOORD2BVOESPROC)load("glTexCoord2bvOES"); - glad_glTexCoord3bOES = (PFNGLTEXCOORD3BOESPROC)load("glTexCoord3bOES"); - glad_glTexCoord3bvOES = (PFNGLTEXCOORD3BVOESPROC)load("glTexCoord3bvOES"); - glad_glTexCoord4bOES = (PFNGLTEXCOORD4BOESPROC)load("glTexCoord4bOES"); - glad_glTexCoord4bvOES = (PFNGLTEXCOORD4BVOESPROC)load("glTexCoord4bvOES"); - glad_glVertex2bOES = (PFNGLVERTEX2BOESPROC)load("glVertex2bOES"); - glad_glVertex2bvOES = (PFNGLVERTEX2BVOESPROC)load("glVertex2bvOES"); - glad_glVertex3bOES = (PFNGLVERTEX3BOESPROC)load("glVertex3bOES"); - glad_glVertex3bvOES = (PFNGLVERTEX3BVOESPROC)load("glVertex3bvOES"); - glad_glVertex4bOES = (PFNGLVERTEX4BOESPROC)load("glVertex4bOES"); - glad_glVertex4bvOES = (PFNGLVERTEX4BVOESPROC)load("glVertex4bvOES"); -} -static void load_GL_ARB_transpose_matrix(GLADloadproc load) { - if(!GLAD_GL_ARB_transpose_matrix) return; - glad_glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)load("glLoadTransposeMatrixfARB"); - glad_glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)load("glLoadTransposeMatrixdARB"); - glad_glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)load("glMultTransposeMatrixfARB"); - glad_glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)load("glMultTransposeMatrixdARB"); -} -static void load_GL_ARB_provoking_vertex(GLADloadproc load) { - if(!GLAD_GL_ARB_provoking_vertex) return; - glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); -} -static void load_GL_EXT_fog_coord(GLADloadproc load) { - if(!GLAD_GL_EXT_fog_coord) return; - glad_glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)load("glFogCoordfEXT"); - glad_glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)load("glFogCoordfvEXT"); - glad_glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)load("glFogCoorddEXT"); - glad_glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)load("glFogCoorddvEXT"); - glad_glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)load("glFogCoordPointerEXT"); -} -static void load_GL_EXT_vertex_array(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_array) return; - glad_glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)load("glArrayElementEXT"); - glad_glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)load("glColorPointerEXT"); - glad_glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)load("glDrawArraysEXT"); - glad_glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)load("glEdgeFlagPointerEXT"); - glad_glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)load("glGetPointervEXT"); - glad_glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)load("glIndexPointerEXT"); - glad_glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)load("glNormalPointerEXT"); - glad_glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)load("glTexCoordPointerEXT"); - glad_glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)load("glVertexPointerEXT"); -} -static void load_GL_EXT_blend_equation_separate(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_equation_separate) return; - glad_glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)load("glBlendEquationSeparateEXT"); -} -static void load_GL_NV_framebuffer_mixed_samples(GLADloadproc load) { - if(!GLAD_GL_NV_framebuffer_mixed_samples) return; - glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); - glad_glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)load("glCoverageModulationTableNV"); - glad_glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)load("glGetCoverageModulationTableNV"); - glad_glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)load("glCoverageModulationNV"); -} -static void load_GL_NVX_conditional_render(GLADloadproc load) { - if(!GLAD_GL_NVX_conditional_render) return; - glad_glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)load("glBeginConditionalRenderNVX"); - glad_glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)load("glEndConditionalRenderNVX"); -} -static void load_GL_ARB_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_ARB_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)load("glMultiDrawArraysIndirect"); - glad_glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)load("glMultiDrawElementsIndirect"); -} -static void load_GL_EXT_raster_multisample(GLADloadproc load) { - if(!GLAD_GL_EXT_raster_multisample) return; - glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); -} -static void load_GL_NV_copy_image(GLADloadproc load) { - if(!GLAD_GL_NV_copy_image) return; - glad_glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)load("glCopyImageSubDataNV"); -} -static void load_GL_INTEL_framebuffer_CMAA(GLADloadproc load) { - if(!GLAD_GL_INTEL_framebuffer_CMAA) return; - glad_glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)load("glApplyFramebufferAttachmentCMAAINTEL"); -} -static void load_GL_ARB_transform_feedback2(GLADloadproc load) { - if(!GLAD_GL_ARB_transform_feedback2) return; - glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); - glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); - glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); - glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); - glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); - glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); - glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); -} -static void load_GL_ARB_transform_feedback3(GLADloadproc load) { - if(!GLAD_GL_ARB_transform_feedback3) return; - glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); - glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); - glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); - glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); -} -static void load_GL_EXT_debug_marker(GLADloadproc load) { - if(!GLAD_GL_EXT_debug_marker) return; - glad_glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)load("glInsertEventMarkerEXT"); - glad_glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)load("glPushGroupMarkerEXT"); - glad_glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)load("glPopGroupMarkerEXT"); -} -static void load_GL_EXT_pixel_transform(GLADloadproc load) { - if(!GLAD_GL_EXT_pixel_transform) return; - glad_glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)load("glPixelTransformParameteriEXT"); - glad_glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)load("glPixelTransformParameterfEXT"); - glad_glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)load("glPixelTransformParameterivEXT"); - glad_glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)load("glPixelTransformParameterfvEXT"); - glad_glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)load("glGetPixelTransformParameterivEXT"); - glad_glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)load("glGetPixelTransformParameterfvEXT"); -} -static void load_GL_ATI_fragment_shader(GLADloadproc load) { - if(!GLAD_GL_ATI_fragment_shader) return; - glad_glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)load("glGenFragmentShadersATI"); - glad_glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)load("glBindFragmentShaderATI"); - glad_glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)load("glDeleteFragmentShaderATI"); - glad_glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)load("glBeginFragmentShaderATI"); - glad_glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)load("glEndFragmentShaderATI"); - glad_glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)load("glPassTexCoordATI"); - glad_glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)load("glSampleMapATI"); - glad_glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)load("glColorFragmentOp1ATI"); - glad_glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)load("glColorFragmentOp2ATI"); - glad_glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)load("glColorFragmentOp3ATI"); - glad_glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)load("glAlphaFragmentOp1ATI"); - glad_glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)load("glAlphaFragmentOp2ATI"); - glad_glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)load("glAlphaFragmentOp3ATI"); - glad_glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)load("glSetFragmentShaderConstantATI"); -} -static void load_GL_ARB_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_array_object) return; - glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); - glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); - glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); - glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); -} -static void load_GL_SUN_triangle_list(GLADloadproc load) { - if(!GLAD_GL_SUN_triangle_list) return; - glad_glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)load("glReplacementCodeuiSUN"); - glad_glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)load("glReplacementCodeusSUN"); - glad_glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)load("glReplacementCodeubSUN"); - glad_glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)load("glReplacementCodeuivSUN"); - glad_glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)load("glReplacementCodeusvSUN"); - glad_glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)load("glReplacementCodeubvSUN"); - glad_glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)load("glReplacementCodePointerSUN"); -} -static void load_GL_ARB_transform_feedback_instanced(GLADloadproc load) { - if(!GLAD_GL_ARB_transform_feedback_instanced) return; - glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); - glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); -} -static void load_GL_SGIX_async(GLADloadproc load) { - if(!GLAD_GL_SGIX_async) return; - glad_glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)load("glAsyncMarkerSGIX"); - glad_glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)load("glFinishAsyncSGIX"); - glad_glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)load("glPollAsyncSGIX"); - glad_glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)load("glGenAsyncMarkersSGIX"); - glad_glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)load("glDeleteAsyncMarkersSGIX"); - glad_glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)load("glIsAsyncMarkerSGIX"); -} -static void load_GL_INTEL_performance_query(GLADloadproc load) { - if(!GLAD_GL_INTEL_performance_query) return; - glad_glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)load("glBeginPerfQueryINTEL"); - glad_glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)load("glCreatePerfQueryINTEL"); - glad_glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)load("glDeletePerfQueryINTEL"); - glad_glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)load("glEndPerfQueryINTEL"); - glad_glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)load("glGetFirstPerfQueryIdINTEL"); - glad_glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)load("glGetNextPerfQueryIdINTEL"); - glad_glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)load("glGetPerfCounterInfoINTEL"); - glad_glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)load("glGetPerfQueryDataINTEL"); - glad_glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)load("glGetPerfQueryIdByNameINTEL"); - glad_glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)load("glGetPerfQueryInfoINTEL"); -} -static void load_GL_NV_gpu_shader5(GLADloadproc load) { - if(!GLAD_GL_NV_gpu_shader5) return; - glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); - glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); - glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); - glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); - glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); - glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); - glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); - glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); - glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); - glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); - glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); - glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); - glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); - glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); - glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); - glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); - glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); - glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); - glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); - glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); - glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); - glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); - glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); - glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); - glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); - glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); - glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); - glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); - glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); - glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); - glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); - glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); - glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); -} -static void load_GL_NV_bindless_multi_draw_indirect_count(GLADloadproc load) { - if(!GLAD_GL_NV_bindless_multi_draw_indirect_count) return; - glad_glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawArraysIndirectBindlessCountNV"); - glad_glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawElementsIndirectBindlessCountNV"); -} -static void load_GL_ARB_ES2_compatibility(GLADloadproc load) { - if(!GLAD_GL_ARB_ES2_compatibility) return; - glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); - glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); - glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); - glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); - glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); -} -static void load_GL_ARB_indirect_parameters(GLADloadproc load) { - if(!GLAD_GL_ARB_indirect_parameters) return; - glad_glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)load("glMultiDrawArraysIndirectCountARB"); - glad_glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)load("glMultiDrawElementsIndirectCountARB"); -} -static void load_GL_NV_half_float(GLADloadproc load) { - if(!GLAD_GL_NV_half_float) return; - glad_glVertex2hNV = (PFNGLVERTEX2HNVPROC)load("glVertex2hNV"); - glad_glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)load("glVertex2hvNV"); - glad_glVertex3hNV = (PFNGLVERTEX3HNVPROC)load("glVertex3hNV"); - glad_glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)load("glVertex3hvNV"); - glad_glVertex4hNV = (PFNGLVERTEX4HNVPROC)load("glVertex4hNV"); - glad_glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)load("glVertex4hvNV"); - glad_glNormal3hNV = (PFNGLNORMAL3HNVPROC)load("glNormal3hNV"); - glad_glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)load("glNormal3hvNV"); - glad_glColor3hNV = (PFNGLCOLOR3HNVPROC)load("glColor3hNV"); - glad_glColor3hvNV = (PFNGLCOLOR3HVNVPROC)load("glColor3hvNV"); - glad_glColor4hNV = (PFNGLCOLOR4HNVPROC)load("glColor4hNV"); - glad_glColor4hvNV = (PFNGLCOLOR4HVNVPROC)load("glColor4hvNV"); - glad_glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)load("glTexCoord1hNV"); - glad_glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)load("glTexCoord1hvNV"); - glad_glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)load("glTexCoord2hNV"); - glad_glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)load("glTexCoord2hvNV"); - glad_glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)load("glTexCoord3hNV"); - glad_glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)load("glTexCoord3hvNV"); - glad_glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)load("glTexCoord4hNV"); - glad_glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)load("glTexCoord4hvNV"); - glad_glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)load("glMultiTexCoord1hNV"); - glad_glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)load("glMultiTexCoord1hvNV"); - glad_glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)load("glMultiTexCoord2hNV"); - glad_glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)load("glMultiTexCoord2hvNV"); - glad_glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)load("glMultiTexCoord3hNV"); - glad_glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)load("glMultiTexCoord3hvNV"); - glad_glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)load("glMultiTexCoord4hNV"); - glad_glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)load("glMultiTexCoord4hvNV"); - glad_glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)load("glFogCoordhNV"); - glad_glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)load("glFogCoordhvNV"); - glad_glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)load("glSecondaryColor3hNV"); - glad_glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)load("glSecondaryColor3hvNV"); - glad_glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)load("glVertexWeighthNV"); - glad_glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)load("glVertexWeighthvNV"); - glad_glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)load("glVertexAttrib1hNV"); - glad_glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)load("glVertexAttrib1hvNV"); - glad_glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)load("glVertexAttrib2hNV"); - glad_glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)load("glVertexAttrib2hvNV"); - glad_glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)load("glVertexAttrib3hNV"); - glad_glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)load("glVertexAttrib3hvNV"); - glad_glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)load("glVertexAttrib4hNV"); - glad_glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)load("glVertexAttrib4hvNV"); - glad_glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)load("glVertexAttribs1hvNV"); - glad_glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)load("glVertexAttribs2hvNV"); - glad_glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)load("glVertexAttribs3hvNV"); - glad_glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)load("glVertexAttribs4hvNV"); -} -static void load_GL_ARB_ES3_2_compatibility(GLADloadproc load) { - if(!GLAD_GL_ARB_ES3_2_compatibility) return; - glad_glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)load("glPrimitiveBoundingBoxARB"); -} -static void load_GL_EXT_polygon_offset_clamp(GLADloadproc load) { - if(!GLAD_GL_EXT_polygon_offset_clamp) return; - glad_glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)load("glPolygonOffsetClampEXT"); -} -static void load_GL_EXT_compiled_vertex_array(GLADloadproc load) { - if(!GLAD_GL_EXT_compiled_vertex_array) return; - glad_glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)load("glLockArraysEXT"); - glad_glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)load("glUnlockArraysEXT"); -} -static void load_GL_NV_depth_buffer_float(GLADloadproc load) { - if(!GLAD_GL_NV_depth_buffer_float) return; - glad_glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)load("glDepthRangedNV"); - glad_glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)load("glClearDepthdNV"); - glad_glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)load("glDepthBoundsdNV"); -} -static void load_GL_NV_occlusion_query(GLADloadproc load) { - if(!GLAD_GL_NV_occlusion_query) return; - glad_glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)load("glGenOcclusionQueriesNV"); - glad_glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)load("glDeleteOcclusionQueriesNV"); - glad_glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)load("glIsOcclusionQueryNV"); - glad_glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)load("glBeginOcclusionQueryNV"); - glad_glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)load("glEndOcclusionQueryNV"); - glad_glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)load("glGetOcclusionQueryivNV"); - glad_glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)load("glGetOcclusionQueryuivNV"); -} -static void load_GL_APPLE_flush_buffer_range(GLADloadproc load) { - if(!GLAD_GL_APPLE_flush_buffer_range) return; - glad_glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)load("glBufferParameteriAPPLE"); - glad_glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)load("glFlushMappedBufferRangeAPPLE"); -} -static void load_GL_ARB_imaging(GLADloadproc load) { - if(!GLAD_GL_ARB_imaging) return; - glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); - glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); - glad_glColorTable = (PFNGLCOLORTABLEPROC)load("glColorTable"); - glad_glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)load("glColorTableParameterfv"); - glad_glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)load("glColorTableParameteriv"); - glad_glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)load("glCopyColorTable"); - glad_glGetColorTable = (PFNGLGETCOLORTABLEPROC)load("glGetColorTable"); - glad_glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)load("glGetColorTableParameterfv"); - glad_glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)load("glGetColorTableParameteriv"); - glad_glColorSubTable = (PFNGLCOLORSUBTABLEPROC)load("glColorSubTable"); - glad_glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)load("glCopyColorSubTable"); - glad_glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)load("glConvolutionFilter1D"); - glad_glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)load("glConvolutionFilter2D"); - glad_glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)load("glConvolutionParameterf"); - glad_glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)load("glConvolutionParameterfv"); - glad_glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)load("glConvolutionParameteri"); - glad_glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)load("glConvolutionParameteriv"); - glad_glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)load("glCopyConvolutionFilter1D"); - glad_glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)load("glCopyConvolutionFilter2D"); - glad_glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)load("glGetConvolutionFilter"); - glad_glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)load("glGetConvolutionParameterfv"); - glad_glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)load("glGetConvolutionParameteriv"); - glad_glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)load("glGetSeparableFilter"); - glad_glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)load("glSeparableFilter2D"); - glad_glGetHistogram = (PFNGLGETHISTOGRAMPROC)load("glGetHistogram"); - glad_glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)load("glGetHistogramParameterfv"); - glad_glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)load("glGetHistogramParameteriv"); - glad_glGetMinmax = (PFNGLGETMINMAXPROC)load("glGetMinmax"); - glad_glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)load("glGetMinmaxParameterfv"); - glad_glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)load("glGetMinmaxParameteriv"); - glad_glHistogram = (PFNGLHISTOGRAMPROC)load("glHistogram"); - glad_glMinmax = (PFNGLMINMAXPROC)load("glMinmax"); - glad_glResetHistogram = (PFNGLRESETHISTOGRAMPROC)load("glResetHistogram"); - glad_glResetMinmax = (PFNGLRESETMINMAXPROC)load("glResetMinmax"); -} -static void load_GL_ARB_draw_buffers_blend(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_buffers_blend) return; - glad_glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)load("glBlendEquationiARB"); - glad_glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)load("glBlendEquationSeparateiARB"); - glad_glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)load("glBlendFunciARB"); - glad_glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)load("glBlendFuncSeparateiARB"); -} -static void load_GL_ARB_clear_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_clear_buffer_object) return; - glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); - glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); -} -static void load_GL_ARB_multisample(GLADloadproc load) { - if(!GLAD_GL_ARB_multisample) return; - glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)load("glSampleCoverageARB"); -} -static void load_GL_EXT_debug_label(GLADloadproc load) { - if(!GLAD_GL_EXT_debug_label) return; - glad_glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)load("glLabelObjectEXT"); - glad_glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)load("glGetObjectLabelEXT"); -} -static void load_GL_ARB_sample_shading(GLADloadproc load) { - if(!GLAD_GL_ARB_sample_shading) return; - glad_glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)load("glMinSampleShadingARB"); -} -static void load_GL_NV_internalformat_sample_query(GLADloadproc load) { - if(!GLAD_GL_NV_internalformat_sample_query) return; - glad_glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)load("glGetInternalformatSampleivNV"); -} -static void load_GL_INTEL_map_texture(GLADloadproc load) { - if(!GLAD_GL_INTEL_map_texture) return; - glad_glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)load("glSyncTextureINTEL"); - glad_glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)load("glUnmapTexture2DINTEL"); - glad_glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)load("glMapTexture2DINTEL"); -} -static void load_GL_ARB_compute_shader(GLADloadproc load) { - if(!GLAD_GL_ARB_compute_shader) return; - glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); - glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); -} -static void load_GL_IBM_vertex_array_lists(GLADloadproc load) { - if(!GLAD_GL_IBM_vertex_array_lists) return; - glad_glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)load("glColorPointerListIBM"); - glad_glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)load("glSecondaryColorPointerListIBM"); - glad_glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)load("glEdgeFlagPointerListIBM"); - glad_glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)load("glFogCoordPointerListIBM"); - glad_glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)load("glIndexPointerListIBM"); - glad_glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)load("glNormalPointerListIBM"); - glad_glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)load("glTexCoordPointerListIBM"); - glad_glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)load("glVertexPointerListIBM"); -} -static void load_GL_ARB_color_buffer_float(GLADloadproc load) { - if(!GLAD_GL_ARB_color_buffer_float) return; - glad_glClampColorARB = (PFNGLCLAMPCOLORARBPROC)load("glClampColorARB"); -} -static void load_GL_ARB_bindless_texture(GLADloadproc load) { - if(!GLAD_GL_ARB_bindless_texture) return; - glad_glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)load("glGetTextureHandleARB"); - glad_glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)load("glGetTextureSamplerHandleARB"); - glad_glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)load("glMakeTextureHandleResidentARB"); - glad_glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)load("glMakeTextureHandleNonResidentARB"); - glad_glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)load("glGetImageHandleARB"); - glad_glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)load("glMakeImageHandleResidentARB"); - glad_glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)load("glMakeImageHandleNonResidentARB"); - glad_glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)load("glUniformHandleui64ARB"); - glad_glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)load("glUniformHandleui64vARB"); - glad_glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)load("glProgramUniformHandleui64ARB"); - glad_glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)load("glProgramUniformHandleui64vARB"); - glad_glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)load("glIsTextureHandleResidentARB"); - glad_glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)load("glIsImageHandleResidentARB"); - glad_glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)load("glVertexAttribL1ui64ARB"); - glad_glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)load("glVertexAttribL1ui64vARB"); - glad_glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)load("glGetVertexAttribLui64vARB"); -} -static void load_GL_ARB_window_pos(GLADloadproc load) { - if(!GLAD_GL_ARB_window_pos) return; - glad_glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)load("glWindowPos2dARB"); - glad_glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)load("glWindowPos2dvARB"); - glad_glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)load("glWindowPos2fARB"); - glad_glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)load("glWindowPos2fvARB"); - glad_glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)load("glWindowPos2iARB"); - glad_glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)load("glWindowPos2ivARB"); - glad_glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)load("glWindowPos2sARB"); - glad_glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)load("glWindowPos2svARB"); - glad_glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)load("glWindowPos3dARB"); - glad_glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)load("glWindowPos3dvARB"); - glad_glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)load("glWindowPos3fARB"); - glad_glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)load("glWindowPos3fvARB"); - glad_glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)load("glWindowPos3iARB"); - glad_glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)load("glWindowPos3ivARB"); - glad_glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)load("glWindowPos3sARB"); - glad_glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)load("glWindowPos3svARB"); -} -static void load_GL_ARB_internalformat_query(GLADloadproc load) { - if(!GLAD_GL_ARB_internalformat_query) return; - glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); -} -static void load_GL_EXT_shader_image_load_store(GLADloadproc load) { - if(!GLAD_GL_EXT_shader_image_load_store) return; - glad_glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)load("glBindImageTextureEXT"); - glad_glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)load("glMemoryBarrierEXT"); -} -static void load_GL_EXT_copy_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_copy_texture) return; - glad_glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)load("glCopyTexImage1DEXT"); - glad_glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)load("glCopyTexImage2DEXT"); - glad_glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)load("glCopyTexSubImage1DEXT"); - glad_glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)load("glCopyTexSubImage2DEXT"); - glad_glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)load("glCopyTexSubImage3DEXT"); -} -static void load_GL_NV_register_combiners2(GLADloadproc load) { - if(!GLAD_GL_NV_register_combiners2) return; - glad_glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)load("glCombinerStageParameterfvNV"); - glad_glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)load("glGetCombinerStageParameterfvNV"); -} -static void load_GL_NV_draw_texture(GLADloadproc load) { - if(!GLAD_GL_NV_draw_texture) return; - glad_glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)load("glDrawTextureNV"); -} -static void load_GL_EXT_draw_instanced(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_instanced) return; - glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); - glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); -} -static void load_GL_ARB_viewport_array(GLADloadproc load) { - if(!GLAD_GL_ARB_viewport_array) return; - glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); - glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); - glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); - glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); - glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); - glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); - glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); - glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); - glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); - glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); -} -static void load_GL_ARB_separate_shader_objects(GLADloadproc load) { - if(!GLAD_GL_ARB_separate_shader_objects) return; - glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); - glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); - glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); - glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); - glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); - glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); - glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); - glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); - glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); - glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); - glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); - glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); - glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); - glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); - glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); - glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); - glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); - glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); - glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); - glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); - glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); - glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); - glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); - glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); - glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); - glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); - glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); - glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); - glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); - glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); - glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); - glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); - glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); - glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); - glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); - glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); - glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); - glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); - glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); - glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); - glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); - glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); - glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); - glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); - glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); - glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); - glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); - glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); - glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); - glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); - glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); - glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); - glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); - glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); - glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); - glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); - glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); - glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); - glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); - glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); -} -static void load_GL_EXT_depth_bounds_test(GLADloadproc load) { - if(!GLAD_GL_EXT_depth_bounds_test) return; - glad_glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)load("glDepthBoundsEXT"); -} -static void load_GL_NV_video_capture(GLADloadproc load) { - if(!GLAD_GL_NV_video_capture) return; - glad_glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)load("glBeginVideoCaptureNV"); - glad_glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)load("glBindVideoCaptureStreamBufferNV"); - glad_glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)load("glBindVideoCaptureStreamTextureNV"); - glad_glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)load("glEndVideoCaptureNV"); - glad_glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)load("glGetVideoCaptureivNV"); - glad_glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)load("glGetVideoCaptureStreamivNV"); - glad_glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)load("glGetVideoCaptureStreamfvNV"); - glad_glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)load("glGetVideoCaptureStreamdvNV"); - glad_glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)load("glVideoCaptureNV"); - glad_glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)load("glVideoCaptureStreamParameterivNV"); - glad_glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)load("glVideoCaptureStreamParameterfvNV"); - glad_glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)load("glVideoCaptureStreamParameterdvNV"); -} -static void load_GL_ARB_sampler_objects(GLADloadproc load) { - if(!GLAD_GL_ARB_sampler_objects) return; - glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); - glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); - glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); - glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); - glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); - glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); - glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); - glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); - glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); - glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); - glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); - glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); - glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); - glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); -} -static void load_GL_ARB_matrix_palette(GLADloadproc load) { - if(!GLAD_GL_ARB_matrix_palette) return; - glad_glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)load("glCurrentPaletteMatrixARB"); - glad_glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)load("glMatrixIndexubvARB"); - glad_glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)load("glMatrixIndexusvARB"); - glad_glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)load("glMatrixIndexuivARB"); - glad_glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)load("glMatrixIndexPointerARB"); -} -static void load_GL_SGIS_texture_color_mask(GLADloadproc load) { - if(!GLAD_GL_SGIS_texture_color_mask) return; - glad_glTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC)load("glTextureColorMaskSGIS"); -} -static void load_GL_EXT_coordinate_frame(GLADloadproc load) { - if(!GLAD_GL_EXT_coordinate_frame) return; - glad_glTangent3bEXT = (PFNGLTANGENT3BEXTPROC)load("glTangent3bEXT"); - glad_glTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC)load("glTangent3bvEXT"); - glad_glTangent3dEXT = (PFNGLTANGENT3DEXTPROC)load("glTangent3dEXT"); - glad_glTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC)load("glTangent3dvEXT"); - glad_glTangent3fEXT = (PFNGLTANGENT3FEXTPROC)load("glTangent3fEXT"); - glad_glTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC)load("glTangent3fvEXT"); - glad_glTangent3iEXT = (PFNGLTANGENT3IEXTPROC)load("glTangent3iEXT"); - glad_glTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC)load("glTangent3ivEXT"); - glad_glTangent3sEXT = (PFNGLTANGENT3SEXTPROC)load("glTangent3sEXT"); - glad_glTangent3svEXT = (PFNGLTANGENT3SVEXTPROC)load("glTangent3svEXT"); - glad_glBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC)load("glBinormal3bEXT"); - glad_glBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC)load("glBinormal3bvEXT"); - glad_glBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC)load("glBinormal3dEXT"); - glad_glBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC)load("glBinormal3dvEXT"); - glad_glBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC)load("glBinormal3fEXT"); - glad_glBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC)load("glBinormal3fvEXT"); - glad_glBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC)load("glBinormal3iEXT"); - glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC)load("glBinormal3ivEXT"); - glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC)load("glBinormal3sEXT"); - glad_glBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC)load("glBinormal3svEXT"); - glad_glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)load("glTangentPointerEXT"); - glad_glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)load("glBinormalPointerEXT"); -} -static void load_GL_ARB_texture_compression(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_compression) return; - glad_glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)load("glCompressedTexImage3DARB"); - glad_glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)load("glCompressedTexImage2DARB"); - glad_glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)load("glCompressedTexImage1DARB"); - glad_glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)load("glCompressedTexSubImage3DARB"); - glad_glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)load("glCompressedTexSubImage2DARB"); - glad_glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)load("glCompressedTexSubImage1DARB"); - glad_glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)load("glGetCompressedTexImageARB"); -} -static void load_GL_ARB_shader_subroutine(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_subroutine) return; - glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); - glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); - glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); - glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); - glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); - glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); - glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); - glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); -} -static void load_GL_ARB_texture_storage_multisample(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_storage_multisample) return; - glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); - glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); -} -static void load_GL_EXT_vertex_attrib_64bit(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_attrib_64bit) return; - glad_glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)load("glVertexAttribL1dEXT"); - glad_glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)load("glVertexAttribL2dEXT"); - glad_glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)load("glVertexAttribL3dEXT"); - glad_glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)load("glVertexAttribL4dEXT"); - glad_glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)load("glVertexAttribL1dvEXT"); - glad_glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)load("glVertexAttribL2dvEXT"); - glad_glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)load("glVertexAttribL3dvEXT"); - glad_glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)load("glVertexAttribL4dvEXT"); - glad_glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)load("glVertexAttribLPointerEXT"); - glad_glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)load("glGetVertexAttribLdvEXT"); -} -static void load_GL_OES_query_matrix(GLADloadproc load) { - if(!GLAD_GL_OES_query_matrix) return; - glad_glQueryMatrixxOES = (PFNGLQUERYMATRIXXOESPROC)load("glQueryMatrixxOES"); -} -static void load_GL_MESA_window_pos(GLADloadproc load) { - if(!GLAD_GL_MESA_window_pos) return; - glad_glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)load("glWindowPos2dMESA"); - glad_glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)load("glWindowPos2dvMESA"); - glad_glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)load("glWindowPos2fMESA"); - glad_glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)load("glWindowPos2fvMESA"); - glad_glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)load("glWindowPos2iMESA"); - glad_glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)load("glWindowPos2ivMESA"); - glad_glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)load("glWindowPos2sMESA"); - glad_glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)load("glWindowPos2svMESA"); - glad_glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)load("glWindowPos3dMESA"); - glad_glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)load("glWindowPos3dvMESA"); - glad_glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)load("glWindowPos3fMESA"); - glad_glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)load("glWindowPos3fvMESA"); - glad_glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)load("glWindowPos3iMESA"); - glad_glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)load("glWindowPos3ivMESA"); - glad_glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)load("glWindowPos3sMESA"); - glad_glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)load("glWindowPos3svMESA"); - glad_glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)load("glWindowPos4dMESA"); - glad_glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)load("glWindowPos4dvMESA"); - glad_glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)load("glWindowPos4fMESA"); - glad_glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)load("glWindowPos4fvMESA"); - glad_glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)load("glWindowPos4iMESA"); - glad_glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)load("glWindowPos4ivMESA"); - glad_glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)load("glWindowPos4sMESA"); - glad_glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)load("glWindowPos4svMESA"); -} -static void load_GL_ARB_copy_buffer(GLADloadproc load) { - if(!GLAD_GL_ARB_copy_buffer) return; - glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); -} -static void load_GL_APPLE_object_purgeable(GLADloadproc load) { - if(!GLAD_GL_APPLE_object_purgeable) return; - glad_glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)load("glObjectPurgeableAPPLE"); - glad_glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)load("glObjectUnpurgeableAPPLE"); - glad_glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)load("glGetObjectParameterivAPPLE"); -} -static void load_GL_ARB_occlusion_query(GLADloadproc load) { - if(!GLAD_GL_ARB_occlusion_query) return; - glad_glGenQueriesARB = (PFNGLGENQUERIESARBPROC)load("glGenQueriesARB"); - glad_glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)load("glDeleteQueriesARB"); - glad_glIsQueryARB = (PFNGLISQUERYARBPROC)load("glIsQueryARB"); - glad_glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)load("glBeginQueryARB"); - glad_glEndQueryARB = (PFNGLENDQUERYARBPROC)load("glEndQueryARB"); - glad_glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)load("glGetQueryivARB"); - glad_glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)load("glGetQueryObjectivARB"); - glad_glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)load("glGetQueryObjectuivARB"); -} -static void load_GL_SGI_color_table(GLADloadproc load) { - if(!GLAD_GL_SGI_color_table) return; - glad_glColorTableSGI = (PFNGLCOLORTABLESGIPROC)load("glColorTableSGI"); - glad_glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)load("glColorTableParameterfvSGI"); - glad_glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)load("glColorTableParameterivSGI"); - glad_glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)load("glCopyColorTableSGI"); - glad_glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)load("glGetColorTableSGI"); - glad_glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)load("glGetColorTableParameterfvSGI"); - glad_glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)load("glGetColorTableParameterivSGI"); -} -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"); -} -static void load_GL_NV_geometry_program4(GLADloadproc load) { - if(!GLAD_GL_NV_geometry_program4) return; - glad_glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)load("glProgramVertexLimitNV"); - glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); - glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); - glad_glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)load("glFramebufferTextureFaceEXT"); -} -static void load_GL_AMD_debug_output(GLADloadproc load) { - if(!GLAD_GL_AMD_debug_output) return; - glad_glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)load("glDebugMessageEnableAMD"); - glad_glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)load("glDebugMessageInsertAMD"); - glad_glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)load("glDebugMessageCallbackAMD"); - glad_glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)load("glGetDebugMessageLogAMD"); -} -static void load_GL_ARB_multitexture(GLADloadproc load) { - if(!GLAD_GL_ARB_multitexture) return; - glad_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)load("glActiveTextureARB"); - glad_glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)load("glClientActiveTextureARB"); - glad_glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)load("glMultiTexCoord1dARB"); - glad_glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)load("glMultiTexCoord1dvARB"); - glad_glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)load("glMultiTexCoord1fARB"); - glad_glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)load("glMultiTexCoord1fvARB"); - glad_glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)load("glMultiTexCoord1iARB"); - glad_glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)load("glMultiTexCoord1ivARB"); - glad_glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)load("glMultiTexCoord1sARB"); - glad_glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)load("glMultiTexCoord1svARB"); - glad_glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)load("glMultiTexCoord2dARB"); - glad_glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)load("glMultiTexCoord2dvARB"); - glad_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)load("glMultiTexCoord2fARB"); - glad_glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)load("glMultiTexCoord2fvARB"); - glad_glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)load("glMultiTexCoord2iARB"); - glad_glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)load("glMultiTexCoord2ivARB"); - glad_glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)load("glMultiTexCoord2sARB"); - glad_glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)load("glMultiTexCoord2svARB"); - glad_glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)load("glMultiTexCoord3dARB"); - glad_glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)load("glMultiTexCoord3dvARB"); - glad_glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)load("glMultiTexCoord3fARB"); - glad_glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)load("glMultiTexCoord3fvARB"); - glad_glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)load("glMultiTexCoord3iARB"); - glad_glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)load("glMultiTexCoord3ivARB"); - glad_glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)load("glMultiTexCoord3sARB"); - glad_glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)load("glMultiTexCoord3svARB"); - glad_glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)load("glMultiTexCoord4dARB"); - glad_glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)load("glMultiTexCoord4dvARB"); - glad_glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)load("glMultiTexCoord4fARB"); - glad_glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)load("glMultiTexCoord4fvARB"); - glad_glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)load("glMultiTexCoord4iARB"); - glad_glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)load("glMultiTexCoord4ivARB"); - glad_glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)load("glMultiTexCoord4sARB"); - glad_glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)load("glMultiTexCoord4svARB"); -} -static void load_GL_SGIX_polynomial_ffd(GLADloadproc load) { - if(!GLAD_GL_SGIX_polynomial_ffd) return; - glad_glDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC)load("glDeformationMap3dSGIX"); - glad_glDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC)load("glDeformationMap3fSGIX"); - glad_glDeformSGIX = (PFNGLDEFORMSGIXPROC)load("glDeformSGIX"); - glad_glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)load("glLoadIdentityDeformationMapSGIX"); -} -static void load_GL_EXT_provoking_vertex(GLADloadproc load) { - if(!GLAD_GL_EXT_provoking_vertex) return; - glad_glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)load("glProvokingVertexEXT"); -} -static void load_GL_ARB_point_parameters(GLADloadproc load) { - if(!GLAD_GL_ARB_point_parameters) return; - glad_glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)load("glPointParameterfARB"); - glad_glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)load("glPointParameterfvARB"); -} -static void load_GL_ARB_shader_image_load_store(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_image_load_store) return; - glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); - glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); -} -static void load_GL_ARB_texture_barrier(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_barrier) return; - glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); -} -static void load_GL_NV_bindless_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_NV_bindless_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)load("glMultiDrawArraysIndirectBindlessNV"); - glad_glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)load("glMultiDrawElementsIndirectBindlessNV"); -} -static void load_GL_EXT_transform_feedback(GLADloadproc load) { - if(!GLAD_GL_EXT_transform_feedback) return; - glad_glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)load("glBeginTransformFeedbackEXT"); - glad_glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)load("glEndTransformFeedbackEXT"); - glad_glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)load("glBindBufferRangeEXT"); - glad_glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)load("glBindBufferOffsetEXT"); - glad_glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)load("glBindBufferBaseEXT"); - glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)load("glTransformFeedbackVaryingsEXT"); - glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)load("glGetTransformFeedbackVaryingEXT"); -} -static void load_GL_NV_gpu_program4(GLADloadproc load) { - if(!GLAD_GL_NV_gpu_program4) return; - glad_glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)load("glProgramLocalParameterI4iNV"); - glad_glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)load("glProgramLocalParameterI4ivNV"); - glad_glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)load("glProgramLocalParametersI4ivNV"); - glad_glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)load("glProgramLocalParameterI4uiNV"); - glad_glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)load("glProgramLocalParameterI4uivNV"); - glad_glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)load("glProgramLocalParametersI4uivNV"); - glad_glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)load("glProgramEnvParameterI4iNV"); - glad_glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)load("glProgramEnvParameterI4ivNV"); - glad_glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)load("glProgramEnvParametersI4ivNV"); - glad_glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)load("glProgramEnvParameterI4uiNV"); - glad_glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)load("glProgramEnvParameterI4uivNV"); - glad_glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)load("glProgramEnvParametersI4uivNV"); - glad_glGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)load("glGetProgramLocalParameterIivNV"); - glad_glGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)load("glGetProgramLocalParameterIuivNV"); - glad_glGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)load("glGetProgramEnvParameterIivNV"); - glad_glGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)load("glGetProgramEnvParameterIuivNV"); -} -static void load_GL_NV_gpu_program5(GLADloadproc load) { - if(!GLAD_GL_NV_gpu_program5) return; - glad_glProgramSubroutineParametersuivNV = (PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)load("glProgramSubroutineParametersuivNV"); - glad_glGetProgramSubroutineParameteruivNV = (PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)load("glGetProgramSubroutineParameteruivNV"); -} -static void load_GL_ARB_geometry_shader4(GLADloadproc load) { - if(!GLAD_GL_ARB_geometry_shader4) return; - glad_glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)load("glProgramParameteriARB"); - glad_glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)load("glFramebufferTextureARB"); - glad_glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)load("glFramebufferTextureLayerARB"); - glad_glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)load("glFramebufferTextureFaceARB"); -} -static void load_GL_NV_conservative_raster(GLADloadproc load) { - if(!GLAD_GL_NV_conservative_raster) return; - glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); -} -static void load_GL_SGIX_sprite(GLADloadproc load) { - if(!GLAD_GL_SGIX_sprite) return; - glad_glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)load("glSpriteParameterfSGIX"); - glad_glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)load("glSpriteParameterfvSGIX"); - glad_glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)load("glSpriteParameteriSGIX"); - glad_glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)load("glSpriteParameterivSGIX"); -} -static void load_GL_ARB_get_program_binary(GLADloadproc load) { - if(!GLAD_GL_ARB_get_program_binary) return; - glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); - glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); - glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); -} -static void load_GL_AMD_occlusion_query_event(GLADloadproc load) { - if(!GLAD_GL_AMD_occlusion_query_event) return; - glad_glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)load("glQueryObjectParameteruiAMD"); -} -static void load_GL_SGIS_multisample(GLADloadproc load) { - if(!GLAD_GL_SGIS_multisample) return; - glad_glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)load("glSampleMaskSGIS"); - glad_glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)load("glSamplePatternSGIS"); -} -static void load_GL_EXT_framebuffer_object(GLADloadproc load) { - if(!GLAD_GL_EXT_framebuffer_object) return; - glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT"); - glad_glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)load("glBindRenderbufferEXT"); - glad_glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)load("glDeleteRenderbuffersEXT"); - glad_glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)load("glGenRenderbuffersEXT"); - glad_glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)load("glRenderbufferStorageEXT"); - glad_glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)load("glGetRenderbufferParameterivEXT"); - glad_glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)load("glIsFramebufferEXT"); - glad_glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)load("glBindFramebufferEXT"); - glad_glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)load("glDeleteFramebuffersEXT"); - glad_glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)load("glGenFramebuffersEXT"); - glad_glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)load("glCheckFramebufferStatusEXT"); - glad_glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)load("glFramebufferTexture1DEXT"); - glad_glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)load("glFramebufferTexture2DEXT"); - glad_glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)load("glFramebufferTexture3DEXT"); - glad_glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)load("glFramebufferRenderbufferEXT"); - glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT"); - glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT"); -} -static void load_GL_APPLE_vertex_array_range(GLADloadproc load) { - if(!GLAD_GL_APPLE_vertex_array_range) return; - glad_glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)load("glVertexArrayRangeAPPLE"); - glad_glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)load("glFlushVertexArrayRangeAPPLE"); - glad_glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)load("glVertexArrayParameteriAPPLE"); -} -static void load_GL_NV_register_combiners(GLADloadproc load) { - if(!GLAD_GL_NV_register_combiners) return; - glad_glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)load("glCombinerParameterfvNV"); - glad_glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)load("glCombinerParameterfNV"); - glad_glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)load("glCombinerParameterivNV"); - glad_glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)load("glCombinerParameteriNV"); - glad_glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)load("glCombinerInputNV"); - glad_glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)load("glCombinerOutputNV"); - glad_glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)load("glFinalCombinerInputNV"); - glad_glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)load("glGetCombinerInputParameterfvNV"); - glad_glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)load("glGetCombinerInputParameterivNV"); - glad_glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)load("glGetCombinerOutputParameterfvNV"); - glad_glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)load("glGetCombinerOutputParameterivNV"); - glad_glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)load("glGetFinalCombinerInputParameterfvNV"); - glad_glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)load("glGetFinalCombinerInputParameterivNV"); -} -static void load_GL_ARB_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_buffers) return; - glad_glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)load("glDrawBuffersARB"); -} -static void load_GL_ARB_clear_texture(GLADloadproc load) { - if(!GLAD_GL_ARB_clear_texture) return; - glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); - glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); -} -static void load_GL_ARB_debug_output(GLADloadproc load) { - if(!GLAD_GL_ARB_debug_output) return; - glad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load("glDebugMessageControlARB"); - glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load("glDebugMessageInsertARB"); - glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); - glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); -} -static void load_GL_EXT_cull_vertex(GLADloadproc load) { - if(!GLAD_GL_EXT_cull_vertex) return; - glad_glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)load("glCullParameterdvEXT"); - glad_glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)load("glCullParameterfvEXT"); -} -static void load_GL_IBM_multimode_draw_arrays(GLADloadproc load) { - if(!GLAD_GL_IBM_multimode_draw_arrays) return; - glad_glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)load("glMultiModeDrawArraysIBM"); - glad_glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)load("glMultiModeDrawElementsIBM"); -} -static void load_GL_APPLE_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_APPLE_vertex_array_object) return; - glad_glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)load("glBindVertexArrayAPPLE"); - glad_glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)load("glDeleteVertexArraysAPPLE"); - glad_glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)load("glGenVertexArraysAPPLE"); - glad_glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)load("glIsVertexArrayAPPLE"); -} -static void load_GL_SGIS_detail_texture(GLADloadproc load) { - if(!GLAD_GL_SGIS_detail_texture) return; - glad_glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)load("glDetailTexFuncSGIS"); - glad_glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)load("glGetDetailTexFuncSGIS"); -} -static void load_GL_ARB_draw_instanced(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_instanced) return; - glad_glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)load("glDrawArraysInstancedARB"); - glad_glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)load("glDrawElementsInstancedARB"); -} -static void load_GL_ARB_shading_language_include(GLADloadproc load) { - if(!GLAD_GL_ARB_shading_language_include) return; - glad_glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)load("glNamedStringARB"); - glad_glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)load("glDeleteNamedStringARB"); - glad_glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)load("glCompileShaderIncludeARB"); - glad_glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)load("glIsNamedStringARB"); - glad_glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)load("glGetNamedStringARB"); - glad_glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)load("glGetNamedStringivARB"); -} -static void load_GL_INGR_blend_func_separate(GLADloadproc load) { - if(!GLAD_GL_INGR_blend_func_separate) return; - glad_glBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC)load("glBlendFuncSeparateINGR"); -} -static void load_GL_NV_path_rendering(GLADloadproc load) { - if(!GLAD_GL_NV_path_rendering) return; - glad_glGenPathsNV = (PFNGLGENPATHSNVPROC)load("glGenPathsNV"); - glad_glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)load("glDeletePathsNV"); - glad_glIsPathNV = (PFNGLISPATHNVPROC)load("glIsPathNV"); - glad_glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)load("glPathCommandsNV"); - glad_glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)load("glPathCoordsNV"); - glad_glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)load("glPathSubCommandsNV"); - glad_glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)load("glPathSubCoordsNV"); - glad_glPathStringNV = (PFNGLPATHSTRINGNVPROC)load("glPathStringNV"); - glad_glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)load("glPathGlyphsNV"); - glad_glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)load("glPathGlyphRangeNV"); - glad_glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)load("glWeightPathsNV"); - glad_glCopyPathNV = (PFNGLCOPYPATHNVPROC)load("glCopyPathNV"); - glad_glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)load("glInterpolatePathsNV"); - glad_glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)load("glTransformPathNV"); - glad_glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)load("glPathParameterivNV"); - glad_glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)load("glPathParameteriNV"); - glad_glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)load("glPathParameterfvNV"); - glad_glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)load("glPathParameterfNV"); - glad_glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)load("glPathDashArrayNV"); - glad_glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)load("glPathStencilFuncNV"); - glad_glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)load("glPathStencilDepthOffsetNV"); - glad_glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)load("glStencilFillPathNV"); - glad_glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)load("glStencilStrokePathNV"); - glad_glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)load("glStencilFillPathInstancedNV"); - glad_glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)load("glStencilStrokePathInstancedNV"); - glad_glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)load("glPathCoverDepthFuncNV"); - glad_glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)load("glCoverFillPathNV"); - glad_glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)load("glCoverStrokePathNV"); - glad_glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)load("glCoverFillPathInstancedNV"); - glad_glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)load("glCoverStrokePathInstancedNV"); - glad_glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)load("glGetPathParameterivNV"); - glad_glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)load("glGetPathParameterfvNV"); - glad_glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)load("glGetPathCommandsNV"); - glad_glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)load("glGetPathCoordsNV"); - glad_glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)load("glGetPathDashArrayNV"); - glad_glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)load("glGetPathMetricsNV"); - glad_glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)load("glGetPathMetricRangeNV"); - glad_glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)load("glGetPathSpacingNV"); - glad_glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)load("glIsPointInFillPathNV"); - glad_glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)load("glIsPointInStrokePathNV"); - glad_glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)load("glGetPathLengthNV"); - glad_glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)load("glPointAlongPathNV"); - glad_glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)load("glMatrixLoad3x2fNV"); - glad_glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)load("glMatrixLoad3x3fNV"); - glad_glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)load("glMatrixLoadTranspose3x3fNV"); - glad_glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)load("glMatrixMult3x2fNV"); - glad_glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)load("glMatrixMult3x3fNV"); - glad_glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)load("glMatrixMultTranspose3x3fNV"); - glad_glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)load("glStencilThenCoverFillPathNV"); - glad_glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)load("glStencilThenCoverStrokePathNV"); - glad_glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)load("glStencilThenCoverFillPathInstancedNV"); - glad_glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)load("glStencilThenCoverStrokePathInstancedNV"); - glad_glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)load("glPathGlyphIndexRangeNV"); - glad_glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)load("glPathGlyphIndexArrayNV"); - glad_glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)load("glPathMemoryGlyphIndexArrayNV"); - glad_glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)load("glProgramPathFragmentInputGenNV"); - glad_glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)load("glGetProgramResourcefvNV"); - glad_glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)load("glPathColorGenNV"); - glad_glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)load("glPathTexGenNV"); - glad_glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)load("glPathFogGenNV"); - glad_glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)load("glGetPathColorGenivNV"); - glad_glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)load("glGetPathColorGenfvNV"); - glad_glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)load("glGetPathTexGenivNV"); - glad_glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)load("glGetPathTexGenfvNV"); -} -static void load_GL_NV_conservative_raster_dilate(GLADloadproc load) { - if(!GLAD_GL_NV_conservative_raster_dilate) return; - glad_glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)load("glConservativeRasterParameterfNV"); -} -static void load_GL_ATI_vertex_streams(GLADloadproc load) { - if(!GLAD_GL_ATI_vertex_streams) return; - glad_glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)load("glVertexStream1sATI"); - glad_glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)load("glVertexStream1svATI"); - glad_glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)load("glVertexStream1iATI"); - glad_glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)load("glVertexStream1ivATI"); - glad_glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)load("glVertexStream1fATI"); - glad_glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)load("glVertexStream1fvATI"); - glad_glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)load("glVertexStream1dATI"); - glad_glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)load("glVertexStream1dvATI"); - glad_glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)load("glVertexStream2sATI"); - glad_glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)load("glVertexStream2svATI"); - glad_glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)load("glVertexStream2iATI"); - glad_glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)load("glVertexStream2ivATI"); - glad_glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)load("glVertexStream2fATI"); - glad_glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)load("glVertexStream2fvATI"); - glad_glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)load("glVertexStream2dATI"); - glad_glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)load("glVertexStream2dvATI"); - glad_glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)load("glVertexStream3sATI"); - glad_glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)load("glVertexStream3svATI"); - glad_glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)load("glVertexStream3iATI"); - glad_glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)load("glVertexStream3ivATI"); - glad_glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)load("glVertexStream3fATI"); - glad_glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)load("glVertexStream3fvATI"); - glad_glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)load("glVertexStream3dATI"); - glad_glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)load("glVertexStream3dvATI"); - glad_glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)load("glVertexStream4sATI"); - glad_glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)load("glVertexStream4svATI"); - glad_glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)load("glVertexStream4iATI"); - glad_glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)load("glVertexStream4ivATI"); - glad_glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)load("glVertexStream4fATI"); - glad_glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)load("glVertexStream4fvATI"); - glad_glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)load("glVertexStream4dATI"); - glad_glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)load("glVertexStream4dvATI"); - glad_glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)load("glNormalStream3bATI"); - glad_glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)load("glNormalStream3bvATI"); - glad_glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)load("glNormalStream3sATI"); - glad_glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)load("glNormalStream3svATI"); - glad_glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)load("glNormalStream3iATI"); - glad_glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)load("glNormalStream3ivATI"); - glad_glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)load("glNormalStream3fATI"); - glad_glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)load("glNormalStream3fvATI"); - glad_glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)load("glNormalStream3dATI"); - glad_glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)load("glNormalStream3dvATI"); - glad_glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)load("glClientActiveVertexStreamATI"); - glad_glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)load("glVertexBlendEnviATI"); - glad_glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)load("glVertexBlendEnvfATI"); -} -static void load_GL_ARB_gpu_shader_int64(GLADloadproc load) { - if(!GLAD_GL_ARB_gpu_shader_int64) return; - glad_glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)load("glUniform1i64ARB"); - glad_glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)load("glUniform2i64ARB"); - glad_glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)load("glUniform3i64ARB"); - glad_glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)load("glUniform4i64ARB"); - glad_glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)load("glUniform1i64vARB"); - glad_glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)load("glUniform2i64vARB"); - glad_glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)load("glUniform3i64vARB"); - glad_glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)load("glUniform4i64vARB"); - glad_glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)load("glUniform1ui64ARB"); - glad_glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)load("glUniform2ui64ARB"); - glad_glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)load("glUniform3ui64ARB"); - glad_glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)load("glUniform4ui64ARB"); - glad_glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)load("glUniform1ui64vARB"); - glad_glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)load("glUniform2ui64vARB"); - glad_glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)load("glUniform3ui64vARB"); - glad_glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)load("glUniform4ui64vARB"); - glad_glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)load("glGetUniformi64vARB"); - glad_glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)load("glGetUniformui64vARB"); - glad_glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)load("glGetnUniformi64vARB"); - glad_glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)load("glGetnUniformui64vARB"); - glad_glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)load("glProgramUniform1i64ARB"); - glad_glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)load("glProgramUniform2i64ARB"); - glad_glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)load("glProgramUniform3i64ARB"); - glad_glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)load("glProgramUniform4i64ARB"); - glad_glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)load("glProgramUniform1i64vARB"); - glad_glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)load("glProgramUniform2i64vARB"); - glad_glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)load("glProgramUniform3i64vARB"); - glad_glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)load("glProgramUniform4i64vARB"); - glad_glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)load("glProgramUniform1ui64ARB"); - glad_glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)load("glProgramUniform2ui64ARB"); - glad_glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)load("glProgramUniform3ui64ARB"); - glad_glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)load("glProgramUniform4ui64ARB"); - glad_glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)load("glProgramUniform1ui64vARB"); - glad_glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)load("glProgramUniform2ui64vARB"); - glad_glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)load("glProgramUniform3ui64vARB"); - glad_glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)load("glProgramUniform4ui64vARB"); -} -static void load_GL_NV_vdpau_interop(GLADloadproc load) { - if(!GLAD_GL_NV_vdpau_interop) return; - glad_glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)load("glVDPAUInitNV"); - glad_glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)load("glVDPAUFiniNV"); - glad_glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)load("glVDPAURegisterVideoSurfaceNV"); - glad_glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)load("glVDPAURegisterOutputSurfaceNV"); - glad_glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)load("glVDPAUIsSurfaceNV"); - glad_glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)load("glVDPAUUnregisterSurfaceNV"); - glad_glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)load("glVDPAUGetSurfaceivNV"); - glad_glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)load("glVDPAUSurfaceAccessNV"); - glad_glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)load("glVDPAUMapSurfacesNV"); - glad_glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)load("glVDPAUUnmapSurfacesNV"); -} -static void load_GL_ARB_internalformat_query2(GLADloadproc load) { - if(!GLAD_GL_ARB_internalformat_query2) return; - glad_glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)load("glGetInternalformati64v"); -} -static void load_GL_SUN_vertex(GLADloadproc load) { - if(!GLAD_GL_SUN_vertex) return; - glad_glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)load("glColor4ubVertex2fSUN"); - glad_glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)load("glColor4ubVertex2fvSUN"); - glad_glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)load("glColor4ubVertex3fSUN"); - glad_glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)load("glColor4ubVertex3fvSUN"); - glad_glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)load("glColor3fVertex3fSUN"); - glad_glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)load("glColor3fVertex3fvSUN"); - glad_glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)load("glNormal3fVertex3fSUN"); - glad_glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)load("glNormal3fVertex3fvSUN"); - glad_glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glColor4fNormal3fVertex3fSUN"); - glad_glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glColor4fNormal3fVertex3fvSUN"); - glad_glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)load("glTexCoord2fVertex3fSUN"); - glad_glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)load("glTexCoord2fVertex3fvSUN"); - glad_glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)load("glTexCoord4fVertex4fSUN"); - glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)load("glTexCoord4fVertex4fvSUN"); - glad_glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)load("glTexCoord2fColor4ubVertex3fSUN"); - glad_glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)load("glTexCoord2fColor4ubVertex3fvSUN"); - glad_glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)load("glTexCoord2fColor3fVertex3fSUN"); - glad_glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)load("glTexCoord2fColor3fVertex3fvSUN"); - glad_glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fNormal3fVertex3fSUN"); - glad_glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fNormal3fVertex3fvSUN"); - glad_glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fSUN"); - glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fvSUN"); - glad_glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fSUN"); - glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fvSUN"); - glad_glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)load("glReplacementCodeuiVertex3fSUN"); - glad_glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)load("glReplacementCodeuiVertex3fvSUN"); - glad_glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)load("glReplacementCodeuiColor4ubVertex3fSUN"); - glad_glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4ubVertex3fvSUN"); - glad_glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor3fVertex3fSUN"); - glad_glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor3fVertex3fvSUN"); - glad_glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiNormal3fVertex3fSUN"); - glad_glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiNormal3fVertex3fvSUN"); - glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); - glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); - glad_glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fSUN"); - glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fvSUN"); - glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); - glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); - glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); - glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); -} -static void load_GL_SGIX_igloo_interface(GLADloadproc load) { - if(!GLAD_GL_SGIX_igloo_interface) return; - glad_glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)load("glIglooInterfaceSGIX"); -} -static void load_GL_ARB_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_indirect) return; - glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); - glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); -} -static void load_GL_NV_vertex_program4(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_program4) return; - 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_SGIS_fog_function(GLADloadproc load) { - if(!GLAD_GL_SGIS_fog_function) return; - glad_glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)load("glFogFuncSGIS"); - glad_glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)load("glGetFogFuncSGIS"); -} -static void load_GL_EXT_x11_sync_object(GLADloadproc load) { - if(!GLAD_GL_EXT_x11_sync_object) return; - glad_glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)load("glImportSyncEXT"); -} -static void load_GL_ARB_sync(GLADloadproc load) { - if(!GLAD_GL_ARB_sync) return; - glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); - glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); - glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); - glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); - glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); - glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); - glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); -} -static void load_GL_NV_sample_locations(GLADloadproc load) { - if(!GLAD_GL_NV_sample_locations) return; - glad_glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glFramebufferSampleLocationsfvNV"); - glad_glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glNamedFramebufferSampleLocationsfvNV"); - glad_glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)load("glResolveDepthValuesNV"); -} -static void load_GL_ARB_compute_variable_group_size(GLADloadproc load) { - if(!GLAD_GL_ARB_compute_variable_group_size) return; - glad_glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)load("glDispatchComputeGroupSizeARB"); -} -static void load_GL_OES_fixed_point(GLADloadproc load) { - if(!GLAD_GL_OES_fixed_point) return; - glad_glAlphaFuncxOES = (PFNGLALPHAFUNCXOESPROC)load("glAlphaFuncxOES"); - glad_glClearColorxOES = (PFNGLCLEARCOLORXOESPROC)load("glClearColorxOES"); - glad_glClearDepthxOES = (PFNGLCLEARDEPTHXOESPROC)load("glClearDepthxOES"); - glad_glClipPlanexOES = (PFNGLCLIPPLANEXOESPROC)load("glClipPlanexOES"); - glad_glColor4xOES = (PFNGLCOLOR4XOESPROC)load("glColor4xOES"); - glad_glDepthRangexOES = (PFNGLDEPTHRANGEXOESPROC)load("glDepthRangexOES"); - glad_glFogxOES = (PFNGLFOGXOESPROC)load("glFogxOES"); - glad_glFogxvOES = (PFNGLFOGXVOESPROC)load("glFogxvOES"); - glad_glFrustumxOES = (PFNGLFRUSTUMXOESPROC)load("glFrustumxOES"); - glad_glGetClipPlanexOES = (PFNGLGETCLIPPLANEXOESPROC)load("glGetClipPlanexOES"); - glad_glGetFixedvOES = (PFNGLGETFIXEDVOESPROC)load("glGetFixedvOES"); - glad_glGetTexEnvxvOES = (PFNGLGETTEXENVXVOESPROC)load("glGetTexEnvxvOES"); - glad_glGetTexParameterxvOES = (PFNGLGETTEXPARAMETERXVOESPROC)load("glGetTexParameterxvOES"); - glad_glLightModelxOES = (PFNGLLIGHTMODELXOESPROC)load("glLightModelxOES"); - glad_glLightModelxvOES = (PFNGLLIGHTMODELXVOESPROC)load("glLightModelxvOES"); - glad_glLightxOES = (PFNGLLIGHTXOESPROC)load("glLightxOES"); - glad_glLightxvOES = (PFNGLLIGHTXVOESPROC)load("glLightxvOES"); - glad_glLineWidthxOES = (PFNGLLINEWIDTHXOESPROC)load("glLineWidthxOES"); - glad_glLoadMatrixxOES = (PFNGLLOADMATRIXXOESPROC)load("glLoadMatrixxOES"); - glad_glMaterialxOES = (PFNGLMATERIALXOESPROC)load("glMaterialxOES"); - glad_glMaterialxvOES = (PFNGLMATERIALXVOESPROC)load("glMaterialxvOES"); - glad_glMultMatrixxOES = (PFNGLMULTMATRIXXOESPROC)load("glMultMatrixxOES"); - glad_glMultiTexCoord4xOES = (PFNGLMULTITEXCOORD4XOESPROC)load("glMultiTexCoord4xOES"); - glad_glNormal3xOES = (PFNGLNORMAL3XOESPROC)load("glNormal3xOES"); - glad_glOrthoxOES = (PFNGLORTHOXOESPROC)load("glOrthoxOES"); - glad_glPointParameterxvOES = (PFNGLPOINTPARAMETERXVOESPROC)load("glPointParameterxvOES"); - glad_glPointSizexOES = (PFNGLPOINTSIZEXOESPROC)load("glPointSizexOES"); - glad_glPolygonOffsetxOES = (PFNGLPOLYGONOFFSETXOESPROC)load("glPolygonOffsetxOES"); - glad_glRotatexOES = (PFNGLROTATEXOESPROC)load("glRotatexOES"); - glad_glScalexOES = (PFNGLSCALEXOESPROC)load("glScalexOES"); - glad_glTexEnvxOES = (PFNGLTEXENVXOESPROC)load("glTexEnvxOES"); - glad_glTexEnvxvOES = (PFNGLTEXENVXVOESPROC)load("glTexEnvxvOES"); - glad_glTexParameterxOES = (PFNGLTEXPARAMETERXOESPROC)load("glTexParameterxOES"); - glad_glTexParameterxvOES = (PFNGLTEXPARAMETERXVOESPROC)load("glTexParameterxvOES"); - glad_glTranslatexOES = (PFNGLTRANSLATEXOESPROC)load("glTranslatexOES"); - glad_glGetLightxvOES = (PFNGLGETLIGHTXVOESPROC)load("glGetLightxvOES"); - glad_glGetMaterialxvOES = (PFNGLGETMATERIALXVOESPROC)load("glGetMaterialxvOES"); - glad_glPointParameterxOES = (PFNGLPOINTPARAMETERXOESPROC)load("glPointParameterxOES"); - glad_glSampleCoveragexOES = (PFNGLSAMPLECOVERAGEXOESPROC)load("glSampleCoveragexOES"); - glad_glAccumxOES = (PFNGLACCUMXOESPROC)load("glAccumxOES"); - glad_glBitmapxOES = (PFNGLBITMAPXOESPROC)load("glBitmapxOES"); - glad_glBlendColorxOES = (PFNGLBLENDCOLORXOESPROC)load("glBlendColorxOES"); - glad_glClearAccumxOES = (PFNGLCLEARACCUMXOESPROC)load("glClearAccumxOES"); - glad_glColor3xOES = (PFNGLCOLOR3XOESPROC)load("glColor3xOES"); - glad_glColor3xvOES = (PFNGLCOLOR3XVOESPROC)load("glColor3xvOES"); - glad_glColor4xvOES = (PFNGLCOLOR4XVOESPROC)load("glColor4xvOES"); - glad_glConvolutionParameterxOES = (PFNGLCONVOLUTIONPARAMETERXOESPROC)load("glConvolutionParameterxOES"); - glad_glConvolutionParameterxvOES = (PFNGLCONVOLUTIONPARAMETERXVOESPROC)load("glConvolutionParameterxvOES"); - glad_glEvalCoord1xOES = (PFNGLEVALCOORD1XOESPROC)load("glEvalCoord1xOES"); - glad_glEvalCoord1xvOES = (PFNGLEVALCOORD1XVOESPROC)load("glEvalCoord1xvOES"); - glad_glEvalCoord2xOES = (PFNGLEVALCOORD2XOESPROC)load("glEvalCoord2xOES"); - glad_glEvalCoord2xvOES = (PFNGLEVALCOORD2XVOESPROC)load("glEvalCoord2xvOES"); - glad_glFeedbackBufferxOES = (PFNGLFEEDBACKBUFFERXOESPROC)load("glFeedbackBufferxOES"); - glad_glGetConvolutionParameterxvOES = (PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)load("glGetConvolutionParameterxvOES"); - glad_glGetHistogramParameterxvOES = (PFNGLGETHISTOGRAMPARAMETERXVOESPROC)load("glGetHistogramParameterxvOES"); - glad_glGetLightxOES = (PFNGLGETLIGHTXOESPROC)load("glGetLightxOES"); - glad_glGetMapxvOES = (PFNGLGETMAPXVOESPROC)load("glGetMapxvOES"); - glad_glGetMaterialxOES = (PFNGLGETMATERIALXOESPROC)load("glGetMaterialxOES"); - glad_glGetPixelMapxv = (PFNGLGETPIXELMAPXVPROC)load("glGetPixelMapxv"); - glad_glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)load("glGetTexGenxvOES"); - glad_glGetTexLevelParameterxvOES = (PFNGLGETTEXLEVELPARAMETERXVOESPROC)load("glGetTexLevelParameterxvOES"); - glad_glIndexxOES = (PFNGLINDEXXOESPROC)load("glIndexxOES"); - glad_glIndexxvOES = (PFNGLINDEXXVOESPROC)load("glIndexxvOES"); - glad_glLoadTransposeMatrixxOES = (PFNGLLOADTRANSPOSEMATRIXXOESPROC)load("glLoadTransposeMatrixxOES"); - glad_glMap1xOES = (PFNGLMAP1XOESPROC)load("glMap1xOES"); - glad_glMap2xOES = (PFNGLMAP2XOESPROC)load("glMap2xOES"); - glad_glMapGrid1xOES = (PFNGLMAPGRID1XOESPROC)load("glMapGrid1xOES"); - glad_glMapGrid2xOES = (PFNGLMAPGRID2XOESPROC)load("glMapGrid2xOES"); - glad_glMultTransposeMatrixxOES = (PFNGLMULTTRANSPOSEMATRIXXOESPROC)load("glMultTransposeMatrixxOES"); - glad_glMultiTexCoord1xOES = (PFNGLMULTITEXCOORD1XOESPROC)load("glMultiTexCoord1xOES"); - glad_glMultiTexCoord1xvOES = (PFNGLMULTITEXCOORD1XVOESPROC)load("glMultiTexCoord1xvOES"); - glad_glMultiTexCoord2xOES = (PFNGLMULTITEXCOORD2XOESPROC)load("glMultiTexCoord2xOES"); - glad_glMultiTexCoord2xvOES = (PFNGLMULTITEXCOORD2XVOESPROC)load("glMultiTexCoord2xvOES"); - glad_glMultiTexCoord3xOES = (PFNGLMULTITEXCOORD3XOESPROC)load("glMultiTexCoord3xOES"); - glad_glMultiTexCoord3xvOES = (PFNGLMULTITEXCOORD3XVOESPROC)load("glMultiTexCoord3xvOES"); - glad_glMultiTexCoord4xvOES = (PFNGLMULTITEXCOORD4XVOESPROC)load("glMultiTexCoord4xvOES"); - glad_glNormal3xvOES = (PFNGLNORMAL3XVOESPROC)load("glNormal3xvOES"); - glad_glPassThroughxOES = (PFNGLPASSTHROUGHXOESPROC)load("glPassThroughxOES"); - glad_glPixelMapx = (PFNGLPIXELMAPXPROC)load("glPixelMapx"); - glad_glPixelStorex = (PFNGLPIXELSTOREXPROC)load("glPixelStorex"); - glad_glPixelTransferxOES = (PFNGLPIXELTRANSFERXOESPROC)load("glPixelTransferxOES"); - glad_glPixelZoomxOES = (PFNGLPIXELZOOMXOESPROC)load("glPixelZoomxOES"); - glad_glPrioritizeTexturesxOES = (PFNGLPRIORITIZETEXTURESXOESPROC)load("glPrioritizeTexturesxOES"); - glad_glRasterPos2xOES = (PFNGLRASTERPOS2XOESPROC)load("glRasterPos2xOES"); - glad_glRasterPos2xvOES = (PFNGLRASTERPOS2XVOESPROC)load("glRasterPos2xvOES"); - glad_glRasterPos3xOES = (PFNGLRASTERPOS3XOESPROC)load("glRasterPos3xOES"); - glad_glRasterPos3xvOES = (PFNGLRASTERPOS3XVOESPROC)load("glRasterPos3xvOES"); - glad_glRasterPos4xOES = (PFNGLRASTERPOS4XOESPROC)load("glRasterPos4xOES"); - glad_glRasterPos4xvOES = (PFNGLRASTERPOS4XVOESPROC)load("glRasterPos4xvOES"); - glad_glRectxOES = (PFNGLRECTXOESPROC)load("glRectxOES"); - glad_glRectxvOES = (PFNGLRECTXVOESPROC)load("glRectxvOES"); - glad_glTexCoord1xOES = (PFNGLTEXCOORD1XOESPROC)load("glTexCoord1xOES"); - glad_glTexCoord1xvOES = (PFNGLTEXCOORD1XVOESPROC)load("glTexCoord1xvOES"); - glad_glTexCoord2xOES = (PFNGLTEXCOORD2XOESPROC)load("glTexCoord2xOES"); - glad_glTexCoord2xvOES = (PFNGLTEXCOORD2XVOESPROC)load("glTexCoord2xvOES"); - glad_glTexCoord3xOES = (PFNGLTEXCOORD3XOESPROC)load("glTexCoord3xOES"); - glad_glTexCoord3xvOES = (PFNGLTEXCOORD3XVOESPROC)load("glTexCoord3xvOES"); - glad_glTexCoord4xOES = (PFNGLTEXCOORD4XOESPROC)load("glTexCoord4xOES"); - glad_glTexCoord4xvOES = (PFNGLTEXCOORD4XVOESPROC)load("glTexCoord4xvOES"); - glad_glTexGenxOES = (PFNGLTEXGENXOESPROC)load("glTexGenxOES"); - glad_glTexGenxvOES = (PFNGLTEXGENXVOESPROC)load("glTexGenxvOES"); - glad_glVertex2xOES = (PFNGLVERTEX2XOESPROC)load("glVertex2xOES"); - glad_glVertex2xvOES = (PFNGLVERTEX2XVOESPROC)load("glVertex2xvOES"); - glad_glVertex3xOES = (PFNGLVERTEX3XOESPROC)load("glVertex3xOES"); - glad_glVertex3xvOES = (PFNGLVERTEX3XVOESPROC)load("glVertex3xvOES"); - glad_glVertex4xOES = (PFNGLVERTEX4XOESPROC)load("glVertex4xOES"); - glad_glVertex4xvOES = (PFNGLVERTEX4XVOESPROC)load("glVertex4xvOES"); -} -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_SGIS_texture4D(GLADloadproc load) { - if(!GLAD_GL_SGIS_texture4D) return; - glad_glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)load("glTexImage4DSGIS"); - glad_glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)load("glTexSubImage4DSGIS"); -} -static void load_GL_EXT_texture3D(GLADloadproc load) { - if(!GLAD_GL_EXT_texture3D) return; - glad_glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)load("glTexImage3DEXT"); - glad_glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)load("glTexSubImage3DEXT"); -} -static void load_GL_EXT_multisample(GLADloadproc load) { - if(!GLAD_GL_EXT_multisample) return; - glad_glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)load("glSampleMaskEXT"); - glad_glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)load("glSamplePatternEXT"); -} -static void load_GL_EXT_secondary_color(GLADloadproc load) { - if(!GLAD_GL_EXT_secondary_color) return; - glad_glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)load("glSecondaryColor3bEXT"); - glad_glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)load("glSecondaryColor3bvEXT"); - glad_glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)load("glSecondaryColor3dEXT"); - glad_glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)load("glSecondaryColor3dvEXT"); - glad_glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)load("glSecondaryColor3fEXT"); - glad_glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)load("glSecondaryColor3fvEXT"); - glad_glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)load("glSecondaryColor3iEXT"); - glad_glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)load("glSecondaryColor3ivEXT"); - glad_glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)load("glSecondaryColor3sEXT"); - glad_glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)load("glSecondaryColor3svEXT"); - glad_glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)load("glSecondaryColor3ubEXT"); - glad_glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)load("glSecondaryColor3ubvEXT"); - glad_glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)load("glSecondaryColor3uiEXT"); - glad_glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)load("glSecondaryColor3uivEXT"); - glad_glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)load("glSecondaryColor3usEXT"); - glad_glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)load("glSecondaryColor3usvEXT"); - glad_glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)load("glSecondaryColorPointerEXT"); -} -static void load_GL_ATI_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_ATI_vertex_array_object) return; - glad_glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)load("glNewObjectBufferATI"); - glad_glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)load("glIsObjectBufferATI"); - glad_glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)load("glUpdateObjectBufferATI"); - glad_glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)load("glGetObjectBufferfvATI"); - glad_glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)load("glGetObjectBufferivATI"); - glad_glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)load("glFreeObjectBufferATI"); - glad_glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)load("glArrayObjectATI"); - glad_glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)load("glGetArrayObjectfvATI"); - glad_glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)load("glGetArrayObjectivATI"); - glad_glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)load("glVariantArrayObjectATI"); - glad_glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)load("glGetVariantArrayObjectfvATI"); - glad_glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)load("glGetVariantArrayObjectivATI"); -} -static void load_GL_ARB_parallel_shader_compile(GLADloadproc load) { - if(!GLAD_GL_ARB_parallel_shader_compile) return; - glad_glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)load("glMaxShaderCompilerThreadsARB"); -} -static void load_GL_ARB_sparse_texture(GLADloadproc load) { - if(!GLAD_GL_ARB_sparse_texture) return; - glad_glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)load("glTexPageCommitmentARB"); -} -static void load_GL_ARB_sample_locations(GLADloadproc load) { - if(!GLAD_GL_ARB_sample_locations) return; - glad_glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glFramebufferSampleLocationsfvARB"); - glad_glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glNamedFramebufferSampleLocationsfvARB"); - glad_glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)load("glEvaluateDepthValuesARB"); -} -static void load_GL_ARB_sparse_buffer(GLADloadproc load) { - if(!GLAD_GL_ARB_sparse_buffer) return; - glad_glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)load("glBufferPageCommitmentARB"); - glad_glNamedBufferPageCommitmentEXT = (PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)load("glNamedBufferPageCommitmentEXT"); - glad_glNamedBufferPageCommitmentARB = (PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)load("glNamedBufferPageCommitmentARB"); -} -static void load_GL_EXT_draw_range_elements(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_range_elements) return; - glad_glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)load("glDrawRangeElementsEXT"); -} -static int find_extensionsGL(void) { - if (!get_exts()) return 0; - GLAD_GL_SGIX_pixel_tiles = has_ext("GL_SGIX_pixel_tiles"); - GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); - GLAD_GL_APPLE_element_array = has_ext("GL_APPLE_element_array"); - GLAD_GL_AMD_multi_draw_indirect = has_ext("GL_AMD_multi_draw_indirect"); - GLAD_GL_EXT_blend_subtract = has_ext("GL_EXT_blend_subtract"); - GLAD_GL_SGIX_tag_sample_buffer = has_ext("GL_SGIX_tag_sample_buffer"); - GLAD_GL_NV_point_sprite = has_ext("GL_NV_point_sprite"); - GLAD_GL_IBM_texture_mirrored_repeat = has_ext("GL_IBM_texture_mirrored_repeat"); - GLAD_GL_APPLE_transform_hint = has_ext("GL_APPLE_transform_hint"); - GLAD_GL_ATI_separate_stencil = has_ext("GL_ATI_separate_stencil"); - GLAD_GL_NV_shader_atomic_int64 = has_ext("GL_NV_shader_atomic_int64"); - GLAD_GL_NV_vertex_program2_option = has_ext("GL_NV_vertex_program2_option"); - GLAD_GL_EXT_texture_buffer_object = has_ext("GL_EXT_texture_buffer_object"); - GLAD_GL_ARB_vertex_blend = has_ext("GL_ARB_vertex_blend"); - GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); - GLAD_GL_NV_vertex_program2 = has_ext("GL_NV_vertex_program2"); - GLAD_GL_ARB_program_interface_query = has_ext("GL_ARB_program_interface_query"); - GLAD_GL_EXT_misc_attribute = has_ext("GL_EXT_misc_attribute"); - GLAD_GL_NV_multisample_coverage = has_ext("GL_NV_multisample_coverage"); - GLAD_GL_ARB_shading_language_packing = has_ext("GL_ARB_shading_language_packing"); - GLAD_GL_EXT_texture_cube_map = has_ext("GL_EXT_texture_cube_map"); - GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); - GLAD_GL_ARB_texture_stencil8 = has_ext("GL_ARB_texture_stencil8"); - GLAD_GL_EXT_index_func = has_ext("GL_EXT_index_func"); - GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); - GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp"); - GLAD_GL_NV_shader_buffer_load = has_ext("GL_NV_shader_buffer_load"); - GLAD_GL_EXT_color_subtable = has_ext("GL_EXT_color_subtable"); - GLAD_GL_SUNX_constant_data = has_ext("GL_SUNX_constant_data"); - GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); - GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); - GLAD_GL_ARB_shader_atomic_counters = has_ext("GL_ARB_shader_atomic_counters"); - GLAD_GL_ARB_arrays_of_arrays = has_ext("GL_ARB_arrays_of_arrays"); - GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); - GLAD_GL_EXT_texture_env_combine = has_ext("GL_EXT_texture_env_combine"); - GLAD_GL_NV_fog_distance = has_ext("GL_NV_fog_distance"); - GLAD_GL_SGIX_async_histogram = has_ext("GL_SGIX_async_histogram"); - GLAD_GL_MESA_resize_buffers = has_ext("GL_MESA_resize_buffers"); - GLAD_GL_NV_light_max_exponent = has_ext("GL_NV_light_max_exponent"); - GLAD_GL_NV_texture_env_combine4 = has_ext("GL_NV_texture_env_combine4"); - GLAD_GL_ARB_texture_view = has_ext("GL_ARB_texture_view"); - GLAD_GL_ARB_texture_env_combine = has_ext("GL_ARB_texture_env_combine"); - GLAD_GL_ARB_map_buffer_range = has_ext("GL_ARB_map_buffer_range"); - GLAD_GL_EXT_convolution = has_ext("GL_EXT_convolution"); - GLAD_GL_NV_compute_program5 = has_ext("GL_NV_compute_program5"); - GLAD_GL_NV_vertex_attrib_integer_64bit = has_ext("GL_NV_vertex_attrib_integer_64bit"); - GLAD_GL_EXT_paletted_texture = has_ext("GL_EXT_paletted_texture"); - GLAD_GL_ARB_texture_buffer_object = has_ext("GL_ARB_texture_buffer_object"); - GLAD_GL_ATI_pn_triangles = has_ext("GL_ATI_pn_triangles"); - GLAD_GL_SGIX_resample = has_ext("GL_SGIX_resample"); - GLAD_GL_SGIX_flush_raster = has_ext("GL_SGIX_flush_raster"); - GLAD_GL_EXT_light_texture = has_ext("GL_EXT_light_texture"); - GLAD_GL_ARB_point_sprite = has_ext("GL_ARB_point_sprite"); - GLAD_GL_SUN_convolution_border_modes = has_ext("GL_SUN_convolution_border_modes"); - GLAD_GL_NV_parameter_buffer_object2 = has_ext("GL_NV_parameter_buffer_object2"); - GLAD_GL_ARB_half_float_pixel = has_ext("GL_ARB_half_float_pixel"); - GLAD_GL_NV_tessellation_program5 = has_ext("GL_NV_tessellation_program5"); - GLAD_GL_REND_screen_coordinates = has_ext("GL_REND_screen_coordinates"); - GLAD_GL_HP_image_transform = has_ext("GL_HP_image_transform"); - GLAD_GL_EXT_packed_float = has_ext("GL_EXT_packed_float"); - GLAD_GL_OML_subsample = has_ext("GL_OML_subsample"); - GLAD_GL_SGIX_vertex_preclip = has_ext("GL_SGIX_vertex_preclip"); - GLAD_GL_SGIX_texture_scale_bias = has_ext("GL_SGIX_texture_scale_bias"); - GLAD_GL_AMD_draw_buffers_blend = has_ext("GL_AMD_draw_buffers_blend"); - GLAD_GL_APPLE_texture_range = has_ext("GL_APPLE_texture_range"); - GLAD_GL_EXT_texture_array = has_ext("GL_EXT_texture_array"); - GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); - GLAD_GL_ARB_texture_query_levels = has_ext("GL_ARB_texture_query_levels"); - GLAD_GL_NV_texgen_emboss = has_ext("GL_NV_texgen_emboss"); - GLAD_GL_EXT_texture_swizzle = has_ext("GL_EXT_texture_swizzle"); - GLAD_GL_ARB_texture_rg = has_ext("GL_ARB_texture_rg"); - GLAD_GL_ARB_vertex_type_2_10_10_10_rev = has_ext("GL_ARB_vertex_type_2_10_10_10_rev"); - GLAD_GL_ARB_fragment_shader = has_ext("GL_ARB_fragment_shader"); - GLAD_GL_3DFX_tbuffer = has_ext("GL_3DFX_tbuffer"); - GLAD_GL_GREMEDY_frame_terminator = has_ext("GL_GREMEDY_frame_terminator"); - GLAD_GL_ARB_blend_func_extended = has_ext("GL_ARB_blend_func_extended"); - GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); - GLAD_GL_NV_texture_multisample = has_ext("GL_NV_texture_multisample"); - GLAD_GL_ARB_shader_objects = has_ext("GL_ARB_shader_objects"); - GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object"); - GLAD_GL_ATI_envmap_bumpmap = has_ext("GL_ATI_envmap_bumpmap"); - GLAD_GL_ARB_robust_buffer_access_behavior = has_ext("GL_ARB_robust_buffer_access_behavior"); - GLAD_GL_ARB_shader_stencil_export = has_ext("GL_ARB_shader_stencil_export"); - GLAD_GL_NV_texture_rectangle = has_ext("GL_NV_texture_rectangle"); - GLAD_GL_ARB_enhanced_layouts = has_ext("GL_ARB_enhanced_layouts"); - GLAD_GL_ARB_texture_rectangle = has_ext("GL_ARB_texture_rectangle"); - GLAD_GL_SGI_texture_color_table = has_ext("GL_SGI_texture_color_table"); - GLAD_GL_ATI_map_object_buffer = has_ext("GL_ATI_map_object_buffer"); - GLAD_GL_ARB_robustness = has_ext("GL_ARB_robustness"); - GLAD_GL_NV_pixel_data_range = has_ext("GL_NV_pixel_data_range"); - GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit"); - GLAD_GL_ARB_gpu_shader_fp64 = has_ext("GL_ARB_gpu_shader_fp64"); - GLAD_GL_NV_command_list = has_ext("GL_NV_command_list"); - GLAD_GL_SGIX_depth_texture = has_ext("GL_SGIX_depth_texture"); - GLAD_GL_EXT_vertex_weighting = has_ext("GL_EXT_vertex_weighting"); - GLAD_GL_GREMEDY_string_marker = has_ext("GL_GREMEDY_string_marker"); - GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); - GLAD_GL_EXT_subtexture = has_ext("GL_EXT_subtexture"); - GLAD_GL_EXT_pixel_transform_color_table = has_ext("GL_EXT_pixel_transform_color_table"); - GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); - GLAD_GL_ARB_shader_atomic_counter_ops = has_ext("GL_ARB_shader_atomic_counter_ops"); - GLAD_GL_SGIX_depth_pass_instrument = has_ext("GL_SGIX_depth_pass_instrument"); - GLAD_GL_EXT_gpu_program_parameters = has_ext("GL_EXT_gpu_program_parameters"); - GLAD_GL_NV_evaluators = has_ext("GL_NV_evaluators"); - GLAD_GL_SGIS_texture_filter4 = has_ext("GL_SGIS_texture_filter4"); - GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); - GLAD_GL_NV_geometry_shader4 = has_ext("GL_NV_geometry_shader4"); - GLAD_GL_EXT_stencil_clear_tag = has_ext("GL_EXT_stencil_clear_tag"); - GLAD_GL_NV_vertex_program1_1 = has_ext("GL_NV_vertex_program1_1"); - GLAD_GL_NV_present_video = has_ext("GL_NV_present_video"); - GLAD_GL_ARB_texture_compression_rgtc = has_ext("GL_ARB_texture_compression_rgtc"); - GLAD_GL_HP_convolution_border_modes = has_ext("GL_HP_convolution_border_modes"); - GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); - GLAD_GL_SGIX_framezoom = has_ext("GL_SGIX_framezoom"); - GLAD_GL_ARB_stencil_texturing = has_ext("GL_ARB_stencil_texturing"); - GLAD_GL_ARB_shader_clock = has_ext("GL_ARB_shader_clock"); - GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); - GLAD_GL_SGIX_fog_offset = has_ext("GL_SGIX_fog_offset"); - GLAD_GL_ARB_draw_elements_base_vertex = has_ext("GL_ARB_draw_elements_base_vertex"); - GLAD_GL_INGR_interlace_read = has_ext("GL_INGR_interlace_read"); - GLAD_GL_NV_transform_feedback = has_ext("GL_NV_transform_feedback"); - GLAD_GL_NV_fragment_program = has_ext("GL_NV_fragment_program"); - GLAD_GL_AMD_stencil_operation_extended = has_ext("GL_AMD_stencil_operation_extended"); - GLAD_GL_ARB_seamless_cubemap_per_texture = has_ext("GL_ARB_seamless_cubemap_per_texture"); - GLAD_GL_ARB_instanced_arrays = has_ext("GL_ARB_instanced_arrays"); - GLAD_GL_EXT_polygon_offset = has_ext("GL_EXT_polygon_offset"); - GLAD_GL_NV_vertex_array_range2 = has_ext("GL_NV_vertex_array_range2"); - GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); - GLAD_GL_AMD_sparse_texture = has_ext("GL_AMD_sparse_texture"); - GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); - GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); - GLAD_GL_NV_fence = has_ext("GL_NV_fence"); - GLAD_GL_ARB_texture_buffer_range = has_ext("GL_ARB_texture_buffer_range"); - GLAD_GL_SUN_mesh_array = has_ext("GL_SUN_mesh_array"); - GLAD_GL_ARB_vertex_attrib_binding = has_ext("GL_ARB_vertex_attrib_binding"); - GLAD_GL_ARB_framebuffer_no_attachments = has_ext("GL_ARB_framebuffer_no_attachments"); - GLAD_GL_ARB_cl_event = has_ext("GL_ARB_cl_event"); - GLAD_GL_ARB_derivative_control = has_ext("GL_ARB_derivative_control"); - GLAD_GL_NV_packed_depth_stencil = has_ext("GL_NV_packed_depth_stencil"); - GLAD_GL_OES_single_precision = has_ext("GL_OES_single_precision"); - GLAD_GL_NV_primitive_restart = has_ext("GL_NV_primitive_restart"); - GLAD_GL_SUN_global_alpha = has_ext("GL_SUN_global_alpha"); - GLAD_GL_ARB_fragment_shader_interlock = has_ext("GL_ARB_fragment_shader_interlock"); - GLAD_GL_EXT_texture_object = has_ext("GL_EXT_texture_object"); - GLAD_GL_AMD_name_gen_delete = has_ext("GL_AMD_name_gen_delete"); - GLAD_GL_NV_texture_compression_vtc = has_ext("GL_NV_texture_compression_vtc"); - GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); - GLAD_GL_NV_texture_shader3 = has_ext("GL_NV_texture_shader3"); - GLAD_GL_NV_texture_shader2 = has_ext("GL_NV_texture_shader2"); - GLAD_GL_EXT_texture = has_ext("GL_EXT_texture"); - GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); - GLAD_GL_AMD_shader_atomic_counter_ops = has_ext("GL_AMD_shader_atomic_counter_ops"); - GLAD_GL_APPLE_vertex_program_evaluators = has_ext("GL_APPLE_vertex_program_evaluators"); - GLAD_GL_ARB_multi_bind = has_ext("GL_ARB_multi_bind"); - GLAD_GL_ARB_explicit_uniform_location = has_ext("GL_ARB_explicit_uniform_location"); - GLAD_GL_ARB_depth_buffer_float = has_ext("GL_ARB_depth_buffer_float"); - GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); - GLAD_GL_SGIX_shadow_ambient = has_ext("GL_SGIX_shadow_ambient"); - GLAD_GL_ARB_texture_cube_map = has_ext("GL_ARB_texture_cube_map"); - GLAD_GL_AMD_vertex_shader_viewport_index = has_ext("GL_AMD_vertex_shader_viewport_index"); - GLAD_GL_SGIX_list_priority = has_ext("GL_SGIX_list_priority"); - GLAD_GL_NV_vertex_buffer_unified_memory = has_ext("GL_NV_vertex_buffer_unified_memory"); - GLAD_GL_NV_uniform_buffer_unified_memory = has_ext("GL_NV_uniform_buffer_unified_memory"); - GLAD_GL_EXT_texture_env_dot3 = has_ext("GL_EXT_texture_env_dot3"); - GLAD_GL_ATI_texture_env_combine3 = has_ext("GL_ATI_texture_env_combine3"); - GLAD_GL_ARB_map_buffer_alignment = has_ext("GL_ARB_map_buffer_alignment"); - GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); - GLAD_GL_SGIS_sharpen_texture = has_ext("GL_SGIS_sharpen_texture"); - GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); - GLAD_GL_ARB_pipeline_statistics_query = has_ext("GL_ARB_pipeline_statistics_query"); - GLAD_GL_ARB_vertex_program = has_ext("GL_ARB_vertex_program"); - GLAD_GL_ARB_texture_rgb10_a2ui = has_ext("GL_ARB_texture_rgb10_a2ui"); - GLAD_GL_OML_interlace = has_ext("GL_OML_interlace"); - GLAD_GL_ATI_pixel_format_float = has_ext("GL_ATI_pixel_format_float"); - GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); - GLAD_GL_ARB_vertex_buffer_object = has_ext("GL_ARB_vertex_buffer_object"); - GLAD_GL_EXT_shadow_funcs = has_ext("GL_EXT_shadow_funcs"); - GLAD_GL_ATI_text_fragment_shader = has_ext("GL_ATI_text_fragment_shader"); - GLAD_GL_NV_vertex_array_range = has_ext("GL_NV_vertex_array_range"); - GLAD_GL_SGIX_fragment_lighting = has_ext("GL_SGIX_fragment_lighting"); - GLAD_GL_NV_texture_expand_normal = has_ext("GL_NV_texture_expand_normal"); - GLAD_GL_NV_framebuffer_multisample_coverage = has_ext("GL_NV_framebuffer_multisample_coverage"); - GLAD_GL_EXT_timer_query = has_ext("GL_EXT_timer_query"); - GLAD_GL_EXT_vertex_array_bgra = has_ext("GL_EXT_vertex_array_bgra"); - GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); - GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); - GLAD_GL_SGIS_texture_border_clamp = has_ext("GL_SGIS_texture_border_clamp"); - GLAD_GL_ATI_vertex_attrib_array_object = has_ext("GL_ATI_vertex_attrib_array_object"); - GLAD_GL_SGIX_clipmap = has_ext("GL_SGIX_clipmap"); - GLAD_GL_EXT_geometry_shader4 = has_ext("GL_EXT_geometry_shader4"); - GLAD_GL_ARB_shader_texture_image_samples = has_ext("GL_ARB_shader_texture_image_samples"); - GLAD_GL_MESA_ycbcr_texture = has_ext("GL_MESA_ycbcr_texture"); - GLAD_GL_MESAX_texture_stack = has_ext("GL_MESAX_texture_stack"); - GLAD_GL_AMD_seamless_cubemap_per_texture = has_ext("GL_AMD_seamless_cubemap_per_texture"); - GLAD_GL_EXT_bindable_uniform = has_ext("GL_EXT_bindable_uniform"); - GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); - GLAD_GL_ARB_shader_ballot = has_ext("GL_ARB_shader_ballot"); - GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); - GLAD_GL_ARB_fragment_program_shadow = has_ext("GL_ARB_fragment_program_shadow"); - GLAD_GL_ATI_element_array = has_ext("GL_ATI_element_array"); - GLAD_GL_AMD_texture_texture4 = has_ext("GL_AMD_texture_texture4"); - GLAD_GL_SGIX_reference_plane = has_ext("GL_SGIX_reference_plane"); - GLAD_GL_EXT_stencil_two_side = has_ext("GL_EXT_stencil_two_side"); - GLAD_GL_ARB_transform_feedback_overflow_query = has_ext("GL_ARB_transform_feedback_overflow_query"); - GLAD_GL_SGIX_texture_lod_bias = has_ext("GL_SGIX_texture_lod_bias"); - GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); - GLAD_GL_NV_explicit_multisample = has_ext("GL_NV_explicit_multisample"); - GLAD_GL_IBM_static_data = has_ext("GL_IBM_static_data"); - GLAD_GL_EXT_clip_volume_hint = has_ext("GL_EXT_clip_volume_hint"); - GLAD_GL_EXT_texture_perturb_normal = has_ext("GL_EXT_texture_perturb_normal"); - GLAD_GL_NV_fragment_program2 = has_ext("GL_NV_fragment_program2"); - GLAD_GL_NV_fragment_program4 = has_ext("GL_NV_fragment_program4"); - GLAD_GL_EXT_point_parameters = has_ext("GL_EXT_point_parameters"); - GLAD_GL_PGI_misc_hints = has_ext("GL_PGI_misc_hints"); - GLAD_GL_SGIX_subsample = has_ext("GL_SGIX_subsample"); - GLAD_GL_AMD_shader_stencil_export = has_ext("GL_AMD_shader_stencil_export"); - GLAD_GL_ARB_shader_texture_lod = has_ext("GL_ARB_shader_texture_lod"); - GLAD_GL_ARB_vertex_shader = has_ext("GL_ARB_vertex_shader"); - GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp"); - GLAD_GL_SGIS_texture_select = has_ext("GL_SGIS_texture_select"); - GLAD_GL_NV_texture_shader = has_ext("GL_NV_texture_shader"); - GLAD_GL_ARB_tessellation_shader = has_ext("GL_ARB_tessellation_shader"); - GLAD_GL_EXT_draw_buffers2 = has_ext("GL_EXT_draw_buffers2"); - GLAD_GL_ARB_vertex_attrib_64bit = has_ext("GL_ARB_vertex_attrib_64bit"); - GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); - GLAD_GL_WIN_specular_fog = has_ext("GL_WIN_specular_fog"); - GLAD_GL_AMD_interleaved_elements = has_ext("GL_AMD_interleaved_elements"); - GLAD_GL_ARB_fragment_program = has_ext("GL_ARB_fragment_program"); - GLAD_GL_OML_resample = has_ext("GL_OML_resample"); - GLAD_GL_APPLE_ycbcr_422 = has_ext("GL_APPLE_ycbcr_422"); - GLAD_GL_SGIX_texture_add_env = has_ext("GL_SGIX_texture_add_env"); - GLAD_GL_ARB_shadow_ambient = has_ext("GL_ARB_shadow_ambient"); - GLAD_GL_ARB_texture_storage = has_ext("GL_ARB_texture_storage"); - GLAD_GL_EXT_pixel_buffer_object = has_ext("GL_EXT_pixel_buffer_object"); - GLAD_GL_ARB_copy_image = has_ext("GL_ARB_copy_image"); - GLAD_GL_SGIS_pixel_texture = has_ext("GL_SGIS_pixel_texture"); - GLAD_GL_SGIS_generate_mipmap = has_ext("GL_SGIS_generate_mipmap"); - GLAD_GL_SGIX_instruments = has_ext("GL_SGIX_instruments"); - GLAD_GL_HP_texture_lighting = has_ext("GL_HP_texture_lighting"); - GLAD_GL_ARB_shader_storage_buffer_object = has_ext("GL_ARB_shader_storage_buffer_object"); - GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); - GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); - GLAD_GL_MESA_pack_invert = has_ext("GL_MESA_pack_invert"); - GLAD_GL_ARB_base_instance = has_ext("GL_ARB_base_instance"); - GLAD_GL_SGIX_convolution_accuracy = has_ext("GL_SGIX_convolution_accuracy"); - GLAD_GL_PGI_vertex_hints = has_ext("GL_PGI_vertex_hints"); - GLAD_GL_AMD_transform_feedback4 = has_ext("GL_AMD_transform_feedback4"); - GLAD_GL_ARB_ES3_1_compatibility = has_ext("GL_ARB_ES3_1_compatibility"); - GLAD_GL_EXT_texture_integer = has_ext("GL_EXT_texture_integer"); - GLAD_GL_ARB_texture_multisample = has_ext("GL_ARB_texture_multisample"); - GLAD_GL_AMD_gpu_shader_int64 = has_ext("GL_AMD_gpu_shader_int64"); - GLAD_GL_S3_s3tc = has_ext("GL_S3_s3tc"); - GLAD_GL_ARB_query_buffer_object = has_ext("GL_ARB_query_buffer_object"); - GLAD_GL_AMD_vertex_shader_tessellator = has_ext("GL_AMD_vertex_shader_tessellator"); - GLAD_GL_ARB_invalidate_subdata = has_ext("GL_ARB_invalidate_subdata"); - GLAD_GL_EXT_index_material = has_ext("GL_EXT_index_material"); - GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); - GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); - GLAD_GL_INTEL_parallel_arrays = has_ext("GL_INTEL_parallel_arrays"); - GLAD_GL_ATI_draw_buffers = has_ext("GL_ATI_draw_buffers"); - GLAD_GL_EXT_cmyka = has_ext("GL_EXT_cmyka"); - GLAD_GL_SGIX_pixel_texture = has_ext("GL_SGIX_pixel_texture"); - GLAD_GL_APPLE_specular_vector = has_ext("GL_APPLE_specular_vector"); - GLAD_GL_ARB_compatibility = has_ext("GL_ARB_compatibility"); - GLAD_GL_ARB_timer_query = has_ext("GL_ARB_timer_query"); - GLAD_GL_SGIX_interlace = has_ext("GL_SGIX_interlace"); - GLAD_GL_NV_parameter_buffer_object = has_ext("GL_NV_parameter_buffer_object"); - GLAD_GL_AMD_shader_trinary_minmax = has_ext("GL_AMD_shader_trinary_minmax"); - GLAD_GL_ARB_direct_state_access = has_ext("GL_ARB_direct_state_access"); - GLAD_GL_EXT_rescale_normal = has_ext("GL_EXT_rescale_normal"); - GLAD_GL_ARB_pixel_buffer_object = has_ext("GL_ARB_pixel_buffer_object"); - GLAD_GL_ARB_uniform_buffer_object = has_ext("GL_ARB_uniform_buffer_object"); - GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = has_ext("GL_ARB_vertex_type_10f_11f_11f_rev"); - GLAD_GL_ARB_texture_swizzle = has_ext("GL_ARB_texture_swizzle"); - GLAD_GL_NV_transform_feedback2 = has_ext("GL_NV_transform_feedback2"); - GLAD_GL_SGIX_async_pixel = has_ext("GL_SGIX_async_pixel"); - GLAD_GL_NV_fragment_program_option = has_ext("GL_NV_fragment_program_option"); - GLAD_GL_ARB_explicit_attrib_location = has_ext("GL_ARB_explicit_attrib_location"); - GLAD_GL_EXT_blend_color = has_ext("GL_EXT_blend_color"); - GLAD_GL_NV_shader_thread_group = has_ext("GL_NV_shader_thread_group"); - GLAD_GL_EXT_stencil_wrap = has_ext("GL_EXT_stencil_wrap"); - GLAD_GL_EXT_index_array_formats = has_ext("GL_EXT_index_array_formats"); - GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); - GLAD_GL_EXT_histogram = has_ext("GL_EXT_histogram"); - GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); - GLAD_GL_SGIS_point_parameters = has_ext("GL_SGIS_point_parameters"); - GLAD_GL_SGIX_ycrcb = has_ext("GL_SGIX_ycrcb"); - GLAD_GL_EXT_direct_state_access = has_ext("GL_EXT_direct_state_access"); - GLAD_GL_ARB_cull_distance = has_ext("GL_ARB_cull_distance"); - GLAD_GL_AMD_sample_positions = has_ext("GL_AMD_sample_positions"); - GLAD_GL_NV_vertex_program = has_ext("GL_NV_vertex_program"); - GLAD_GL_NV_shader_thread_shuffle = has_ext("GL_NV_shader_thread_shuffle"); - GLAD_GL_ARB_shader_precision = has_ext("GL_ARB_shader_precision"); - GLAD_GL_EXT_vertex_shader = has_ext("GL_EXT_vertex_shader"); - GLAD_GL_EXT_blend_func_separate = has_ext("GL_EXT_blend_func_separate"); - GLAD_GL_APPLE_fence = has_ext("GL_APPLE_fence"); - GLAD_GL_OES_byte_coordinates = has_ext("GL_OES_byte_coordinates"); - GLAD_GL_ARB_transpose_matrix = has_ext("GL_ARB_transpose_matrix"); - GLAD_GL_ARB_provoking_vertex = has_ext("GL_ARB_provoking_vertex"); - GLAD_GL_EXT_fog_coord = has_ext("GL_EXT_fog_coord"); - GLAD_GL_EXT_vertex_array = has_ext("GL_EXT_vertex_array"); - GLAD_GL_ARB_half_float_vertex = has_ext("GL_ARB_half_float_vertex"); - GLAD_GL_EXT_blend_equation_separate = has_ext("GL_EXT_blend_equation_separate"); - GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); - GLAD_GL_NVX_conditional_render = has_ext("GL_NVX_conditional_render"); - GLAD_GL_ARB_multi_draw_indirect = has_ext("GL_ARB_multi_draw_indirect"); - GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); - GLAD_GL_NV_copy_image = has_ext("GL_NV_copy_image"); - GLAD_GL_ARB_fragment_layer_viewport = has_ext("GL_ARB_fragment_layer_viewport"); - GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); - GLAD_GL_ARB_transform_feedback2 = has_ext("GL_ARB_transform_feedback2"); - GLAD_GL_ARB_transform_feedback3 = has_ext("GL_ARB_transform_feedback3"); - GLAD_GL_SGIX_ycrcba = has_ext("GL_SGIX_ycrcba"); - GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); - GLAD_GL_EXT_bgra = has_ext("GL_EXT_bgra"); - GLAD_GL_ARB_sparse_texture_clamp = has_ext("GL_ARB_sparse_texture_clamp"); - GLAD_GL_EXT_pixel_transform = has_ext("GL_EXT_pixel_transform"); - GLAD_GL_ARB_conservative_depth = has_ext("GL_ARB_conservative_depth"); - GLAD_GL_ATI_fragment_shader = has_ext("GL_ATI_fragment_shader"); - GLAD_GL_ARB_vertex_array_object = has_ext("GL_ARB_vertex_array_object"); - GLAD_GL_SUN_triangle_list = has_ext("GL_SUN_triangle_list"); - GLAD_GL_EXT_texture_env_add = has_ext("GL_EXT_texture_env_add"); - GLAD_GL_EXT_packed_depth_stencil = has_ext("GL_EXT_packed_depth_stencil"); - GLAD_GL_EXT_texture_mirror_clamp = has_ext("GL_EXT_texture_mirror_clamp"); - GLAD_GL_NV_multisample_filter_hint = has_ext("GL_NV_multisample_filter_hint"); - GLAD_GL_APPLE_float_pixels = has_ext("GL_APPLE_float_pixels"); - GLAD_GL_ARB_transform_feedback_instanced = has_ext("GL_ARB_transform_feedback_instanced"); - GLAD_GL_SGIX_async = has_ext("GL_SGIX_async"); - GLAD_GL_EXT_texture_compression_latc = has_ext("GL_EXT_texture_compression_latc"); - GLAD_GL_NV_shader_atomic_float = has_ext("GL_NV_shader_atomic_float"); - GLAD_GL_ARB_shading_language_100 = has_ext("GL_ARB_shading_language_100"); - GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); - GLAD_GL_ARB_texture_mirror_clamp_to_edge = has_ext("GL_ARB_texture_mirror_clamp_to_edge"); - GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); - GLAD_GL_NV_bindless_multi_draw_indirect_count = has_ext("GL_NV_bindless_multi_draw_indirect_count"); - GLAD_GL_ARB_ES2_compatibility = has_ext("GL_ARB_ES2_compatibility"); - GLAD_GL_ARB_indirect_parameters = has_ext("GL_ARB_indirect_parameters"); - GLAD_GL_NV_half_float = has_ext("GL_NV_half_float"); - GLAD_GL_ARB_ES3_2_compatibility = has_ext("GL_ARB_ES3_2_compatibility"); - GLAD_GL_ATI_texture_mirror_once = has_ext("GL_ATI_texture_mirror_once"); - GLAD_GL_IBM_rasterpos_clip = has_ext("GL_IBM_rasterpos_clip"); - GLAD_GL_SGIX_shadow = has_ext("GL_SGIX_shadow"); - GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); - GLAD_GL_NV_deep_texture3D = has_ext("GL_NV_deep_texture3D"); - GLAD_GL_ARB_shader_draw_parameters = has_ext("GL_ARB_shader_draw_parameters"); - GLAD_GL_SGIX_calligraphic_fragment = has_ext("GL_SGIX_calligraphic_fragment"); - GLAD_GL_ARB_shader_bit_encoding = has_ext("GL_ARB_shader_bit_encoding"); - GLAD_GL_EXT_compiled_vertex_array = has_ext("GL_EXT_compiled_vertex_array"); - GLAD_GL_NV_depth_buffer_float = has_ext("GL_NV_depth_buffer_float"); - GLAD_GL_NV_occlusion_query = has_ext("GL_NV_occlusion_query"); - GLAD_GL_APPLE_flush_buffer_range = has_ext("GL_APPLE_flush_buffer_range"); - GLAD_GL_ARB_imaging = has_ext("GL_ARB_imaging"); - GLAD_GL_ARB_draw_buffers_blend = has_ext("GL_ARB_draw_buffers_blend"); - GLAD_GL_AMD_gcn_shader = has_ext("GL_AMD_gcn_shader"); - GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); - GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); - GLAD_GL_ARB_shading_language_420pack = has_ext("GL_ARB_shading_language_420pack"); - GLAD_GL_ARB_shader_viewport_layer_array = has_ext("GL_ARB_shader_viewport_layer_array"); - GLAD_GL_ATI_meminfo = has_ext("GL_ATI_meminfo"); - GLAD_GL_EXT_abgr = has_ext("GL_EXT_abgr"); - GLAD_GL_AMD_pinned_memory = has_ext("GL_AMD_pinned_memory"); - GLAD_GL_EXT_texture_snorm = has_ext("GL_EXT_texture_snorm"); - GLAD_GL_SGIX_texture_coordinate_clamp = has_ext("GL_SGIX_texture_coordinate_clamp"); - GLAD_GL_ARB_clear_buffer_object = has_ext("GL_ARB_clear_buffer_object"); - GLAD_GL_ARB_multisample = has_ext("GL_ARB_multisample"); - GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); - GLAD_GL_ARB_sample_shading = has_ext("GL_ARB_sample_shading"); - GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); - GLAD_GL_INTEL_map_texture = has_ext("GL_INTEL_map_texture"); - GLAD_GL_ARB_texture_env_crossbar = has_ext("GL_ARB_texture_env_crossbar"); - GLAD_GL_EXT_422_pixels = has_ext("GL_EXT_422_pixels"); - GLAD_GL_ARB_compute_shader = has_ext("GL_ARB_compute_shader"); - GLAD_GL_EXT_blend_logic_op = has_ext("GL_EXT_blend_logic_op"); - GLAD_GL_IBM_cull_vertex = has_ext("GL_IBM_cull_vertex"); - GLAD_GL_IBM_vertex_array_lists = has_ext("GL_IBM_vertex_array_lists"); - GLAD_GL_ARB_color_buffer_float = has_ext("GL_ARB_color_buffer_float"); - GLAD_GL_ARB_bindless_texture = has_ext("GL_ARB_bindless_texture"); - GLAD_GL_ARB_window_pos = has_ext("GL_ARB_window_pos"); - GLAD_GL_ARB_internalformat_query = has_ext("GL_ARB_internalformat_query"); - GLAD_GL_ARB_shadow = has_ext("GL_ARB_shadow"); - GLAD_GL_ARB_texture_mirrored_repeat = has_ext("GL_ARB_texture_mirrored_repeat"); - GLAD_GL_EXT_shader_image_load_store = has_ext("GL_EXT_shader_image_load_store"); - GLAD_GL_EXT_copy_texture = has_ext("GL_EXT_copy_texture"); - GLAD_GL_NV_register_combiners2 = has_ext("GL_NV_register_combiners2"); - GLAD_GL_SGIX_ycrcb_subsample = has_ext("GL_SGIX_ycrcb_subsample"); - GLAD_GL_SGIX_ir_instrument1 = has_ext("GL_SGIX_ir_instrument1"); - GLAD_GL_NV_draw_texture = has_ext("GL_NV_draw_texture"); - GLAD_GL_EXT_texture_shared_exponent = has_ext("GL_EXT_texture_shared_exponent"); - GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); - GLAD_GL_NV_copy_depth_to_color = has_ext("GL_NV_copy_depth_to_color"); - GLAD_GL_ARB_viewport_array = has_ext("GL_ARB_viewport_array"); - GLAD_GL_ARB_separate_shader_objects = has_ext("GL_ARB_separate_shader_objects"); - GLAD_GL_EXT_depth_bounds_test = has_ext("GL_EXT_depth_bounds_test"); - GLAD_GL_EXT_shared_texture_palette = has_ext("GL_EXT_shared_texture_palette"); - GLAD_GL_ARB_texture_env_add = has_ext("GL_ARB_texture_env_add"); - GLAD_GL_NV_video_capture = has_ext("GL_NV_video_capture"); - GLAD_GL_ARB_sampler_objects = has_ext("GL_ARB_sampler_objects"); - GLAD_GL_ARB_matrix_palette = has_ext("GL_ARB_matrix_palette"); - GLAD_GL_SGIS_texture_color_mask = has_ext("GL_SGIS_texture_color_mask"); - GLAD_GL_EXT_packed_pixels = has_ext("GL_EXT_packed_pixels"); - GLAD_GL_EXT_coordinate_frame = has_ext("GL_EXT_coordinate_frame"); - GLAD_GL_ARB_texture_compression = has_ext("GL_ARB_texture_compression"); - GLAD_GL_APPLE_aux_depth_stencil = has_ext("GL_APPLE_aux_depth_stencil"); - GLAD_GL_ARB_shader_subroutine = has_ext("GL_ARB_shader_subroutine"); - GLAD_GL_EXT_framebuffer_sRGB = has_ext("GL_EXT_framebuffer_sRGB"); - GLAD_GL_ARB_texture_storage_multisample = has_ext("GL_ARB_texture_storage_multisample"); - GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); - GLAD_GL_EXT_vertex_attrib_64bit = has_ext("GL_EXT_vertex_attrib_64bit"); - GLAD_GL_ARB_depth_texture = has_ext("GL_ARB_depth_texture"); - GLAD_GL_NV_shader_buffer_store = has_ext("GL_NV_shader_buffer_store"); - GLAD_GL_OES_query_matrix = has_ext("GL_OES_query_matrix"); - GLAD_GL_MESA_window_pos = has_ext("GL_MESA_window_pos"); - GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); - GLAD_GL_NV_shader_storage_buffer_object = has_ext("GL_NV_shader_storage_buffer_object"); - GLAD_GL_ARB_texture_query_lod = has_ext("GL_ARB_texture_query_lod"); - GLAD_GL_ARB_copy_buffer = has_ext("GL_ARB_copy_buffer"); - GLAD_GL_ARB_shader_image_size = has_ext("GL_ARB_shader_image_size"); - GLAD_GL_NV_shader_atomic_counters = has_ext("GL_NV_shader_atomic_counters"); - GLAD_GL_APPLE_object_purgeable = has_ext("GL_APPLE_object_purgeable"); - GLAD_GL_ARB_occlusion_query = has_ext("GL_ARB_occlusion_query"); - GLAD_GL_INGR_color_clamp = has_ext("GL_INGR_color_clamp"); - GLAD_GL_SGI_color_table = has_ext("GL_SGI_color_table"); - GLAD_GL_NV_gpu_program5_mem_extended = has_ext("GL_NV_gpu_program5_mem_extended"); - GLAD_GL_ARB_texture_cube_map_array = has_ext("GL_ARB_texture_cube_map_array"); - GLAD_GL_SGIX_scalebias_hint = has_ext("GL_SGIX_scalebias_hint"); - GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4"); - GLAD_GL_NV_geometry_program4 = has_ext("GL_NV_geometry_program4"); - GLAD_GL_EXT_framebuffer_multisample_blit_scaled = has_ext("GL_EXT_framebuffer_multisample_blit_scaled"); - GLAD_GL_AMD_debug_output = has_ext("GL_AMD_debug_output"); - GLAD_GL_ARB_texture_border_clamp = has_ext("GL_ARB_texture_border_clamp"); - GLAD_GL_ARB_fragment_coord_conventions = has_ext("GL_ARB_fragment_coord_conventions"); - GLAD_GL_ARB_multitexture = has_ext("GL_ARB_multitexture"); - GLAD_GL_SGIX_polynomial_ffd = has_ext("GL_SGIX_polynomial_ffd"); - GLAD_GL_EXT_provoking_vertex = has_ext("GL_EXT_provoking_vertex"); - GLAD_GL_ARB_point_parameters = has_ext("GL_ARB_point_parameters"); - GLAD_GL_ARB_shader_image_load_store = has_ext("GL_ARB_shader_image_load_store"); - GLAD_GL_ARB_conditional_render_inverted = has_ext("GL_ARB_conditional_render_inverted"); - GLAD_GL_HP_occlusion_test = has_ext("GL_HP_occlusion_test"); - GLAD_GL_ARB_ES3_compatibility = has_ext("GL_ARB_ES3_compatibility"); - GLAD_GL_ARB_texture_barrier = has_ext("GL_ARB_texture_barrier"); - GLAD_GL_ARB_texture_buffer_object_rgb32 = has_ext("GL_ARB_texture_buffer_object_rgb32"); - GLAD_GL_NV_bindless_multi_draw_indirect = has_ext("GL_NV_bindless_multi_draw_indirect"); - GLAD_GL_SGIX_texture_multi_buffer = has_ext("GL_SGIX_texture_multi_buffer"); - GLAD_GL_EXT_transform_feedback = has_ext("GL_EXT_transform_feedback"); - GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); - GLAD_GL_3DFX_multisample = has_ext("GL_3DFX_multisample"); - GLAD_GL_INTEL_fragment_shader_ordering = has_ext("GL_INTEL_fragment_shader_ordering"); - GLAD_GL_ARB_texture_env_dot3 = has_ext("GL_ARB_texture_env_dot3"); - GLAD_GL_NV_gpu_program4 = has_ext("GL_NV_gpu_program4"); - GLAD_GL_NV_gpu_program5 = has_ext("GL_NV_gpu_program5"); - GLAD_GL_NV_float_buffer = has_ext("GL_NV_float_buffer"); - GLAD_GL_SGIS_texture_edge_clamp = has_ext("GL_SGIS_texture_edge_clamp"); - GLAD_GL_ARB_framebuffer_sRGB = has_ext("GL_ARB_framebuffer_sRGB"); - GLAD_GL_SUN_slice_accum = has_ext("GL_SUN_slice_accum"); - GLAD_GL_EXT_index_texture = has_ext("GL_EXT_index_texture"); - GLAD_GL_EXT_shader_image_load_formatted = has_ext("GL_EXT_shader_image_load_formatted"); - GLAD_GL_ARB_geometry_shader4 = has_ext("GL_ARB_geometry_shader4"); - GLAD_GL_EXT_separate_specular_color = has_ext("GL_EXT_separate_specular_color"); - GLAD_GL_AMD_depth_clamp_separate = has_ext("GL_AMD_depth_clamp_separate"); - GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); - GLAD_GL_ARB_sparse_texture2 = has_ext("GL_ARB_sparse_texture2"); - GLAD_GL_SGIX_sprite = has_ext("GL_SGIX_sprite"); - GLAD_GL_ARB_get_program_binary = has_ext("GL_ARB_get_program_binary"); - GLAD_GL_AMD_occlusion_query_event = has_ext("GL_AMD_occlusion_query_event"); - GLAD_GL_SGIS_multisample = has_ext("GL_SGIS_multisample"); - GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object"); - GLAD_GL_ARB_robustness_isolation = has_ext("GL_ARB_robustness_isolation"); - GLAD_GL_ARB_vertex_array_bgra = has_ext("GL_ARB_vertex_array_bgra"); - GLAD_GL_APPLE_vertex_array_range = has_ext("GL_APPLE_vertex_array_range"); - GLAD_GL_AMD_query_buffer_object = has_ext("GL_AMD_query_buffer_object"); - GLAD_GL_NV_register_combiners = has_ext("GL_NV_register_combiners"); - GLAD_GL_ARB_draw_buffers = has_ext("GL_ARB_draw_buffers"); - GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); - GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); - GLAD_GL_SGI_color_matrix = has_ext("GL_SGI_color_matrix"); - GLAD_GL_EXT_cull_vertex = has_ext("GL_EXT_cull_vertex"); - GLAD_GL_EXT_texture_sRGB = has_ext("GL_EXT_texture_sRGB"); - GLAD_GL_APPLE_row_bytes = has_ext("GL_APPLE_row_bytes"); - GLAD_GL_NV_texgen_reflection = has_ext("GL_NV_texgen_reflection"); - GLAD_GL_IBM_multimode_draw_arrays = has_ext("GL_IBM_multimode_draw_arrays"); - GLAD_GL_APPLE_vertex_array_object = has_ext("GL_APPLE_vertex_array_object"); - GLAD_GL_3DFX_texture_compression_FXT1 = has_ext("GL_3DFX_texture_compression_FXT1"); - GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); - GLAD_GL_AMD_conservative_depth = has_ext("GL_AMD_conservative_depth"); - GLAD_GL_ARB_texture_float = has_ext("GL_ARB_texture_float"); - GLAD_GL_ARB_compressed_texture_pixel_storage = has_ext("GL_ARB_compressed_texture_pixel_storage"); - GLAD_GL_SGIS_detail_texture = has_ext("GL_SGIS_detail_texture"); - GLAD_GL_ARB_draw_instanced = has_ext("GL_ARB_draw_instanced"); - GLAD_GL_OES_read_format = has_ext("GL_OES_read_format"); - GLAD_GL_ATI_texture_float = has_ext("GL_ATI_texture_float"); - GLAD_GL_ARB_texture_gather = has_ext("GL_ARB_texture_gather"); - GLAD_GL_AMD_vertex_shader_layer = has_ext("GL_AMD_vertex_shader_layer"); - GLAD_GL_ARB_shading_language_include = has_ext("GL_ARB_shading_language_include"); - GLAD_GL_APPLE_client_storage = has_ext("GL_APPLE_client_storage"); - GLAD_GL_WIN_phong_shading = has_ext("GL_WIN_phong_shading"); - GLAD_GL_INGR_blend_func_separate = has_ext("GL_INGR_blend_func_separate"); - GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); - GLAD_GL_NV_conservative_raster_dilate = has_ext("GL_NV_conservative_raster_dilate"); - GLAD_GL_ATI_vertex_streams = has_ext("GL_ATI_vertex_streams"); - GLAD_GL_ARB_post_depth_coverage = has_ext("GL_ARB_post_depth_coverage"); - GLAD_GL_ARB_texture_non_power_of_two = has_ext("GL_ARB_texture_non_power_of_two"); - GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); - GLAD_GL_EXT_texture_lod_bias = has_ext("GL_EXT_texture_lod_bias"); - GLAD_GL_ARB_gpu_shader_int64 = has_ext("GL_ARB_gpu_shader_int64"); - GLAD_GL_ARB_seamless_cube_map = has_ext("GL_ARB_seamless_cube_map"); - GLAD_GL_ARB_shader_group_vote = has_ext("GL_ARB_shader_group_vote"); - GLAD_GL_NV_vdpau_interop = has_ext("GL_NV_vdpau_interop"); - GLAD_GL_ARB_occlusion_query2 = has_ext("GL_ARB_occlusion_query2"); - GLAD_GL_ARB_internalformat_query2 = has_ext("GL_ARB_internalformat_query2"); - GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); - GLAD_GL_SUN_vertex = has_ext("GL_SUN_vertex"); - GLAD_GL_SGIX_igloo_interface = has_ext("GL_SGIX_igloo_interface"); - GLAD_GL_SGIS_texture_lod = has_ext("GL_SGIS_texture_lod"); - GLAD_GL_NV_vertex_program3 = has_ext("GL_NV_vertex_program3"); - GLAD_GL_ARB_draw_indirect = has_ext("GL_ARB_draw_indirect"); - GLAD_GL_NV_vertex_program4 = has_ext("GL_NV_vertex_program4"); - GLAD_GL_AMD_transform_feedback3_lines_triangles = has_ext("GL_AMD_transform_feedback3_lines_triangles"); - GLAD_GL_SGIS_fog_function = has_ext("GL_SGIS_fog_function"); - GLAD_GL_EXT_x11_sync_object = has_ext("GL_EXT_x11_sync_object"); - GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); - GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); - GLAD_GL_ARB_compute_variable_group_size = has_ext("GL_ARB_compute_variable_group_size"); - GLAD_GL_OES_fixed_point = has_ext("GL_OES_fixed_point"); - GLAD_GL_NV_blend_square = has_ext("GL_NV_blend_square"); - GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample"); - GLAD_GL_ARB_gpu_shader5 = has_ext("GL_ARB_gpu_shader5"); - GLAD_GL_SGIS_texture4D = has_ext("GL_SGIS_texture4D"); - GLAD_GL_EXT_texture3D = has_ext("GL_EXT_texture3D"); - GLAD_GL_EXT_multisample = has_ext("GL_EXT_multisample"); - GLAD_GL_EXT_secondary_color = has_ext("GL_EXT_secondary_color"); - GLAD_GL_ARB_texture_filter_minmax = has_ext("GL_ARB_texture_filter_minmax"); - GLAD_GL_ATI_vertex_array_object = has_ext("GL_ATI_vertex_array_object"); - GLAD_GL_ARB_parallel_shader_compile = has_ext("GL_ARB_parallel_shader_compile"); - GLAD_GL_NVX_gpu_memory_info = has_ext("GL_NVX_gpu_memory_info"); - GLAD_GL_ARB_sparse_texture = has_ext("GL_ARB_sparse_texture"); - GLAD_GL_SGIS_point_line_texgen = has_ext("GL_SGIS_point_line_texgen"); - GLAD_GL_ARB_sample_locations = has_ext("GL_ARB_sample_locations"); - GLAD_GL_ARB_sparse_buffer = has_ext("GL_ARB_sparse_buffer"); - GLAD_GL_EXT_draw_range_elements = has_ext("GL_EXT_draw_range_elements"); - GLAD_GL_SGIX_blend_alpha_minmax = has_ext("GL_SGIX_blend_alpha_minmax"); - GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); - free_exts(); - return 1; -} - -static void find_coreGL(void) { - - /* Thank you @elmindreda - * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 - * https://github.com/glfw/glfw/blob/master/src/context.c#L36 - */ - int i, major, minor; - - const char* version; - const char* prefixes[] = { - "OpenGL ES-CM ", - "OpenGL ES-CL ", - "OpenGL ES ", - NULL - }; - - version = (const char*) glGetString(GL_VERSION); - if (!version) return; - - for (i = 0; prefixes[i]; i++) { - const size_t length = strlen(prefixes[i]); - if (strncmp(version, prefixes[i], length) == 0) { - version += length; - break; - } - } - -/* PR #18 */ -#ifdef _MSC_VER - sscanf_s(version, "%d.%d", &major, &minor); -#else - sscanf(version, "%d.%d", &major, &minor); -#endif - - GLVersion.major = major; GLVersion.minor = minor; - max_loaded_major = major; max_loaded_minor = minor; - GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; - GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; - GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; - GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; - GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; - GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; - GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; - GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; - GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; - GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; - GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; - GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; - if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) { - max_loaded_major = 3; - max_loaded_minor = 3; - } -} - -int gladLoadGLLoader(GLADloadproc load) { - GLVersion.major = 0; GLVersion.minor = 0; - glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - if(glGetString == NULL) return 0; - if(glGetString(GL_VERSION) == NULL) return 0; - find_coreGL(); - load_GL_VERSION_1_0(load); - load_GL_VERSION_1_1(load); - load_GL_VERSION_1_2(load); - load_GL_VERSION_1_3(load); - load_GL_VERSION_1_4(load); - load_GL_VERSION_1_5(load); - load_GL_VERSION_2_0(load); - load_GL_VERSION_2_1(load); - load_GL_VERSION_3_0(load); - load_GL_VERSION_3_1(load); - load_GL_VERSION_3_2(load); - load_GL_VERSION_3_3(load); - - if (!find_extensionsGL()) return 0; - load_GL_APPLE_element_array(load); - load_GL_AMD_multi_draw_indirect(load); - load_GL_SGIX_tag_sample_buffer(load); - load_GL_NV_point_sprite(load); - load_GL_ATI_separate_stencil(load); - load_GL_EXT_texture_buffer_object(load); - load_GL_ARB_vertex_blend(load); - load_GL_OVR_multiview(load); - load_GL_ARB_program_interface_query(load); - load_GL_EXT_index_func(load); - load_GL_NV_shader_buffer_load(load); - load_GL_EXT_color_subtable(load); - load_GL_SUNX_constant_data(load); - load_GL_EXT_multi_draw_arrays(load); - load_GL_ARB_shader_atomic_counters(load); - load_GL_NV_conditional_render(load); - load_GL_MESA_resize_buffers(load); - load_GL_ARB_texture_view(load); - load_GL_ARB_map_buffer_range(load); - load_GL_EXT_convolution(load); - load_GL_NV_vertex_attrib_integer_64bit(load); - load_GL_EXT_paletted_texture(load); - load_GL_ARB_texture_buffer_object(load); - load_GL_ATI_pn_triangles(load); - load_GL_SGIX_flush_raster(load); - load_GL_EXT_light_texture(load); - load_GL_HP_image_transform(load); - load_GL_AMD_draw_buffers_blend(load); - load_GL_APPLE_texture_range(load); - load_GL_EXT_texture_array(load); - load_GL_NV_texture_barrier(load); - load_GL_ARB_vertex_type_2_10_10_10_rev(load); - load_GL_3DFX_tbuffer(load); - load_GL_GREMEDY_frame_terminator(load); - load_GL_ARB_blend_func_extended(load); - load_GL_EXT_separate_shader_objects(load); - load_GL_NV_texture_multisample(load); - load_GL_ARB_shader_objects(load); - load_GL_ARB_framebuffer_object(load); - load_GL_ATI_envmap_bumpmap(load); - load_GL_ATI_map_object_buffer(load); - load_GL_ARB_robustness(load); - load_GL_NV_pixel_data_range(load); - load_GL_EXT_framebuffer_blit(load); - load_GL_ARB_gpu_shader_fp64(load); - load_GL_NV_command_list(load); - load_GL_EXT_vertex_weighting(load); - load_GL_GREMEDY_string_marker(load); - load_GL_EXT_subtexture(load); - load_GL_EXT_gpu_program_parameters(load); - load_GL_NV_evaluators(load); - load_GL_SGIS_texture_filter4(load); - load_GL_AMD_performance_monitor(load); - load_GL_EXT_stencil_clear_tag(load); - load_GL_NV_present_video(load); - load_GL_SGIX_framezoom(load); - load_GL_ARB_draw_elements_base_vertex(load); - load_GL_NV_transform_feedback(load); - load_GL_NV_fragment_program(load); - load_GL_AMD_stencil_operation_extended(load); - load_GL_ARB_instanced_arrays(load); - load_GL_EXT_polygon_offset(load); - load_GL_KHR_robustness(load); - load_GL_AMD_sparse_texture(load); - load_GL_ARB_clip_control(load); - load_GL_NV_fragment_coverage_to_color(load); - load_GL_NV_fence(load); - load_GL_ARB_texture_buffer_range(load); - load_GL_SUN_mesh_array(load); - load_GL_ARB_vertex_attrib_binding(load); - load_GL_ARB_framebuffer_no_attachments(load); - load_GL_ARB_cl_event(load); - load_GL_OES_single_precision(load); - load_GL_NV_primitive_restart(load); - load_GL_SUN_global_alpha(load); - load_GL_EXT_texture_object(load); - load_GL_AMD_name_gen_delete(load); - load_GL_ARB_buffer_storage(load); - load_GL_APPLE_vertex_program_evaluators(load); - load_GL_ARB_multi_bind(load); - load_GL_SGIX_list_priority(load); - load_GL_NV_vertex_buffer_unified_memory(load); - load_GL_NV_blend_equation_advanced(load); - load_GL_SGIS_sharpen_texture(load); - load_GL_ARB_vertex_program(load); - load_GL_ARB_vertex_buffer_object(load); - load_GL_NV_vertex_array_range(load); - load_GL_SGIX_fragment_lighting(load); - load_GL_NV_framebuffer_multisample_coverage(load); - load_GL_EXT_timer_query(load); - load_GL_NV_bindless_texture(load); - load_GL_KHR_debug(load); - load_GL_ATI_vertex_attrib_array_object(load); - load_GL_EXT_geometry_shader4(load); - load_GL_EXT_bindable_uniform(load); - load_GL_KHR_blend_equation_advanced(load); - load_GL_ATI_element_array(load); - load_GL_SGIX_reference_plane(load); - load_GL_EXT_stencil_two_side(load); - load_GL_NV_explicit_multisample(load); - load_GL_IBM_static_data(load); - load_GL_EXT_texture_perturb_normal(load); - load_GL_EXT_point_parameters(load); - load_GL_PGI_misc_hints(load); - load_GL_ARB_vertex_shader(load); - load_GL_ARB_tessellation_shader(load); - load_GL_EXT_draw_buffers2(load); - load_GL_ARB_vertex_attrib_64bit(load); - load_GL_EXT_texture_filter_minmax(load); - load_GL_AMD_interleaved_elements(load); - load_GL_ARB_fragment_program(load); - load_GL_ARB_texture_storage(load); - load_GL_ARB_copy_image(load); - load_GL_SGIS_pixel_texture(load); - load_GL_SGIX_instruments(load); - load_GL_ARB_shader_storage_buffer_object(load); - load_GL_EXT_blend_minmax(load); - load_GL_ARB_base_instance(load); - load_GL_ARB_ES3_1_compatibility(load); - load_GL_EXT_texture_integer(load); - load_GL_ARB_texture_multisample(load); - load_GL_AMD_gpu_shader_int64(load); - load_GL_AMD_vertex_shader_tessellator(load); - load_GL_ARB_invalidate_subdata(load); - load_GL_EXT_index_material(load); - load_GL_INTEL_parallel_arrays(load); - load_GL_ATI_draw_buffers(load); - load_GL_SGIX_pixel_texture(load); - load_GL_ARB_timer_query(load); - load_GL_NV_parameter_buffer_object(load); - load_GL_ARB_direct_state_access(load); - load_GL_ARB_uniform_buffer_object(load); - load_GL_NV_transform_feedback2(load); - load_GL_EXT_blend_color(load); - load_GL_EXT_histogram(load); - load_GL_ARB_get_texture_sub_image(load); - load_GL_SGIS_point_parameters(load); - load_GL_EXT_direct_state_access(load); - load_GL_AMD_sample_positions(load); - load_GL_NV_vertex_program(load); - load_GL_EXT_vertex_shader(load); - load_GL_EXT_blend_func_separate(load); - load_GL_APPLE_fence(load); - load_GL_OES_byte_coordinates(load); - load_GL_ARB_transpose_matrix(load); - load_GL_ARB_provoking_vertex(load); - load_GL_EXT_fog_coord(load); - load_GL_EXT_vertex_array(load); - load_GL_EXT_blend_equation_separate(load); - load_GL_NV_framebuffer_mixed_samples(load); - load_GL_NVX_conditional_render(load); - load_GL_ARB_multi_draw_indirect(load); - load_GL_EXT_raster_multisample(load); - load_GL_NV_copy_image(load); - load_GL_INTEL_framebuffer_CMAA(load); - load_GL_ARB_transform_feedback2(load); - load_GL_ARB_transform_feedback3(load); - load_GL_EXT_debug_marker(load); - load_GL_EXT_pixel_transform(load); - load_GL_ATI_fragment_shader(load); - load_GL_ARB_vertex_array_object(load); - load_GL_SUN_triangle_list(load); - load_GL_ARB_transform_feedback_instanced(load); - load_GL_SGIX_async(load); - load_GL_INTEL_performance_query(load); - load_GL_NV_gpu_shader5(load); - load_GL_NV_bindless_multi_draw_indirect_count(load); - load_GL_ARB_ES2_compatibility(load); - load_GL_ARB_indirect_parameters(load); - load_GL_NV_half_float(load); - load_GL_ARB_ES3_2_compatibility(load); - load_GL_EXT_polygon_offset_clamp(load); - load_GL_EXT_compiled_vertex_array(load); - load_GL_NV_depth_buffer_float(load); - load_GL_NV_occlusion_query(load); - load_GL_APPLE_flush_buffer_range(load); - load_GL_ARB_imaging(load); - load_GL_ARB_draw_buffers_blend(load); - load_GL_ARB_clear_buffer_object(load); - load_GL_ARB_multisample(load); - load_GL_EXT_debug_label(load); - load_GL_ARB_sample_shading(load); - load_GL_NV_internalformat_sample_query(load); - load_GL_INTEL_map_texture(load); - load_GL_ARB_compute_shader(load); - load_GL_IBM_vertex_array_lists(load); - load_GL_ARB_color_buffer_float(load); - load_GL_ARB_bindless_texture(load); - load_GL_ARB_window_pos(load); - load_GL_ARB_internalformat_query(load); - load_GL_EXT_shader_image_load_store(load); - load_GL_EXT_copy_texture(load); - load_GL_NV_register_combiners2(load); - load_GL_NV_draw_texture(load); - load_GL_EXT_draw_instanced(load); - load_GL_ARB_viewport_array(load); - load_GL_ARB_separate_shader_objects(load); - load_GL_EXT_depth_bounds_test(load); - load_GL_NV_video_capture(load); - load_GL_ARB_sampler_objects(load); - load_GL_ARB_matrix_palette(load); - load_GL_SGIS_texture_color_mask(load); - load_GL_EXT_coordinate_frame(load); - load_GL_ARB_texture_compression(load); - load_GL_ARB_shader_subroutine(load); - load_GL_ARB_texture_storage_multisample(load); - load_GL_EXT_vertex_attrib_64bit(load); - load_GL_OES_query_matrix(load); - load_GL_MESA_window_pos(load); - load_GL_ARB_copy_buffer(load); - load_GL_APPLE_object_purgeable(load); - load_GL_ARB_occlusion_query(load); - load_GL_SGI_color_table(load); - load_GL_EXT_gpu_shader4(load); - load_GL_NV_geometry_program4(load); - load_GL_AMD_debug_output(load); - load_GL_ARB_multitexture(load); - load_GL_SGIX_polynomial_ffd(load); - load_GL_EXT_provoking_vertex(load); - load_GL_ARB_point_parameters(load); - load_GL_ARB_shader_image_load_store(load); - load_GL_ARB_texture_barrier(load); - load_GL_NV_bindless_multi_draw_indirect(load); - load_GL_EXT_transform_feedback(load); - load_GL_NV_gpu_program4(load); - load_GL_NV_gpu_program5(load); - load_GL_ARB_geometry_shader4(load); - load_GL_NV_conservative_raster(load); - load_GL_SGIX_sprite(load); - load_GL_ARB_get_program_binary(load); - load_GL_AMD_occlusion_query_event(load); - load_GL_SGIS_multisample(load); - load_GL_EXT_framebuffer_object(load); - load_GL_APPLE_vertex_array_range(load); - load_GL_NV_register_combiners(load); - load_GL_ARB_draw_buffers(load); - load_GL_ARB_clear_texture(load); - load_GL_ARB_debug_output(load); - load_GL_EXT_cull_vertex(load); - load_GL_IBM_multimode_draw_arrays(load); - load_GL_APPLE_vertex_array_object(load); - load_GL_SGIS_detail_texture(load); - load_GL_ARB_draw_instanced(load); - load_GL_ARB_shading_language_include(load); - load_GL_INGR_blend_func_separate(load); - load_GL_NV_path_rendering(load); - load_GL_NV_conservative_raster_dilate(load); - load_GL_ATI_vertex_streams(load); - load_GL_ARB_gpu_shader_int64(load); - load_GL_NV_vdpau_interop(load); - load_GL_ARB_internalformat_query2(load); - load_GL_SUN_vertex(load); - load_GL_SGIX_igloo_interface(load); - load_GL_ARB_draw_indirect(load); - load_GL_NV_vertex_program4(load); - load_GL_SGIS_fog_function(load); - load_GL_EXT_x11_sync_object(load); - load_GL_ARB_sync(load); - load_GL_NV_sample_locations(load); - load_GL_ARB_compute_variable_group_size(load); - load_GL_OES_fixed_point(load); - load_GL_EXT_framebuffer_multisample(load); - load_GL_SGIS_texture4D(load); - load_GL_EXT_texture3D(load); - load_GL_EXT_multisample(load); - load_GL_EXT_secondary_color(load); - load_GL_ATI_vertex_array_object(load); - load_GL_ARB_parallel_shader_compile(load); - load_GL_ARB_sparse_texture(load); - load_GL_ARB_sample_locations(load); - load_GL_ARB_sparse_buffer(load); - load_GL_EXT_draw_range_elements(load); - return GLVersion.major != 0 || GLVersion.minor != 0; -} - diff --git a/examples/oculus_glfw_sample/glad.h b/examples/oculus_glfw_sample/glad.h index 56bb622d8..db1516f8d 100644 --- a/examples/oculus_glfw_sample/glad.h +++ b/examples/oculus_glfw_sample/glad.h @@ -16,6 +16,10 @@ Too many extensions */ +////////////////////////////////////////////////////////////////////////////// +// +// INCLUDE SECTION +// #ifndef __glad_h_ #define __glad_h_ @@ -14239,3 +14243,7677 @@ GLAPI int GLAD_GL_KHR_context_flush_control; #endif #endif + +////////////////////////////////////////////////////////////////////////////// +// +// IMPLEMENTATION SECTION +// + +#ifdef GLAD_IMPLEMENTATION + +#include +#include +#include + +struct gladGLversionStruct GLVersion; + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define _GLAD_IS_SOME_NEW_VERSION 1 +#endif + +static int max_loaded_major; +static int max_loaded_minor; + +static const char *exts = NULL; +static int num_exts_i = 0; +static const char **exts_i = NULL; + +static int get_exts(void) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + exts = (const char *)glGetString(GL_EXTENSIONS); +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + + num_exts_i = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); + if (num_exts_i > 0) { + exts_i = (const char **)realloc((void *)exts_i, num_exts_i * sizeof *exts_i); + } + + if (exts_i == NULL) { + return 0; + } + + for(index = 0; index < num_exts_i; index++) { + exts_i[index] = (const char*)glGetStringi(GL_EXTENSIONS, index); + } + } +#endif + return 1; +} + +static void free_exts(void) { + if (exts_i != NULL) { + free(exts_i); + exts_i = NULL; + } +} + +static int has_ext(const char *ext) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + + if(strcmp(e, ext) == 0) { + return 1; + } + } + } +#endif + + return 0; +} +int GLAD_GL_VERSION_1_0; +int GLAD_GL_VERSION_1_1; +int GLAD_GL_VERSION_1_2; +int GLAD_GL_VERSION_1_3; +int GLAD_GL_VERSION_1_4; +int GLAD_GL_VERSION_1_5; +int GLAD_GL_VERSION_2_0; +int GLAD_GL_VERSION_2_1; +int GLAD_GL_VERSION_3_0; +int GLAD_GL_VERSION_3_1; +int GLAD_GL_VERSION_3_2; +int GLAD_GL_VERSION_3_3; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +PFNGLBINDSAMPLERPROC glad_glBindSampler; +PFNGLLINEWIDTHPROC glad_glLineWidth; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +PFNGLCOMPILESHADERPROC glad_glCompileShader; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +PFNGLENABLEIPROC glad_glEnablei; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +PFNGLCREATESHADERPROC glad_glCreateShader; +PFNGLISBUFFERPROC glad_glIsBuffer; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +PFNGLHINTPROC glad_glHint; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +PFNGLPOINTSIZEPROC glad_glPointSize; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +PFNGLWAITSYNCPROC glad_glWaitSync; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +PFNGLUNIFORM3IPROC glad_glUniform3i; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +PFNGLUNIFORM3FPROC glad_glUniform3f; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +PFNGLCOLORMASKIPROC glad_glColorMaski; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +PFNGLDRAWARRAYSPROC glad_glDrawArrays; +PFNGLUNIFORM1UIPROC glad_glUniform1ui; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +PFNGLCLEARPROC glad_glClear; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +PFNGLISENABLEDPROC glad_glIsEnabled; +PFNGLSTENCILOPPROC glad_glStencilOp; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +PFNGLGETQUERYIVPROC glad_glGetQueryiv; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +PFNGLISSHADERPROC glad_glIsShader; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +PFNGLENABLEPROC glad_glEnable; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +PFNGLFLUSHPROC glad_glFlush; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +PFNGLFENCESYNCPROC glad_glFenceSync; +PFNGLCOLORP3UIPROC glad_glColorP3ui; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +PFNGLGENSAMPLERSPROC glad_glGenSamplers; +PFNGLCLAMPCOLORPROC glad_glClampColor; +PFNGLUNIFORM4IVPROC glad_glUniform4iv; +PFNGLCLEARSTENCILPROC glad_glClearStencil; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +PFNGLGENTEXTURESPROC glad_glGenTextures; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +PFNGLISSYNCPROC glad_glIsSync; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +PFNGLUNIFORM2IPROC glad_glUniform2i; +PFNGLUNIFORM2FPROC glad_glUniform2f; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +PFNGLGENQUERIESPROC glad_glGenQueries; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +PFNGLISENABLEDIPROC glad_glIsEnabledi; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +PFNGLUNIFORM2IVPROC glad_glUniform2iv; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +PFNGLGETSHADERIVPROC glad_glGetShaderiv; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +PFNGLGETDOUBLEVPROC glad_glGetDoublev; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +PFNGLUNIFORM3FVPROC glad_glUniform3fv; +PFNGLDEPTHRANGEPROC glad_glDepthRange; +PFNGLMAPBUFFERPROC glad_glMapBuffer; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +PFNGLDELETESYNCPROC glad_glDeleteSync; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +PFNGLUNIFORM3IVPROC glad_glUniform3iv; +PFNGLPOLYGONMODEPROC glad_glPolygonMode; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +PFNGLUSEPROGRAMPROC glad_glUseProgram; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +PFNGLFINISHPROC glad_glFinish; +PFNGLDELETESHADERPROC glad_glDeleteShader; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +PFNGLVIEWPORTPROC glad_glViewport; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +PFNGLUNIFORM2UIPROC glad_glUniform2ui; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +PFNGLCLEARDEPTHPROC glad_glClearDepth; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +PFNGLTEXBUFFERPROC glad_glTexBuffer; +PFNGLPIXELSTOREIPROC glad_glPixelStorei; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +PFNGLPIXELSTOREFPROC glad_glPixelStoref; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +PFNGLLINKPROGRAMPROC glad_glLinkProgram; +PFNGLBINDTEXTUREPROC glad_glBindTexture; +PFNGLGETSTRINGPROC glad_glGetString; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +PFNGLDETACHSHADERPROC glad_glDetachShader; +PFNGLENDQUERYPROC glad_glEndQuery; +PFNGLNORMALP3UIPROC glad_glNormalP3ui; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +PFNGLUNIFORM1FPROC glad_glUniform1f; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +PFNGLUNIFORM1IPROC glad_glUniform1i; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +PFNGLDISABLEPROC glad_glDisable; +PFNGLLOGICOPPROC glad_glLogicOp; +PFNGLUNIFORM4UIPROC glad_glUniform4ui; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +PFNGLCULLFACEPROC glad_glCullFace; +PFNGLGETSTRINGIPROC glad_glGetStringi; +PFNGLATTACHSHADERPROC glad_glAttachShader; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +PFNGLDRAWELEMENTSPROC glad_glDrawElements; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +PFNGLUNIFORM1IVPROC glad_glUniform1iv; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +PFNGLREADBUFFERPROC glad_glReadBuffer; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +PFNGLBLENDCOLORPROC glad_glBlendColor; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +PFNGLISPROGRAMPROC glad_glIsProgram; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +PFNGLUNIFORM4IPROC glad_glUniform4i; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +PFNGLREADPIXELSPROC glad_glReadPixels; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +PFNGLUNIFORM4FPROC glad_glUniform4f; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +PFNGLSTENCILFUNCPROC glad_glStencilFunc; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +PFNGLCOLORP4UIPROC glad_glColorP4ui; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +PFNGLGENBUFFERSPROC glad_glGenBuffers; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +PFNGLBLENDFUNCPROC glad_glBlendFunc; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +PFNGLSCISSORPROC glad_glScissor; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +PFNGLCLEARCOLORPROC glad_glClearColor; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +PFNGLUNIFORM3UIPROC glad_glUniform3ui; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +PFNGLUNIFORM2FVPROC glad_glUniform2fv; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +PFNGLDEPTHFUNCPROC glad_glDepthFunc; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +PFNGLCOLORMASKPROC glad_glColorMask; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +PFNGLUNIFORM4FVPROC glad_glUniform4fv; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +PFNGLISSAMPLERPROC glad_glIsSampler; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +PFNGLDISABLEIPROC glad_glDisablei; +PFNGLSHADERSOURCEPROC glad_glShaderSource; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +PFNGLGETSYNCIVPROC glad_glGetSynciv; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +PFNGLBEGINQUERYPROC glad_glBeginQuery; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +PFNGLBINDBUFFERPROC glad_glBindBuffer; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +PFNGLBUFFERDATAPROC glad_glBufferData; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +PFNGLGETERRORPROC glad_glGetError; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +PFNGLGETFLOATVPROC glad_glGetFloatv; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +PFNGLGETINTEGERVPROC glad_glGetIntegerv; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +PFNGLISQUERYPROC glad_glIsQuery; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +PFNGLSTENCILMASKPROC glad_glStencilMask; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +PFNGLISTEXTUREPROC glad_glIsTexture; +PFNGLUNIFORM1FVPROC glad_glUniform1fv; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +PFNGLDEPTHMASKPROC glad_glDepthMask; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +PFNGLFRONTFACEPROC glad_glFrontFace; +int GLAD_GL_SGIX_pixel_tiles; +int GLAD_GL_NV_point_sprite; +int GLAD_GL_APPLE_element_array; +int GLAD_GL_AMD_multi_draw_indirect; +int GLAD_GL_EXT_blend_subtract; +int GLAD_GL_SGIX_tag_sample_buffer; +int GLAD_GL_IBM_texture_mirrored_repeat; +int GLAD_GL_APPLE_transform_hint; +int GLAD_GL_ATI_separate_stencil; +int GLAD_GL_NV_shader_atomic_int64; +int GLAD_GL_NV_vertex_program2_option; +int GLAD_GL_EXT_texture_buffer_object; +int GLAD_GL_ARB_vertex_blend; +int GLAD_GL_OVR_multiview; +int GLAD_GL_ARB_program_interface_query; +int GLAD_GL_EXT_misc_attribute; +int GLAD_GL_NV_multisample_coverage; +int GLAD_GL_ARB_shading_language_packing; +int GLAD_GL_EXT_texture_cube_map; +int GLAD_GL_NV_viewport_array2; +int GLAD_GL_KHR_robustness; +int GLAD_GL_EXT_index_func; +int GLAD_GL_OES_compressed_paletted_texture; +int GLAD_GL_NV_depth_clamp; +int GLAD_GL_NV_shader_buffer_load; +int GLAD_GL_EXT_color_subtable; +int GLAD_GL_SUNX_constant_data; +int GLAD_GL_EXT_multi_draw_arrays; +int GLAD_GL_ARB_shader_atomic_counters; +int GLAD_GL_ARB_arrays_of_arrays; +int GLAD_GL_NV_conditional_render; +int GLAD_GL_EXT_texture_env_combine; +int GLAD_GL_AMD_depth_clamp_separate; +int GLAD_GL_SGIX_async_histogram; +int GLAD_GL_MESA_resize_buffers; +int GLAD_GL_ARB_sample_shading; +int GLAD_GL_NV_texture_env_combine4; +int GLAD_GL_ARB_texture_view; +int GLAD_GL_ARB_texture_env_combine; +int GLAD_GL_ARB_map_buffer_range; +int GLAD_GL_EXT_convolution; +int GLAD_GL_NV_compute_program5; +int GLAD_GL_EXT_paletted_texture; +int GLAD_GL_ARB_texture_buffer_object; +int GLAD_GL_SUN_triangle_list; +int GLAD_GL_SGIX_resample; +int GLAD_GL_SGIX_flush_raster; +int GLAD_GL_EXT_light_texture; +int GLAD_GL_ARB_point_sprite; +int GLAD_GL_ARB_sparse_texture2; +int GLAD_GL_ARB_half_float_pixel; +int GLAD_GL_NV_tessellation_program5; +int GLAD_GL_REND_screen_coordinates; +int GLAD_GL_HP_image_transform; +int GLAD_GL_EXT_packed_float; +int GLAD_GL_ATI_vertex_attrib_array_object; +int GLAD_GL_SGIX_vertex_preclip; +int GLAD_GL_SGIX_texture_scale_bias; +int GLAD_GL_AMD_draw_buffers_blend; +int GLAD_GL_APPLE_texture_range; +int GLAD_GL_SGIX_framezoom; +int GLAD_GL_NV_texture_barrier; +int GLAD_GL_ARB_texture_query_levels; +int GLAD_GL_EXT_blend_logic_op; +int GLAD_GL_EXT_texture_swizzle; +int GLAD_GL_ARB_texture_rg; +int GLAD_GL_ARB_vertex_type_2_10_10_10_rev; +int GLAD_GL_ARB_fragment_shader; +int GLAD_GL_3DFX_tbuffer; +int GLAD_GL_SGIX_ycrcb; +int GLAD_GL_IBM_cull_vertex; +int GLAD_GL_EXT_separate_shader_objects; +int GLAD_GL_NV_texture_multisample; +int GLAD_GL_ARB_shader_objects; +int GLAD_GL_ARB_framebuffer_object; +int GLAD_GL_ATI_envmap_bumpmap; +int GLAD_GL_ARB_robust_buffer_access_behavior; +int GLAD_GL_ARB_shader_stencil_export; +int GLAD_GL_AMD_sample_positions; +int GLAD_GL_ARB_enhanced_layouts; +int GLAD_GL_ARB_texture_rectangle; +int GLAD_GL_SGI_texture_color_table; +int GLAD_GL_ATI_map_object_buffer; +int GLAD_GL_ARB_robustness; +int GLAD_GL_NV_pixel_data_range; +int GLAD_GL_EXT_framebuffer_blit; +int GLAD_GL_ARB_gpu_shader_fp64; +int GLAD_GL_NV_command_list; +int GLAD_GL_ARB_window_pos; +int GLAD_GL_ARB_robustness_isolation; +int GLAD_GL_GREMEDY_string_marker; +int GLAD_GL_ARB_texture_compression_bptc; +int GLAD_GL_EXT_subtexture; +int GLAD_GL_EXT_pixel_transform_color_table; +int GLAD_GL_EXT_texture_compression_rgtc; +int GLAD_GL_ARB_shadow; +int GLAD_GL_SGIX_depth_pass_instrument; +int GLAD_GL_NVX_conditional_render; +int GLAD_GL_NV_evaluators; +int GLAD_GL_SGIS_texture_filter4; +int GLAD_GL_AMD_performance_monitor; +int GLAD_GL_NV_geometry_shader4; +int GLAD_GL_EXT_stencil_clear_tag; +int GLAD_GL_NV_vertex_program1_1; +int GLAD_GL_NV_present_video; +int GLAD_GL_ARB_texture_compression_rgtc; +int GLAD_GL_ARB_texture_filter_minmax; +int GLAD_GL_HP_convolution_border_modes; +int GLAD_GL_EXT_gpu_program_parameters; +int GLAD_GL_SGIX_list_priority; +int GLAD_GL_ARB_stencil_texturing; +int GLAD_GL_ARB_shader_clock; +int GLAD_GL_NV_shader_atomic_fp16_vector; +int GLAD_GL_SGIX_fog_offset; +int GLAD_GL_ARB_draw_elements_base_vertex; +int GLAD_GL_INGR_interlace_read; +int GLAD_GL_NV_transform_feedback; +int GLAD_GL_EXT_post_depth_coverage; +int GLAD_GL_ARB_debug_output; +int GLAD_GL_AMD_stencil_operation_extended; +int GLAD_GL_ARB_compatibility; +int GLAD_GL_ARB_instanced_arrays; +int GLAD_GL_ARB_get_texture_sub_image; +int GLAD_GL_NV_vertex_array_range2; +int GLAD_GL_ARB_texture_stencil8; +int GLAD_GL_AMD_sparse_texture; +int GLAD_GL_ARB_clip_control; +int GLAD_GL_NV_fragment_coverage_to_color; +int GLAD_GL_NV_fence; +int GLAD_GL_ARB_texture_buffer_range; +int GLAD_GL_SUN_mesh_array; +int GLAD_GL_ARB_vertex_attrib_binding; +int GLAD_GL_EXT_texture_compression_s3tc; +int GLAD_GL_ARB_cl_event; +int GLAD_GL_ARB_derivative_control; +int GLAD_GL_NV_packed_depth_stencil; +int GLAD_GL_OES_single_precision; +int GLAD_GL_NV_primitive_restart; +int GLAD_GL_ARB_fragment_shader_interlock; +int GLAD_GL_EXT_texture_object; +int GLAD_GL_AMD_name_gen_delete; +int GLAD_GL_NV_texture_compression_vtc; +int GLAD_GL_NV_sample_mask_override_coverage; +int GLAD_GL_NV_texture_shader3; +int GLAD_GL_NV_texture_shader2; +int GLAD_GL_EXT_texture; +int GLAD_GL_ARB_buffer_storage; +int GLAD_GL_AMD_shader_atomic_counter_ops; +int GLAD_GL_APPLE_vertex_program_evaluators; +int GLAD_GL_ARB_multi_bind; +int GLAD_GL_ARB_explicit_uniform_location; +int GLAD_GL_ARB_depth_buffer_float; +int GLAD_GL_NV_path_rendering_shared_edge; +int GLAD_GL_SGIX_shadow_ambient; +int GLAD_GL_ARB_texture_cube_map; +int GLAD_GL_AMD_vertex_shader_viewport_index; +int GLAD_GL_EXT_shader_integer_mix; +int GLAD_GL_NV_vertex_buffer_unified_memory; +int GLAD_GL_EXT_fog_coord; +int GLAD_GL_EXT_texture_env_dot3; +int GLAD_GL_ATI_texture_env_combine3; +int GLAD_GL_ARB_map_buffer_alignment; +int GLAD_GL_NV_blend_equation_advanced; +int GLAD_GL_SGIS_sharpen_texture; +int GLAD_GL_KHR_robust_buffer_access_behavior; +int GLAD_GL_ARB_pipeline_statistics_query; +int GLAD_GL_ARB_vertex_program; +int GLAD_GL_ARB_texture_rgb10_a2ui; +int GLAD_GL_OML_interlace; +int GLAD_GL_ATI_pixel_format_float; +int GLAD_GL_ARB_vertex_buffer_object; +int GLAD_GL_EXT_shadow_funcs; +int GLAD_GL_ATI_text_fragment_shader; +int GLAD_GL_NV_vertex_array_range; +int GLAD_GL_SGIX_fragment_lighting; +int GLAD_GL_NV_texture_expand_normal; +int GLAD_GL_NV_framebuffer_multisample_coverage; +int GLAD_GL_ARB_framebuffer_no_attachments; +int GLAD_GL_EXT_timer_query; +int GLAD_GL_EXT_vertex_array_bgra; +int GLAD_GL_NV_bindless_texture; +int GLAD_GL_KHR_debug; +int GLAD_GL_SGIS_texture_border_clamp; +int GLAD_GL_OML_subsample; +int GLAD_GL_SGIX_clipmap; +int GLAD_GL_EXT_geometry_shader4; +int GLAD_GL_ARB_shader_texture_image_samples; +int GLAD_GL_MESA_ycbcr_texture; +int GLAD_GL_MESAX_texture_stack; +int GLAD_GL_AMD_seamless_cubemap_per_texture; +int GLAD_GL_EXT_bindable_uniform; +int GLAD_GL_KHR_texture_compression_astc_hdr; +int GLAD_GL_ARB_shader_ballot; +int GLAD_GL_KHR_blend_equation_advanced; +int GLAD_GL_ARB_fragment_program_shadow; +int GLAD_GL_ATI_element_array; +int GLAD_GL_ARB_sparse_texture_clamp; +int GLAD_GL_AMD_texture_texture4; +int GLAD_GL_SGIX_reference_plane; +int GLAD_GL_EXT_stencil_two_side; +int GLAD_GL_ARB_transform_feedback_overflow_query; +int GLAD_GL_SGIX_texture_lod_bias; +int GLAD_GL_KHR_no_error; +int GLAD_GL_NV_explicit_multisample; +int GLAD_GL_IBM_static_data; +int GLAD_GL_EXT_clip_volume_hint; +int GLAD_GL_EXT_texture_perturb_normal; +int GLAD_GL_NV_fragment_program2; +int GLAD_GL_NV_fragment_program4; +int GLAD_GL_EXT_point_parameters; +int GLAD_GL_PGI_misc_hints; +int GLAD_GL_SGIX_subsample; +int GLAD_GL_AMD_shader_stencil_export; +int GLAD_GL_ARB_shader_texture_lod; +int GLAD_GL_ARB_vertex_shader; +int GLAD_GL_ARB_depth_clamp; +int GLAD_GL_SGIS_texture_select; +int GLAD_GL_NV_texture_shader; +int GLAD_GL_ARB_tessellation_shader; +int GLAD_GL_EXT_draw_buffers2; +int GLAD_GL_ARB_vertex_attrib_64bit; +int GLAD_GL_EXT_texture_filter_minmax; +int GLAD_GL_ARB_texture_gather; +int GLAD_GL_AMD_interleaved_elements; +int GLAD_GL_ARB_fragment_program; +int GLAD_GL_OML_resample; +int GLAD_GL_APPLE_ycbcr_422; +int GLAD_GL_SGIX_texture_add_env; +int GLAD_GL_ARB_shadow_ambient; +int GLAD_GL_ARB_texture_storage; +int GLAD_GL_EXT_pixel_buffer_object; +int GLAD_GL_NV_vertex_program; +int GLAD_GL_SGIS_pixel_texture; +int GLAD_GL_SGIS_generate_mipmap; +int GLAD_GL_SGIX_instruments; +int GLAD_GL_ARB_fragment_layer_viewport; +int GLAD_GL_ARB_shader_storage_buffer_object; +int GLAD_GL_EXT_sparse_texture2; +int GLAD_GL_EXT_blend_minmax; +int GLAD_GL_MESA_pack_invert; +int GLAD_GL_ARB_base_instance; +int GLAD_GL_SUN_global_alpha; +int GLAD_GL_PGI_vertex_hints; +int GLAD_GL_AMD_transform_feedback4; +int GLAD_GL_ARB_ES3_1_compatibility; +int GLAD_GL_EXT_texture_integer; +int GLAD_GL_ARB_texture_multisample; +int GLAD_GL_AMD_gpu_shader_int64; +int GLAD_GL_S3_s3tc; +int GLAD_GL_ARB_query_buffer_object; +int GLAD_GL_AMD_vertex_shader_tessellator; +int GLAD_GL_ARB_invalidate_subdata; +int GLAD_GL_ARB_draw_indirect; +int GLAD_GL_ARB_transform_feedback2; +int GLAD_GL_EXT_index_material; +int GLAD_GL_NV_blend_equation_advanced_coherent; +int GLAD_GL_ARB_texture_non_power_of_two; +int GLAD_GL_KHR_texture_compression_astc_sliced_3d; +int GLAD_GL_ATI_draw_buffers; +int GLAD_GL_EXT_cmyka; +int GLAD_GL_SGIX_pixel_texture; +int GLAD_GL_APPLE_specular_vector; +int GLAD_GL_ARB_seamless_cubemap_per_texture; +int GLAD_GL_ARB_conservative_depth; +int GLAD_GL_SGIX_interlace; +int GLAD_GL_NV_parameter_buffer_object; +int GLAD_GL_AMD_shader_trinary_minmax; +int GLAD_GL_EXT_texture_lod_bias; +int GLAD_GL_EXT_rescale_normal; +int GLAD_GL_ARB_pixel_buffer_object; +int GLAD_GL_ARB_uniform_buffer_object; +int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev; +int GLAD_GL_ARB_texture_swizzle; +int GLAD_GL_ARB_texture_compression; +int GLAD_GL_SGIX_async_pixel; +int GLAD_GL_NV_fragment_program_option; +int GLAD_GL_ARB_explicit_attrib_location; +int GLAD_GL_EXT_blend_color; +int GLAD_GL_NV_shader_thread_group; +int GLAD_GL_EXT_stencil_wrap; +int GLAD_GL_EXT_index_array_formats; +int GLAD_GL_OVR_multiview2; +int GLAD_GL_EXT_histogram; +int GLAD_GL_EXT_polygon_offset; +int GLAD_GL_SGIS_point_parameters; +int GLAD_GL_EXT_direct_state_access; +int GLAD_GL_ARB_shader_group_vote; +int GLAD_GL_NV_texture_rectangle; +int GLAD_GL_ARB_copy_image; +int GLAD_GL_NV_shader_thread_shuffle; +int GLAD_GL_ARB_shader_precision; +int GLAD_GL_EXT_vertex_shader; +int GLAD_GL_EXT_blend_func_separate; +int GLAD_GL_APPLE_fence; +int GLAD_GL_OES_byte_coordinates; +int GLAD_GL_ARB_transpose_matrix; +int GLAD_GL_ARB_provoking_vertex; +int GLAD_GL_NV_uniform_buffer_unified_memory; +int GLAD_GL_NV_fragment_shader_interlock; +int GLAD_GL_EXT_vertex_array; +int GLAD_GL_ARB_half_float_vertex; +int GLAD_GL_EXT_blend_equation_separate; +int GLAD_GL_NV_framebuffer_mixed_samples; +int GLAD_GL_ARB_multi_draw_indirect; +int GLAD_GL_EXT_raster_multisample; +int GLAD_GL_NV_copy_image; +int GLAD_GL_NV_geometry_shader_passthrough; +int GLAD_GL_INTEL_framebuffer_CMAA; +int GLAD_GL_SGIX_convolution_accuracy; +int GLAD_GL_ARB_transform_feedback3; +int GLAD_GL_SGIX_ycrcba; +int GLAD_GL_EXT_debug_marker; +int GLAD_GL_EXT_bgra; +int GLAD_GL_INTEL_parallel_arrays; +int GLAD_GL_EXT_pixel_transform; +int GLAD_GL_NV_vertex_attrib_integer_64bit; +int GLAD_GL_ATI_fragment_shader; +int GLAD_GL_ARB_vertex_array_object; +int GLAD_GL_ATI_pn_triangles; +int GLAD_GL_EXT_texture_env_add; +int GLAD_GL_EXT_packed_depth_stencil; +int GLAD_GL_EXT_texture_mirror_clamp; +int GLAD_GL_NV_multisample_filter_hint; +int GLAD_GL_INTEL_performance_query; +int GLAD_GL_ARB_transform_feedback_instanced; +int GLAD_GL_SGIX_async; +int GLAD_GL_EXT_texture_compression_latc; +int GLAD_GL_NV_shader_atomic_float; +int GLAD_GL_ARB_shading_language_100; +int GLAD_GL_APPLE_float_pixels; +int GLAD_GL_ARB_texture_mirror_clamp_to_edge; +int GLAD_GL_NV_vertex_program2; +int GLAD_GL_NV_bindless_multi_draw_indirect_count; +int GLAD_GL_ARB_depth_texture; +int GLAD_GL_ARB_ES2_compatibility; +int GLAD_GL_ARB_indirect_parameters; +int GLAD_GL_NV_half_float; +int GLAD_GL_ARB_ES3_2_compatibility; +int GLAD_GL_ATI_texture_mirror_once; +int GLAD_GL_IBM_rasterpos_clip; +int GLAD_GL_SGIX_shadow; +int GLAD_GL_EXT_polygon_offset_clamp; +int GLAD_GL_NV_deep_texture3D; +int GLAD_GL_ARB_shader_draw_parameters; +int GLAD_GL_SGIX_calligraphic_fragment; +int GLAD_GL_ARB_shader_bit_encoding; +int GLAD_GL_EXT_compiled_vertex_array; +int GLAD_GL_NV_depth_buffer_float; +int GLAD_GL_APPLE_flush_buffer_range; +int GLAD_GL_ARB_imaging; +int GLAD_GL_ARB_draw_buffers_blend; +int GLAD_GL_AMD_gcn_shader; +int GLAD_GL_AMD_blend_minmax_factor; +int GLAD_GL_EXT_texture_sRGB_decode; +int GLAD_GL_ARB_shading_language_420pack; +int GLAD_GL_ARB_shader_viewport_layer_array; +int GLAD_GL_ATI_meminfo; +int GLAD_GL_EXT_abgr; +int GLAD_GL_AMD_pinned_memory; +int GLAD_GL_EXT_texture_snorm; +int GLAD_GL_SGIX_texture_coordinate_clamp; +int GLAD_GL_ARB_clear_buffer_object; +int GLAD_GL_ARB_multisample; +int GLAD_GL_EXT_debug_label; +int GLAD_GL_NV_light_max_exponent; +int GLAD_GL_NV_internalformat_sample_query; +int GLAD_GL_INTEL_map_texture; +int GLAD_GL_ARB_texture_env_crossbar; +int GLAD_GL_EXT_422_pixels; +int GLAD_GL_ARB_compute_shader; +int GLAD_GL_NV_texgen_emboss; +int GLAD_GL_ARB_blend_func_extended; +int GLAD_GL_IBM_vertex_array_lists; +int GLAD_GL_ARB_color_buffer_float; +int GLAD_GL_ARB_bindless_texture; +int GLAD_GL_SGIX_depth_texture; +int GLAD_GL_ARB_internalformat_query; +int GLAD_GL_ARB_shader_atomic_counter_ops; +int GLAD_GL_ARB_texture_mirrored_repeat; +int GLAD_GL_EXT_shader_image_load_store; +int GLAD_GL_EXT_copy_texture; +int GLAD_GL_NV_register_combiners2; +int GLAD_GL_SGIX_ycrcb_subsample; +int GLAD_GL_ARB_copy_buffer; +int GLAD_GL_NV_draw_texture; +int GLAD_GL_EXT_texture_shared_exponent; +int GLAD_GL_EXT_draw_instanced; +int GLAD_GL_NV_copy_depth_to_color; +int GLAD_GL_ARB_viewport_array; +int GLAD_GL_ARB_separate_shader_objects; +int GLAD_GL_EXT_multisample; +int GLAD_GL_EXT_depth_bounds_test; +int GLAD_GL_EXT_shared_texture_palette; +int GLAD_GL_ARB_texture_env_add; +int GLAD_GL_NV_video_capture; +int GLAD_GL_ARB_sampler_objects; +int GLAD_GL_ARB_matrix_palette; +int GLAD_GL_SGIS_texture_color_mask; +int GLAD_GL_EXT_packed_pixels; +int GLAD_GL_EXT_coordinate_frame; +int GLAD_GL_NV_transform_feedback2; +int GLAD_GL_APPLE_aux_depth_stencil; +int GLAD_GL_ARB_shader_subroutine; +int GLAD_GL_EXT_framebuffer_sRGB; +int GLAD_GL_ARB_texture_storage_multisample; +int GLAD_GL_KHR_blend_equation_advanced_coherent; +int GLAD_GL_EXT_vertex_attrib_64bit; +int GLAD_GL_HP_texture_lighting; +int GLAD_GL_NV_shader_buffer_store; +int GLAD_GL_OES_query_matrix; +int GLAD_GL_MESA_window_pos; +int GLAD_GL_NV_fill_rectangle; +int GLAD_GL_NV_shader_storage_buffer_object; +int GLAD_GL_ARB_texture_query_lod; +int GLAD_GL_SGIX_ir_instrument1; +int GLAD_GL_ARB_shader_image_size; +int GLAD_GL_NV_shader_atomic_counters; +int GLAD_GL_APPLE_object_purgeable; +int GLAD_GL_ARB_occlusion_query; +int GLAD_GL_INGR_color_clamp; +int GLAD_GL_SGI_color_table; +int GLAD_GL_EXT_framebuffer_multisample_blit_scaled; +int GLAD_GL_ARB_texture_cube_map_array; +int GLAD_GL_AMD_debug_output; +int GLAD_GL_EXT_gpu_shader4; +int GLAD_GL_NV_geometry_program4; +int GLAD_GL_NV_gpu_program5_mem_extended; +int GLAD_GL_SGIX_scalebias_hint; +int GLAD_GL_ARB_texture_border_clamp; +int GLAD_GL_ARB_fragment_coord_conventions; +int GLAD_GL_SGIX_polynomial_ffd; +int GLAD_GL_EXT_provoking_vertex; +int GLAD_GL_ARB_point_parameters; +int GLAD_GL_ARB_shader_image_load_store; +int GLAD_GL_ARB_conditional_render_inverted; +int GLAD_GL_HP_occlusion_test; +int GLAD_GL_ARB_ES3_compatibility; +int GLAD_GL_EXT_texture_array; +int GLAD_GL_ARB_texture_buffer_object_rgb32; +int GLAD_GL_NV_bindless_multi_draw_indirect; +int GLAD_GL_SGIX_texture_multi_buffer; +int GLAD_GL_EXT_transform_feedback; +int GLAD_GL_KHR_texture_compression_astc_ldr; +int GLAD_GL_3DFX_multisample; +int GLAD_GL_INTEL_fragment_shader_ordering; +int GLAD_GL_ARB_texture_env_dot3; +int GLAD_GL_NV_gpu_program4; +int GLAD_GL_NV_gpu_program5; +int GLAD_GL_NV_float_buffer; +int GLAD_GL_SGIS_texture_edge_clamp; +int GLAD_GL_ARB_framebuffer_sRGB; +int GLAD_GL_SUN_slice_accum; +int GLAD_GL_EXT_index_texture; +int GLAD_GL_EXT_shader_image_load_formatted; +int GLAD_GL_ARB_geometry_shader4; +int GLAD_GL_EXT_separate_specular_color; +int GLAD_GL_NV_fog_distance; +int GLAD_GL_NV_conservative_raster; +int GLAD_GL_SUN_convolution_border_modes; +int GLAD_GL_SGIX_sprite; +int GLAD_GL_ARB_get_program_binary; +int GLAD_GL_ARB_timer_query; +int GLAD_GL_AMD_occlusion_query_event; +int GLAD_GL_SGIS_multisample; +int GLAD_GL_EXT_framebuffer_object; +int GLAD_GL_EXT_vertex_weighting; +int GLAD_GL_ARB_vertex_array_bgra; +int GLAD_GL_APPLE_vertex_array_range; +int GLAD_GL_AMD_query_buffer_object; +int GLAD_GL_NV_register_combiners; +int GLAD_GL_ARB_draw_buffers; +int GLAD_GL_ARB_clear_texture; +int GLAD_GL_NV_fragment_program; +int GLAD_GL_SGI_color_matrix; +int GLAD_GL_EXT_cull_vertex; +int GLAD_GL_EXT_texture_sRGB; +int GLAD_GL_APPLE_row_bytes; +int GLAD_GL_NV_texgen_reflection; +int GLAD_GL_IBM_multimode_draw_arrays; +int GLAD_GL_APPLE_vertex_array_object; +int GLAD_GL_3DFX_texture_compression_FXT1; +int GLAD_GL_GREMEDY_frame_terminator; +int GLAD_GL_AMD_conservative_depth; +int GLAD_GL_ARB_texture_float; +int GLAD_GL_ARB_compressed_texture_pixel_storage; +int GLAD_GL_SGIS_detail_texture; +int GLAD_GL_ARB_draw_instanced; +int GLAD_GL_OES_read_format; +int GLAD_GL_ATI_texture_float; +int GLAD_GL_WIN_specular_fog; +int GLAD_GL_AMD_vertex_shader_layer; +int GLAD_GL_ARB_shading_language_include; +int GLAD_GL_APPLE_client_storage; +int GLAD_GL_WIN_phong_shading; +int GLAD_GL_INGR_blend_func_separate; +int GLAD_GL_NV_path_rendering; +int GLAD_GL_NV_conservative_raster_dilate; +int GLAD_GL_ARB_texture_barrier; +int GLAD_GL_ATI_vertex_streams; +int GLAD_GL_ARB_post_depth_coverage; +int GLAD_GL_NV_occlusion_query; +int GLAD_GL_APPLE_rgb_422; +int GLAD_GL_ARB_direct_state_access; +int GLAD_GL_ARB_gpu_shader_int64; +int GLAD_GL_ARB_seamless_cube_map; +int GLAD_GL_ARB_cull_distance; +int GLAD_GL_NV_vdpau_interop; +int GLAD_GL_ARB_occlusion_query2; +int GLAD_GL_ARB_internalformat_query2; +int GLAD_GL_EXT_texture_filter_anisotropic; +int GLAD_GL_SUN_vertex; +int GLAD_GL_ARB_sparse_texture; +int GLAD_GL_SGIS_texture_lod; +int GLAD_GL_NV_vertex_program3; +int GLAD_GL_NV_gpu_shader5; +int GLAD_GL_NV_vertex_program4; +int GLAD_GL_AMD_transform_feedback3_lines_triangles; +int GLAD_GL_SGIS_fog_function; +int GLAD_GL_EXT_x11_sync_object; +int GLAD_GL_ARB_sync; +int GLAD_GL_NV_sample_locations; +int GLAD_GL_ARB_compute_variable_group_size; +int GLAD_GL_OES_fixed_point; +int GLAD_GL_NV_blend_square; +int GLAD_GL_EXT_framebuffer_multisample; +int GLAD_GL_ARB_gpu_shader5; +int GLAD_GL_SGIS_texture4D; +int GLAD_GL_EXT_texture3D; +int GLAD_GL_ARB_multitexture; +int GLAD_GL_EXT_secondary_color; +int GLAD_GL_NV_parameter_buffer_object2; +int GLAD_GL_ATI_vertex_array_object; +int GLAD_GL_ARB_parallel_shader_compile; +int GLAD_GL_NVX_gpu_memory_info; +int GLAD_GL_SGIX_igloo_interface; +int GLAD_GL_SGIS_point_line_texgen; +int GLAD_GL_ARB_sample_locations; +int GLAD_GL_ARB_sparse_buffer; +int GLAD_GL_EXT_draw_range_elements; +int GLAD_GL_SGIX_blend_alpha_minmax; +int GLAD_GL_KHR_context_flush_control; +PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE; +PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE; +PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE; +PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE; +PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE; +PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD; +PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD; +PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX; +PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV; +PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV; +PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI; +PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI; +PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT; +PFNGLWEIGHTBVARBPROC glad_glWeightbvARB; +PFNGLWEIGHTSVARBPROC glad_glWeightsvARB; +PFNGLWEIGHTIVARBPROC glad_glWeightivARB; +PFNGLWEIGHTFVARBPROC glad_glWeightfvARB; +PFNGLWEIGHTDVARBPROC glad_glWeightdvARB; +PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB; +PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB; +PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB; +PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB; +PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB; +PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR; +PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; +PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; +PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; +PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; +PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; +PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; +PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT; +PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV; +PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV; +PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV; +PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV; +PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV; +PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV; +PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV; +PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV; +PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV; +PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV; +PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV; +PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV; +PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV; +PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV; +PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT; +PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT; +PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX; +PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT; +PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT; +PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; +PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV; +PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV; +PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA; +PFNGLTEXTUREVIEWPROC glad_glTextureView; +PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT; +PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT; +PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT; +PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT; +PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT; +PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT; +PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT; +PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT; +PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT; +PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT; +PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT; +PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT; +PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT; +PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV; +PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV; +PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV; +PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV; +PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV; +PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV; +PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV; +PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV; +PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV; +PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV; +PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV; +PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV; +PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV; +PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV; +PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV; +PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV; +PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV; +PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV; +PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV; +PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT; +PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT; +PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT; +PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT; +PFNGLTEXBUFFERARBPROC glad_glTexBufferARB; +PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI; +PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI; +PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX; +PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT; +PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT; +PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT; +PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP; +PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP; +PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP; +PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP; +PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP; +PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP; +PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD; +PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD; +PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD; +PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD; +PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE; +PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE; +PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT; +PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV; +PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX; +PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY; +PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT; +PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT; +PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT; +PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT; +PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT; +PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT; +PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT; +PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT; +PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT; +PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT; +PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT; +PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT; +PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT; +PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT; +PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT; +PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT; +PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT; +PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT; +PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT; +PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT; +PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT; +PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT; +PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT; +PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT; +PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT; +PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT; +PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT; +PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT; +PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT; +PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT; +PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT; +PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT; +PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT; +PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT; +PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT; +PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT; +PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT; +PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT; +PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT; +PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT; +PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT; +PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT; +PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT; +PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV; +PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV; +PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV; +PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV; +PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV; +PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV; +PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB; +PFNGLGETHANDLEARBPROC glad_glGetHandleARB; +PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB; +PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB; +PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB; +PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB; +PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB; +PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB; +PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB; +PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB; +PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB; +PFNGLUNIFORM1FARBPROC glad_glUniform1fARB; +PFNGLUNIFORM2FARBPROC glad_glUniform2fARB; +PFNGLUNIFORM3FARBPROC glad_glUniform3fARB; +PFNGLUNIFORM4FARBPROC glad_glUniform4fARB; +PFNGLUNIFORM1IARBPROC glad_glUniform1iARB; +PFNGLUNIFORM2IARBPROC glad_glUniform2iARB; +PFNGLUNIFORM3IARBPROC glad_glUniform3iARB; +PFNGLUNIFORM4IARBPROC glad_glUniform4iARB; +PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB; +PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB; +PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB; +PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB; +PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB; +PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB; +PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB; +PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB; +PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB; +PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB; +PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB; +PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB; +PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB; +PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB; +PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB; +PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB; +PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB; +PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB; +PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB; +PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB; +PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI; +PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI; +PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI; +PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI; +PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI; +PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI; +PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; +PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; +PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; +PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; +PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; +PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; +PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; +PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; +PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; +PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; +PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; +PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; +PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; +PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; +PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; +PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; +PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; +PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; +PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; +PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; +PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV; +PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV; +PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT; +PFNGLUNIFORM1DPROC glad_glUniform1d; +PFNGLUNIFORM2DPROC glad_glUniform2d; +PFNGLUNIFORM3DPROC glad_glUniform3d; +PFNGLUNIFORM4DPROC glad_glUniform4d; +PFNGLUNIFORM1DVPROC glad_glUniform1dv; +PFNGLUNIFORM2DVPROC glad_glUniform2dv; +PFNGLUNIFORM3DVPROC glad_glUniform3dv; +PFNGLUNIFORM4DVPROC glad_glUniform4dv; +PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; +PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; +PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; +PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; +PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; +PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; +PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; +PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; +PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; +PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; +PFNGLCREATESTATESNVPROC glad_glCreateStatesNV; +PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV; +PFNGLISSTATENVPROC glad_glIsStateNV; +PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV; +PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV; +PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV; +PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV; +PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV; +PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV; +PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV; +PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV; +PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV; +PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV; +PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV; +PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV; +PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV; +PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV; +PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT; +PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT; +PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT; +PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY; +PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT; +PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT; +PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT; +PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT; +PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV; +PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV; +PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV; +PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV; +PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV; +PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV; +PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV; +PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV; +PFNGLEVALMAPSNVPROC glad_glEvalMapsNV; +PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS; +PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS; +PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD; +PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD; +PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD; +PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD; +PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD; +PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD; +PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD; +PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD; +PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD; +PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD; +PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD; +PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT; +PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV; +PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV; +PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV; +PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV; +PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV; +PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV; +PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX; +PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV; +PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV; +PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV; +PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV; +PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV; +PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV; +PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV; +PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV; +PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV; +PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV; +PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV; +PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV; +PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV; +PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV; +PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV; +PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV; +PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV; +PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV; +PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD; +PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB; +PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT; +PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; +PFNGLREADNPIXELSPROC glad_glReadnPixels; +PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; +PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; +PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; +PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR; +PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR; +PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR; +PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR; +PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR; +PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD; +PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD; +PFNGLCLIPCONTROLPROC glad_glClipControl; +PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV; +PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV; +PFNGLGENFENCESNVPROC glad_glGenFencesNV; +PFNGLISFENCENVPROC glad_glIsFenceNV; +PFNGLTESTFENCENVPROC glad_glTestFenceNV; +PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV; +PFNGLFINISHFENCENVPROC glad_glFinishFenceNV; +PFNGLSETFENCENVPROC glad_glSetFenceNV; +PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; +PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN; +PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; +PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; +PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; +PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; +PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; +PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; +PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; +PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; +PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB; +PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES; +PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES; +PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES; +PFNGLFRUSTUMFOESPROC glad_glFrustumfOES; +PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES; +PFNGLORTHOFOESPROC glad_glOrthofOES; +PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV; +PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV; +PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN; +PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN; +PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN; +PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN; +PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN; +PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN; +PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN; +PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN; +PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT; +PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT; +PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT; +PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT; +PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT; +PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT; +PFNGLGENNAMESAMDPROC glad_glGenNamesAMD; +PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD; +PFNGLISNAMEAMDPROC glad_glIsNameAMD; +PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; +PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE; +PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE; +PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE; +PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE; +PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE; +PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE; +PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE; +PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; +PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; +PFNGLBINDTEXTURESPROC glad_glBindTextures; +PFNGLBINDSAMPLERSPROC glad_glBindSamplers; +PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; +PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; +PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX; +PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX; +PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX; +PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX; +PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX; +PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX; +PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV; +PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV; +PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV; +PFNGLCOLORFORMATNVPROC glad_glColorFormatNV; +PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV; +PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV; +PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV; +PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV; +PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV; +PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV; +PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV; +PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV; +PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV; +PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV; +PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS; +PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS; +PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB; +PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB; +PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB; +PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB; +PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB; +PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB; +PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB; +PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB; +PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB; +PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB; +PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB; +PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB; +PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB; +PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB; +PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB; +PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB; +PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB; +PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB; +PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB; +PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB; +PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB; +PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB; +PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB; +PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB; +PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB; +PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB; +PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB; +PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB; +PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB; +PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB; +PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB; +PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB; +PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB; +PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB; +PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB; +PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB; +PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB; +PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB; +PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB; +PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB; +PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB; +PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB; +PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB; +PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB; +PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB; +PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB; +PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB; +PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB; +PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB; +PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB; +PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB; +PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB; +PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB; +PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB; +PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB; +PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB; +PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB; +PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB; +PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB; +PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB; +PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB; +PFNGLISPROGRAMARBPROC glad_glIsProgramARB; +PFNGLBINDBUFFERARBPROC glad_glBindBufferARB; +PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB; +PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB; +PFNGLISBUFFERARBPROC glad_glIsBufferARB; +PFNGLBUFFERDATAARBPROC glad_glBufferDataARB; +PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB; +PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB; +PFNGLMAPBUFFERARBPROC glad_glMapBufferARB; +PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB; +PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB; +PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB; +PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV; +PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV; +PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX; +PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX; +PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX; +PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX; +PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX; +PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX; +PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX; +PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX; +PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX; +PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX; +PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX; +PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX; +PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX; +PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX; +PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX; +PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX; +PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX; +PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV; +PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT; +PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT; +PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV; +PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV; +PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV; +PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV; +PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV; +PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV; +PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV; +PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV; +PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV; +PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV; +PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV; +PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV; +PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV; +PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; +PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; +PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; +PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; +PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; +PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; +PFNGLOBJECTLABELPROC glad_glObjectLabel; +PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; +PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; +PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; +PFNGLGETPOINTERVPROC glad_glGetPointerv; +PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR; +PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR; +PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR; +PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR; +PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR; +PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR; +PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR; +PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR; +PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR; +PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR; +PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR; +PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI; +PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI; +PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI; +PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT; +PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT; +PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT; +PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR; +PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI; +PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI; +PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI; +PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX; +PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT; +PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV; +PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV; +PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV; +PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM; +PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT; +PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT; +PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT; +PFNGLHINTPGIPROC glad_glHintPGI; +PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB; +PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB; +PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB; +PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; +PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; +PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT; +PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT; +PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT; +PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT; +PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT; +PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT; +PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; +PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; +PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; +PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; +PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; +PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; +PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; +PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; +PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; +PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; +PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT; +PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD; +PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; +PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; +PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; +PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; +PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS; +PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS; +PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS; +PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS; +PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS; +PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS; +PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX; +PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX; +PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX; +PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX; +PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX; +PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX; +PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; +PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT; +PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; +PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; +PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; +PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT; +PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT; +PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT; +PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT; +PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT; +PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT; +PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV; +PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV; +PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV; +PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV; +PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV; +PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV; +PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV; +PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV; +PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV; +PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV; +PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV; +PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV; +PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV; +PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV; +PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV; +PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV; +PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV; +PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV; +PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV; +PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV; +PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV; +PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV; +PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV; +PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV; +PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV; +PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV; +PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV; +PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV; +PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV; +PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV; +PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV; +PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV; +PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV; +PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD; +PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD; +PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; +PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; +PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; +PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; +PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; +PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; +PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT; +PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL; +PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL; +PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL; +PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL; +PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI; +PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX; +PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV; +PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV; +PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV; +PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; +PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; +PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; +PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; +PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; +PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; +PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; +PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; +PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; +PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; +PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; +PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; +PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; +PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; +PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; +PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; +PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; +PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; +PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; +PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; +PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; +PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; +PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; +PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; +PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; +PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; +PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; +PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; +PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; +PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; +PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; +PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; +PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; +PFNGLCREATETEXTURESPROC glad_glCreateTextures; +PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; +PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; +PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; +PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; +PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; +PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; +PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; +PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; +PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; +PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; +PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; +PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; +PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; +PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; +PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; +PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; +PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; +PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; +PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; +PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; +PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; +PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; +PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; +PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; +PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; +PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; +PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; +PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; +PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; +PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; +PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; +PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; +PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; +PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; +PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; +PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; +PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; +PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; +PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; +PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; +PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; +PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; +PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; +PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; +PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; +PFNGLCREATEQUERIESPROC glad_glCreateQueries; +PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; +PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; +PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; +PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; +PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV; +PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV; +PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV; +PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV; +PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV; +PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV; +PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV; +PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT; +PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT; +PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT; +PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT; +PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT; +PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT; +PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT; +PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT; +PFNGLMINMAXEXTPROC glad_glMinmaxEXT; +PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT; +PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT; +PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; +PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; +PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS; +PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS; +PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT; +PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT; +PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT; +PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT; +PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT; +PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT; +PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT; +PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT; +PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT; +PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT; +PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT; +PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT; +PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT; +PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT; +PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT; +PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT; +PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT; +PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT; +PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT; +PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT; +PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT; +PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT; +PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT; +PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT; +PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT; +PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT; +PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT; +PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT; +PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT; +PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT; +PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT; +PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT; +PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT; +PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT; +PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT; +PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT; +PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT; +PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT; +PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT; +PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT; +PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT; +PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT; +PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT; +PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT; +PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT; +PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT; +PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT; +PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT; +PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT; +PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT; +PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT; +PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT; +PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT; +PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT; +PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT; +PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT; +PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT; +PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT; +PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT; +PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT; +PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT; +PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT; +PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT; +PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT; +PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT; +PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT; +PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT; +PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT; +PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT; +PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT; +PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT; +PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT; +PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT; +PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT; +PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT; +PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT; +PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT; +PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT; +PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT; +PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT; +PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT; +PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT; +PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT; +PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT; +PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT; +PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT; +PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT; +PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT; +PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT; +PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT; +PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT; +PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT; +PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT; +PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT; +PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT; +PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT; +PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT; +PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT; +PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT; +PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT; +PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT; +PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT; +PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT; +PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT; +PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT; +PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT; +PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT; +PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT; +PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT; +PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT; +PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT; +PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT; +PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT; +PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT; +PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT; +PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT; +PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT; +PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT; +PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT; +PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT; +PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT; +PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT; +PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT; +PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT; +PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT; +PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT; +PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT; +PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT; +PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT; +PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT; +PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT; +PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT; +PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT; +PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT; +PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT; +PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT; +PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT; +PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT; +PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT; +PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT; +PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT; +PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT; +PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT; +PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT; +PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT; +PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT; +PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT; +PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT; +PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT; +PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT; +PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT; +PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT; +PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT; +PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT; +PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT; +PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT; +PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT; +PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT; +PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT; +PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT; +PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT; +PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT; +PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT; +PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT; +PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; +PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; +PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; +PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT; +PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT; +PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT; +PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT; +PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT; +PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT; +PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT; +PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT; +PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT; +PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT; +PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT; +PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD; +PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV; +PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV; +PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV; +PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV; +PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV; +PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV; +PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV; +PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV; +PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV; +PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV; +PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV; +PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV; +PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV; +PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV; +PFNGLISPROGRAMNVPROC glad_glIsProgramNV; +PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV; +PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV; +PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV; +PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV; +PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV; +PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV; +PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV; +PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV; +PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV; +PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV; +PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV; +PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV; +PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV; +PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV; +PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV; +PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV; +PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV; +PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV; +PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV; +PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV; +PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV; +PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV; +PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV; +PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV; +PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV; +PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV; +PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV; +PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV; +PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV; +PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV; +PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV; +PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV; +PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV; +PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV; +PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV; +PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV; +PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV; +PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV; +PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV; +PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV; +PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV; +PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV; +PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV; +PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV; +PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV; +PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV; +PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV; +PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV; +PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV; +PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT; +PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT; +PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT; +PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT; +PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT; +PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT; +PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT; +PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT; +PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT; +PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT; +PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT; +PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT; +PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT; +PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT; +PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT; +PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT; +PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT; +PFNGLVARIANTIVEXTPROC glad_glVariantivEXT; +PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT; +PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT; +PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT; +PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT; +PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT; +PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT; +PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT; +PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT; +PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT; +PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT; +PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT; +PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT; +PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT; +PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT; +PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT; +PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT; +PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT; +PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT; +PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT; +PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT; +PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT; +PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT; +PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT; +PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT; +PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT; +PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE; +PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE; +PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE; +PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE; +PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE; +PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE; +PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE; +PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE; +PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES; +PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES; +PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES; +PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES; +PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES; +PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES; +PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES; +PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES; +PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES; +PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES; +PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES; +PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES; +PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES; +PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES; +PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES; +PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES; +PFNGLVERTEX2BOESPROC glad_glVertex2bOES; +PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES; +PFNGLVERTEX3BOESPROC glad_glVertex3bOES; +PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES; +PFNGLVERTEX4BOESPROC glad_glVertex4bOES; +PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES; +PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB; +PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB; +PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB; +PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB; +PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT; +PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT; +PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT; +PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT; +PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT; +PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT; +PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT; +PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT; +PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT; +PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT; +PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT; +PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT; +PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT; +PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT; +PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT; +PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV; +PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV; +PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV; +PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX; +PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX; +PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; +PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; +PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV; +PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL; +PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; +PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; +PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; +PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; +PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; +PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; +PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; +PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; +PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; +PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; +PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT; +PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT; +PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT; +PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT; +PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT; +PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT; +PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT; +PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT; +PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT; +PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI; +PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI; +PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI; +PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI; +PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI; +PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI; +PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI; +PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI; +PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI; +PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI; +PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI; +PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI; +PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI; +PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI; +PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN; +PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN; +PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN; +PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN; +PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN; +PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN; +PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN; +PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; +PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX; +PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX; +PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX; +PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX; +PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX; +PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX; +PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL; +PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL; +PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL; +PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL; +PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL; +PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL; +PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL; +PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL; +PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL; +PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV; +PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; +PFNGLSHADERBINARYPROC glad_glShaderBinary; +PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; +PFNGLDEPTHRANGEFPROC glad_glDepthRangef; +PFNGLCLEARDEPTHFPROC glad_glClearDepthf; +PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB; +PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB; +PFNGLVERTEX2HNVPROC glad_glVertex2hNV; +PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV; +PFNGLVERTEX3HNVPROC glad_glVertex3hNV; +PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV; +PFNGLVERTEX4HNVPROC glad_glVertex4hNV; +PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV; +PFNGLNORMAL3HNVPROC glad_glNormal3hNV; +PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV; +PFNGLCOLOR3HNVPROC glad_glColor3hNV; +PFNGLCOLOR3HVNVPROC glad_glColor3hvNV; +PFNGLCOLOR4HNVPROC glad_glColor4hNV; +PFNGLCOLOR4HVNVPROC glad_glColor4hvNV; +PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV; +PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV; +PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV; +PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV; +PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV; +PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV; +PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV; +PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV; +PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV; +PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV; +PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV; +PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV; +PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV; +PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV; +PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV; +PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV; +PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV; +PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV; +PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV; +PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV; +PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV; +PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV; +PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV; +PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV; +PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV; +PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV; +PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV; +PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV; +PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV; +PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV; +PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV; +PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV; +PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV; +PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV; +PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB; +PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT; +PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT; +PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT; +PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV; +PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV; +PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV; +PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV; +PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV; +PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV; +PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV; +PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV; +PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV; +PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV; +PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE; +PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE; +PFNGLCOLORTABLEPROC glad_glColorTable; +PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv; +PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv; +PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable; +PFNGLGETCOLORTABLEPROC glad_glGetColorTable; +PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv; +PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv; +PFNGLCOLORSUBTABLEPROC glad_glColorSubTable; +PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable; +PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D; +PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D; +PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf; +PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv; +PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri; +PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv; +PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D; +PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D; +PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter; +PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv; +PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv; +PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter; +PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D; +PFNGLGETHISTOGRAMPROC glad_glGetHistogram; +PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv; +PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv; +PFNGLGETMINMAXPROC glad_glGetMinmax; +PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv; +PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv; +PFNGLHISTOGRAMPROC glad_glHistogram; +PFNGLMINMAXPROC glad_glMinmax; +PFNGLRESETHISTOGRAMPROC glad_glResetHistogram; +PFNGLRESETMINMAXPROC glad_glResetMinmax; +PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB; +PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB; +PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB; +PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB; +PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; +PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; +PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; +PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT; +PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT; +PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB; +PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV; +PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL; +PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL; +PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL; +PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; +PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; +PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM; +PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM; +PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM; +PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM; +PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM; +PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM; +PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM; +PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM; +PFNGLCLAMPCOLORARBPROC glad_glClampColorARB; +PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB; +PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB; +PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB; +PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB; +PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB; +PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB; +PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB; +PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB; +PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB; +PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB; +PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB; +PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB; +PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB; +PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB; +PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB; +PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB; +PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB; +PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB; +PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB; +PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB; +PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB; +PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB; +PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB; +PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB; +PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB; +PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB; +PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB; +PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB; +PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB; +PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB; +PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB; +PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB; +PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; +PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT; +PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT; +PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT; +PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT; +PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT; +PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT; +PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT; +PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV; +PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV; +PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV; +PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT; +PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT; +PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; +PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; +PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; +PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; +PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; +PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; +PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; +PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; +PFNGLGETFLOATI_VPROC glad_glGetFloati_v; +PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; +PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; +PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; +PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; +PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; +PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; +PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; +PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; +PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; +PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; +PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; +PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; +PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; +PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; +PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; +PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; +PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; +PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; +PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; +PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; +PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; +PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; +PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; +PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; +PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; +PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; +PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; +PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; +PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; +PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; +PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; +PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; +PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; +PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; +PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; +PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; +PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; +PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; +PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; +PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; +PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; +PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; +PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; +PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; +PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; +PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; +PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; +PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; +PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; +PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; +PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; +PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; +PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; +PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; +PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; +PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; +PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; +PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; +PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; +PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; +PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; +PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT; +PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV; +PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV; +PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV; +PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV; +PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV; +PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV; +PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV; +PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV; +PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV; +PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV; +PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV; +PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV; +PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB; +PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB; +PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB; +PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB; +PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB; +PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS; +PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT; +PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT; +PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT; +PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT; +PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT; +PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT; +PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT; +PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT; +PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT; +PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT; +PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT; +PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT; +PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT; +PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT; +PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT; +PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT; +PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT; +PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT; +PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT; +PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT; +PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT; +PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT; +PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB; +PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB; +PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB; +PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB; +PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; +PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; +PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; +PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; +PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; +PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; +PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; +PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; +PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; +PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; +PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT; +PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT; +PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT; +PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT; +PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT; +PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT; +PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT; +PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT; +PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT; +PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT; +PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES; +PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA; +PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA; +PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA; +PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA; +PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA; +PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA; +PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA; +PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA; +PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA; +PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA; +PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA; +PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA; +PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA; +PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA; +PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA; +PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA; +PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA; +PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA; +PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA; +PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA; +PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA; +PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA; +PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA; +PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA; +PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE; +PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE; +PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE; +PFNGLGENQUERIESARBPROC glad_glGenQueriesARB; +PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB; +PFNGLISQUERYARBPROC glad_glIsQueryARB; +PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB; +PFNGLENDQUERYARBPROC glad_glEndQueryARB; +PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB; +PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB; +PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB; +PFNGLCOLORTABLESGIPROC glad_glColorTableSGI; +PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI; +PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI; +PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI; +PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI; +PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI; +PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI; +PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT; +PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT; +PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT; +PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT; +PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT; +PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT; +PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT; +PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT; +PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT; +PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT; +PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT; +PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV; +PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT; +PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT; +PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD; +PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD; +PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD; +PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD; +PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB; +PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB; +PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB; +PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB; +PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB; +PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB; +PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB; +PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB; +PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB; +PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB; +PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB; +PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB; +PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB; +PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB; +PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB; +PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB; +PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB; +PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB; +PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB; +PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB; +PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB; +PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB; +PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB; +PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB; +PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB; +PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB; +PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB; +PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB; +PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB; +PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB; +PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB; +PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB; +PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB; +PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB; +PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX; +PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX; +PFNGLDEFORMSGIXPROC glad_glDeformSGIX; +PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX; +PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT; +PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB; +PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB; +PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; +PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; +PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV; +PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT; +PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT; +PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT; +PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT; +PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT; +PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT; +PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT; +PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV; +PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV; +PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV; +PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV; +PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV; +PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV; +PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV; +PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV; +PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV; +PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV; +PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV; +PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV; +PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV; +PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV; +PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV; +PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV; +PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV; +PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV; +PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB; +PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB; +PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB; +PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB; +PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV; +PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX; +PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX; +PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX; +PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX; +PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; +PFNGLPROGRAMBINARYPROC glad_glProgramBinary; +PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; +PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD; +PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS; +PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS; +PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT; +PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT; +PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT; +PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT; +PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT; +PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT; +PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT; +PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT; +PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT; +PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT; +PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT; +PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT; +PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT; +PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT; +PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT; +PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT; +PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE; +PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE; +PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE; +PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV; +PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV; +PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV; +PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV; +PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV; +PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV; +PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV; +PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV; +PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV; +PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV; +PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV; +PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV; +PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV; +PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB; +PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; +PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; +PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB; +PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB; +PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB; +PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; +PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT; +PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT; +PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM; +PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM; +PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE; +PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE; +PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE; +PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE; +PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS; +PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS; +PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB; +PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB; +PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB; +PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB; +PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB; +PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB; +PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB; +PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB; +PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR; +PFNGLGENPATHSNVPROC glad_glGenPathsNV; +PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV; +PFNGLISPATHNVPROC glad_glIsPathNV; +PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV; +PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV; +PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV; +PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV; +PFNGLPATHSTRINGNVPROC glad_glPathStringNV; +PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV; +PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV; +PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV; +PFNGLCOPYPATHNVPROC glad_glCopyPathNV; +PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV; +PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV; +PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV; +PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV; +PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV; +PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV; +PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV; +PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV; +PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV; +PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV; +PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV; +PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV; +PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV; +PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV; +PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV; +PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV; +PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV; +PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV; +PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV; +PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV; +PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV; +PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV; +PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV; +PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV; +PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV; +PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV; +PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV; +PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV; +PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV; +PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV; +PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV; +PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV; +PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV; +PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV; +PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV; +PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV; +PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV; +PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV; +PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV; +PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV; +PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV; +PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV; +PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV; +PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV; +PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV; +PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV; +PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV; +PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV; +PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV; +PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV; +PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV; +PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV; +PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV; +PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI; +PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI; +PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI; +PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI; +PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI; +PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI; +PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI; +PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI; +PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI; +PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI; +PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI; +PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI; +PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI; +PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI; +PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI; +PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI; +PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI; +PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI; +PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI; +PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI; +PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI; +PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI; +PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI; +PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI; +PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI; +PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI; +PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI; +PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI; +PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI; +PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI; +PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI; +PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI; +PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI; +PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI; +PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI; +PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI; +PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI; +PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI; +PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI; +PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI; +PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI; +PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI; +PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI; +PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI; +PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI; +PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB; +PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB; +PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB; +PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB; +PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB; +PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB; +PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB; +PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB; +PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB; +PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB; +PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB; +PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB; +PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB; +PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB; +PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB; +PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB; +PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB; +PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB; +PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB; +PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB; +PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB; +PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB; +PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB; +PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB; +PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB; +PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB; +PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB; +PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB; +PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB; +PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB; +PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB; +PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB; +PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB; +PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB; +PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB; +PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB; +PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV; +PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV; +PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV; +PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV; +PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV; +PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV; +PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV; +PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV; +PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV; +PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV; +PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; +PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN; +PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN; +PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN; +PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN; +PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN; +PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN; +PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN; +PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN; +PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN; +PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN; +PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN; +PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN; +PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN; +PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN; +PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN; +PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX; +PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; +PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; +PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT; +PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT; +PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT; +PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT; +PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT; +PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT; +PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT; +PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT; +PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT; +PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT; +PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT; +PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT; +PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT; +PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT; +PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT; +PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT; +PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT; +PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT; +PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT; +PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT; +PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT; +PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT; +PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT; +PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS; +PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS; +PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV; +PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV; +PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB; +PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES; +PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES; +PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES; +PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES; +PFNGLCOLOR4XOESPROC glad_glColor4xOES; +PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES; +PFNGLFOGXOESPROC glad_glFogxOES; +PFNGLFOGXVOESPROC glad_glFogxvOES; +PFNGLFRUSTUMXOESPROC glad_glFrustumxOES; +PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES; +PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES; +PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES; +PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES; +PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES; +PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES; +PFNGLLIGHTXOESPROC glad_glLightxOES; +PFNGLLIGHTXVOESPROC glad_glLightxvOES; +PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES; +PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES; +PFNGLMATERIALXOESPROC glad_glMaterialxOES; +PFNGLMATERIALXVOESPROC glad_glMaterialxvOES; +PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES; +PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES; +PFNGLNORMAL3XOESPROC glad_glNormal3xOES; +PFNGLORTHOXOESPROC glad_glOrthoxOES; +PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES; +PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES; +PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES; +PFNGLROTATEXOESPROC glad_glRotatexOES; +PFNGLSCALEXOESPROC glad_glScalexOES; +PFNGLTEXENVXOESPROC glad_glTexEnvxOES; +PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES; +PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES; +PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES; +PFNGLTRANSLATEXOESPROC glad_glTranslatexOES; +PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES; +PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES; +PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES; +PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES; +PFNGLACCUMXOESPROC glad_glAccumxOES; +PFNGLBITMAPXOESPROC glad_glBitmapxOES; +PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES; +PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES; +PFNGLCOLOR3XOESPROC glad_glColor3xOES; +PFNGLCOLOR3XVOESPROC glad_glColor3xvOES; +PFNGLCOLOR4XVOESPROC glad_glColor4xvOES; +PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES; +PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES; +PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES; +PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES; +PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES; +PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES; +PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES; +PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES; +PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES; +PFNGLGETLIGHTXOESPROC glad_glGetLightxOES; +PFNGLGETMAPXVOESPROC glad_glGetMapxvOES; +PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES; +PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv; +PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES; +PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES; +PFNGLINDEXXOESPROC glad_glIndexxOES; +PFNGLINDEXXVOESPROC glad_glIndexxvOES; +PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES; +PFNGLMAP1XOESPROC glad_glMap1xOES; +PFNGLMAP2XOESPROC glad_glMap2xOES; +PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES; +PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES; +PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES; +PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES; +PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES; +PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES; +PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES; +PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES; +PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES; +PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES; +PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES; +PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES; +PFNGLPIXELMAPXPROC glad_glPixelMapx; +PFNGLPIXELSTOREXPROC glad_glPixelStorex; +PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES; +PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES; +PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES; +PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES; +PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES; +PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES; +PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES; +PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES; +PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES; +PFNGLRECTXOESPROC glad_glRectxOES; +PFNGLRECTXVOESPROC glad_glRectxvOES; +PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES; +PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES; +PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES; +PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES; +PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES; +PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES; +PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES; +PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES; +PFNGLTEXGENXOESPROC glad_glTexGenxOES; +PFNGLTEXGENXVOESPROC glad_glTexGenxvOES; +PFNGLVERTEX2XOESPROC glad_glVertex2xOES; +PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES; +PFNGLVERTEX3XOESPROC glad_glVertex3xOES; +PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES; +PFNGLVERTEX4XOESPROC glad_glVertex4xOES; +PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT; +PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS; +PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS; +PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT; +PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT; +PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT; +PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT; +PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT; +PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT; +PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT; +PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT; +PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT; +PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT; +PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT; +PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT; +PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT; +PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT; +PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT; +PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT; +PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT; +PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT; +PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT; +PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT; +PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT; +PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI; +PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI; +PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI; +PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI; +PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI; +PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI; +PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI; +PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI; +PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI; +PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI; +PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI; +PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI; +PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB; +PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB; +PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB; +PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB; +PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT; +PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB; +PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT; +static void load_GL_VERSION_1_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_0) return; + glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); + glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); + glad_glHint = (PFNGLHINTPROC)load("glHint"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); + glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); + glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); + glad_glClear = (PFNGLCLEARPROC)load("glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); + glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); + glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); + glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); + glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); + glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); + glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); + glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); + glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); + glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); + glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); + glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); +} +static void load_GL_VERSION_1_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_1) return; + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); + glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); + glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); +} +static void load_GL_VERSION_1_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_2) return; + glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); + glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); +} +static void load_GL_VERSION_1_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_3) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); + glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); + glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); + glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); + glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); +} +static void load_GL_VERSION_1_4(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_4) return; + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); + glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); + glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); + glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); + glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); + glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); + glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); +} +static void load_GL_VERSION_1_5(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_5) return; + glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); + glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); + glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); + glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); + glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); + glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); + glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); + glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); +} +static void load_GL_VERSION_2_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_0) return; + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); + glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); + glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); + glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); + glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); + glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); + glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); + glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); + glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); + glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); + glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); +} +static void load_GL_VERSION_2_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_1) return; + glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); + glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); + glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); + glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); + glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); + glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); +} +static void load_GL_VERSION_3_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_0) return; + glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); + glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); + glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); + glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); + glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); + glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); + glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); + glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); + glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); + glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); + glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); + glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); + glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); + glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); + glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); + glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); + glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); + glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); + glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); + glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); + glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); + glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); + glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); + glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); + glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); + glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); + glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); + glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); + glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); + glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); + glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); + glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); + glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); + glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_VERSION_3_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_1) return; + glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); + glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); + glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_VERSION_3_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_2) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); + glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); + glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); + glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_VERSION_3_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_3) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); + glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_APPLE_element_array(GLADloadproc load) { + if(!GLAD_GL_APPLE_element_array) return; + glad_glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)load("glElementPointerAPPLE"); + glad_glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)load("glDrawElementArrayAPPLE"); + glad_glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)load("glDrawRangeElementArrayAPPLE"); + glad_glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)load("glMultiDrawElementArrayAPPLE"); + glad_glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)load("glMultiDrawRangeElementArrayAPPLE"); +} +static void load_GL_AMD_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_AMD_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)load("glMultiDrawArraysIndirectAMD"); + glad_glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)load("glMultiDrawElementsIndirectAMD"); +} +static void load_GL_SGIX_tag_sample_buffer(GLADloadproc load) { + if(!GLAD_GL_SGIX_tag_sample_buffer) return; + glad_glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)load("glTagSampleBufferSGIX"); +} +static void load_GL_NV_point_sprite(GLADloadproc load) { + if(!GLAD_GL_NV_point_sprite) return; + glad_glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)load("glPointParameteriNV"); + glad_glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)load("glPointParameterivNV"); +} +static void load_GL_ATI_separate_stencil(GLADloadproc load) { + if(!GLAD_GL_ATI_separate_stencil) return; + glad_glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)load("glStencilOpSeparateATI"); + glad_glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)load("glStencilFuncSeparateATI"); +} +static void load_GL_EXT_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_buffer_object) return; + glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); +} +static void load_GL_ARB_vertex_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_blend) return; + glad_glWeightbvARB = (PFNGLWEIGHTBVARBPROC)load("glWeightbvARB"); + glad_glWeightsvARB = (PFNGLWEIGHTSVARBPROC)load("glWeightsvARB"); + glad_glWeightivARB = (PFNGLWEIGHTIVARBPROC)load("glWeightivARB"); + glad_glWeightfvARB = (PFNGLWEIGHTFVARBPROC)load("glWeightfvARB"); + glad_glWeightdvARB = (PFNGLWEIGHTDVARBPROC)load("glWeightdvARB"); + glad_glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)load("glWeightubvARB"); + glad_glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)load("glWeightusvARB"); + glad_glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)load("glWeightuivARB"); + glad_glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)load("glWeightPointerARB"); + glad_glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)load("glVertexBlendARB"); +} +static void load_GL_OVR_multiview(GLADloadproc load) { + if(!GLAD_GL_OVR_multiview) return; + glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); +} +static void load_GL_ARB_program_interface_query(GLADloadproc load) { + if(!GLAD_GL_ARB_program_interface_query) return; + glad_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)load("glGetProgramInterfaceiv"); + glad_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)load("glGetProgramResourceIndex"); + glad_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)load("glGetProgramResourceName"); + glad_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)load("glGetProgramResourceiv"); + glad_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)load("glGetProgramResourceLocation"); + glad_glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)load("glGetProgramResourceLocationIndex"); +} +static void load_GL_EXT_index_func(GLADloadproc load) { + if(!GLAD_GL_EXT_index_func) return; + glad_glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)load("glIndexFuncEXT"); +} +static void load_GL_NV_shader_buffer_load(GLADloadproc load) { + if(!GLAD_GL_NV_shader_buffer_load) return; + glad_glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)load("glMakeBufferResidentNV"); + glad_glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)load("glMakeBufferNonResidentNV"); + glad_glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)load("glIsBufferResidentNV"); + glad_glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)load("glMakeNamedBufferResidentNV"); + glad_glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)load("glMakeNamedBufferNonResidentNV"); + glad_glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)load("glIsNamedBufferResidentNV"); + glad_glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)load("glGetBufferParameterui64vNV"); + glad_glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)load("glGetNamedBufferParameterui64vNV"); + glad_glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)load("glGetIntegerui64vNV"); + glad_glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)load("glUniformui64NV"); + glad_glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)load("glUniformui64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)load("glProgramUniformui64NV"); + glad_glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)load("glProgramUniformui64vNV"); +} +static void load_GL_EXT_color_subtable(GLADloadproc load) { + if(!GLAD_GL_EXT_color_subtable) return; + glad_glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)load("glColorSubTableEXT"); + glad_glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)load("glCopyColorSubTableEXT"); +} +static void load_GL_SUNX_constant_data(GLADloadproc load) { + if(!GLAD_GL_SUNX_constant_data) return; + glad_glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)load("glFinishTextureSUNX"); +} +static void load_GL_EXT_multi_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_EXT_multi_draw_arrays) return; + glad_glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)load("glMultiDrawArraysEXT"); + glad_glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)load("glMultiDrawElementsEXT"); +} +static void load_GL_ARB_shader_atomic_counters(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_atomic_counters) return; + glad_glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)load("glGetActiveAtomicCounterBufferiv"); +} +static void load_GL_NV_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NV_conditional_render) return; + glad_glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)load("glBeginConditionalRenderNV"); + glad_glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)load("glEndConditionalRenderNV"); +} +static void load_GL_MESA_resize_buffers(GLADloadproc load) { + if(!GLAD_GL_MESA_resize_buffers) return; + glad_glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)load("glResizeBuffersMESA"); +} +static void load_GL_ARB_texture_view(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_view) return; + glad_glTextureView = (PFNGLTEXTUREVIEWPROC)load("glTextureView"); +} +static void load_GL_ARB_map_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_map_buffer_range) return; + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); +} +static void load_GL_EXT_convolution(GLADloadproc load) { + if(!GLAD_GL_EXT_convolution) return; + glad_glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)load("glConvolutionFilter1DEXT"); + glad_glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)load("glConvolutionFilter2DEXT"); + glad_glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)load("glConvolutionParameterfEXT"); + glad_glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)load("glConvolutionParameterfvEXT"); + glad_glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)load("glConvolutionParameteriEXT"); + glad_glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)load("glConvolutionParameterivEXT"); + glad_glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)load("glCopyConvolutionFilter1DEXT"); + glad_glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)load("glCopyConvolutionFilter2DEXT"); + glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)load("glGetConvolutionFilterEXT"); + glad_glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)load("glGetConvolutionParameterfvEXT"); + glad_glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)load("glGetConvolutionParameterivEXT"); + glad_glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)load("glGetSeparableFilterEXT"); + glad_glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)load("glSeparableFilter2DEXT"); +} +static void load_GL_NV_vertex_attrib_integer_64bit(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_attrib_integer_64bit) return; + glad_glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)load("glVertexAttribL1i64NV"); + glad_glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)load("glVertexAttribL2i64NV"); + glad_glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)load("glVertexAttribL3i64NV"); + glad_glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)load("glVertexAttribL4i64NV"); + glad_glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)load("glVertexAttribL1i64vNV"); + glad_glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)load("glVertexAttribL2i64vNV"); + glad_glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)load("glVertexAttribL3i64vNV"); + glad_glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)load("glVertexAttribL4i64vNV"); + glad_glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)load("glVertexAttribL1ui64NV"); + glad_glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)load("glVertexAttribL2ui64NV"); + glad_glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)load("glVertexAttribL3ui64NV"); + glad_glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)load("glVertexAttribL4ui64NV"); + glad_glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)load("glVertexAttribL1ui64vNV"); + glad_glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)load("glVertexAttribL2ui64vNV"); + glad_glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)load("glVertexAttribL3ui64vNV"); + glad_glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)load("glVertexAttribL4ui64vNV"); + glad_glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)load("glGetVertexAttribLi64vNV"); + glad_glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)load("glGetVertexAttribLui64vNV"); + glad_glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)load("glVertexAttribLFormatNV"); +} +static void load_GL_EXT_paletted_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_paletted_texture) return; + glad_glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)load("glColorTableEXT"); + glad_glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)load("glGetColorTableEXT"); + glad_glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)load("glGetColorTableParameterivEXT"); + glad_glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)load("glGetColorTableParameterfvEXT"); +} +static void load_GL_ARB_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_object) return; + glad_glTexBufferARB = (PFNGLTEXBUFFERARBPROC)load("glTexBufferARB"); +} +static void load_GL_ATI_pn_triangles(GLADloadproc load) { + if(!GLAD_GL_ATI_pn_triangles) return; + glad_glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)load("glPNTrianglesiATI"); + glad_glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)load("glPNTrianglesfATI"); +} +static void load_GL_SGIX_flush_raster(GLADloadproc load) { + if(!GLAD_GL_SGIX_flush_raster) return; + glad_glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)load("glFlushRasterSGIX"); +} +static void load_GL_EXT_light_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_light_texture) return; + glad_glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)load("glApplyTextureEXT"); + glad_glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)load("glTextureLightEXT"); + glad_glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)load("glTextureMaterialEXT"); +} +static void load_GL_HP_image_transform(GLADloadproc load) { + if(!GLAD_GL_HP_image_transform) return; + glad_glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)load("glImageTransformParameteriHP"); + glad_glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)load("glImageTransformParameterfHP"); + glad_glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)load("glImageTransformParameterivHP"); + glad_glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)load("glImageTransformParameterfvHP"); + glad_glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)load("glGetImageTransformParameterivHP"); + glad_glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)load("glGetImageTransformParameterfvHP"); +} +static void load_GL_AMD_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_AMD_draw_buffers_blend) return; + glad_glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)load("glBlendFuncIndexedAMD"); + glad_glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)load("glBlendFuncSeparateIndexedAMD"); + glad_glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)load("glBlendEquationIndexedAMD"); + glad_glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)load("glBlendEquationSeparateIndexedAMD"); +} +static void load_GL_APPLE_texture_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_texture_range) return; + glad_glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)load("glTextureRangeAPPLE"); + glad_glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)load("glGetTexParameterPointervAPPLE"); +} +static void load_GL_EXT_texture_array(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_array) return; + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); +} +static void load_GL_NV_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_NV_texture_barrier) return; + glad_glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)load("glTextureBarrierNV"); +} +static void load_GL_ARB_vertex_type_2_10_10_10_rev(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_type_2_10_10_10_rev) return; + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_3DFX_tbuffer(GLADloadproc load) { + if(!GLAD_GL_3DFX_tbuffer) return; + glad_glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)load("glTbufferMask3DFX"); +} +static void load_GL_GREMEDY_frame_terminator(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_frame_terminator) return; + glad_glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)load("glFrameTerminatorGREMEDY"); +} +static void load_GL_ARB_blend_func_extended(GLADloadproc load) { + if(!GLAD_GL_ARB_blend_func_extended) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); +} +static void load_GL_EXT_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_EXT_separate_shader_objects) return; + glad_glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)load("glUseShaderProgramEXT"); + glad_glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)load("glActiveProgramEXT"); + glad_glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)load("glCreateShaderProgramEXT"); + glad_glActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC)load("glActiveShaderProgramEXT"); + glad_glBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC)load("glBindProgramPipelineEXT"); + glad_glCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC)load("glCreateShaderProgramvEXT"); + glad_glDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC)load("glDeleteProgramPipelinesEXT"); + glad_glGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC)load("glGenProgramPipelinesEXT"); + glad_glGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)load("glGetProgramPipelineInfoLogEXT"); + glad_glGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC)load("glGetProgramPipelineivEXT"); + glad_glIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC)load("glIsProgramPipelineEXT"); + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC)load("glUseProgramStagesEXT"); + glad_glValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)load("glValidateProgramPipelineEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); +} +static void load_GL_NV_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_texture_multisample) return; + glad_glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTexImage2DMultisampleCoverageNV"); + glad_glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTexImage3DMultisampleCoverageNV"); + glad_glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)load("glTextureImage2DMultisampleNV"); + glad_glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)load("glTextureImage3DMultisampleNV"); + glad_glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTextureImage2DMultisampleCoverageNV"); + glad_glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTextureImage3DMultisampleCoverageNV"); +} +static void load_GL_ARB_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_objects) return; + glad_glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)load("glDeleteObjectARB"); + glad_glGetHandleARB = (PFNGLGETHANDLEARBPROC)load("glGetHandleARB"); + glad_glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)load("glDetachObjectARB"); + glad_glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)load("glCreateShaderObjectARB"); + glad_glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)load("glShaderSourceARB"); + glad_glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)load("glCompileShaderARB"); + glad_glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)load("glCreateProgramObjectARB"); + glad_glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)load("glAttachObjectARB"); + glad_glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)load("glLinkProgramARB"); + glad_glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)load("glUseProgramObjectARB"); + glad_glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)load("glValidateProgramARB"); + glad_glUniform1fARB = (PFNGLUNIFORM1FARBPROC)load("glUniform1fARB"); + glad_glUniform2fARB = (PFNGLUNIFORM2FARBPROC)load("glUniform2fARB"); + glad_glUniform3fARB = (PFNGLUNIFORM3FARBPROC)load("glUniform3fARB"); + glad_glUniform4fARB = (PFNGLUNIFORM4FARBPROC)load("glUniform4fARB"); + glad_glUniform1iARB = (PFNGLUNIFORM1IARBPROC)load("glUniform1iARB"); + glad_glUniform2iARB = (PFNGLUNIFORM2IARBPROC)load("glUniform2iARB"); + glad_glUniform3iARB = (PFNGLUNIFORM3IARBPROC)load("glUniform3iARB"); + glad_glUniform4iARB = (PFNGLUNIFORM4IARBPROC)load("glUniform4iARB"); + glad_glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)load("glUniform1fvARB"); + glad_glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)load("glUniform2fvARB"); + glad_glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)load("glUniform3fvARB"); + glad_glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)load("glUniform4fvARB"); + glad_glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)load("glUniform1ivARB"); + glad_glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)load("glUniform2ivARB"); + glad_glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)load("glUniform3ivARB"); + glad_glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)load("glUniform4ivARB"); + glad_glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)load("glUniformMatrix2fvARB"); + glad_glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)load("glUniformMatrix3fvARB"); + glad_glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)load("glUniformMatrix4fvARB"); + glad_glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)load("glGetObjectParameterfvARB"); + glad_glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)load("glGetObjectParameterivARB"); + glad_glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)load("glGetInfoLogARB"); + glad_glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)load("glGetAttachedObjectsARB"); + glad_glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)load("glGetUniformLocationARB"); + glad_glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)load("glGetActiveUniformARB"); + glad_glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)load("glGetUniformfvARB"); + glad_glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)load("glGetUniformivARB"); + glad_glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)load("glGetShaderSourceARB"); +} +static void load_GL_ARB_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_object) return; + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); +} +static void load_GL_ATI_envmap_bumpmap(GLADloadproc load) { + if(!GLAD_GL_ATI_envmap_bumpmap) return; + glad_glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)load("glTexBumpParameterivATI"); + glad_glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)load("glTexBumpParameterfvATI"); + glad_glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)load("glGetTexBumpParameterivATI"); + glad_glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)load("glGetTexBumpParameterfvATI"); +} +static void load_GL_ATI_map_object_buffer(GLADloadproc load) { + if(!GLAD_GL_ATI_map_object_buffer) return; + glad_glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)load("glMapObjectBufferATI"); + glad_glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)load("glUnmapObjectBufferATI"); +} +static void load_GL_ARB_robustness(GLADloadproc load) { + if(!GLAD_GL_ARB_robustness) return; + glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)load("glGetGraphicsResetStatusARB"); + glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)load("glGetnTexImageARB"); + glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)load("glReadnPixelsARB"); + glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)load("glGetnCompressedTexImageARB"); + glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)load("glGetnUniformfvARB"); + glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)load("glGetnUniformivARB"); + glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)load("glGetnUniformuivARB"); + glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)load("glGetnUniformdvARB"); + glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)load("glGetnMapdvARB"); + glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)load("glGetnMapfvARB"); + glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)load("glGetnMapivARB"); + glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)load("glGetnPixelMapfvARB"); + glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)load("glGetnPixelMapuivARB"); + glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)load("glGetnPixelMapusvARB"); + glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)load("glGetnPolygonStippleARB"); + glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)load("glGetnColorTableARB"); + glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)load("glGetnConvolutionFilterARB"); + glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)load("glGetnSeparableFilterARB"); + glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)load("glGetnHistogramARB"); + glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)load("glGetnMinmaxARB"); +} +static void load_GL_NV_pixel_data_range(GLADloadproc load) { + if(!GLAD_GL_NV_pixel_data_range) return; + glad_glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)load("glPixelDataRangeNV"); + glad_glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)load("glFlushPixelDataRangeNV"); +} +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_ARB_gpu_shader_fp64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_fp64) return; + glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); + glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); + glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); + glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); + glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); + glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); + glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); + glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); + glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); + glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); + glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); + glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); + glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); + glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); + glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); + glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); + glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); + glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); +} +static void load_GL_NV_command_list(GLADloadproc load) { + if(!GLAD_GL_NV_command_list) return; + glad_glCreateStatesNV = (PFNGLCREATESTATESNVPROC)load("glCreateStatesNV"); + glad_glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)load("glDeleteStatesNV"); + glad_glIsStateNV = (PFNGLISSTATENVPROC)load("glIsStateNV"); + glad_glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)load("glStateCaptureNV"); + glad_glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)load("glGetCommandHeaderNV"); + glad_glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)load("glGetStageIndexNV"); + glad_glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)load("glDrawCommandsNV"); + glad_glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)load("glDrawCommandsAddressNV"); + glad_glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)load("glDrawCommandsStatesNV"); + glad_glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)load("glDrawCommandsStatesAddressNV"); + glad_glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)load("glCreateCommandListsNV"); + glad_glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)load("glDeleteCommandListsNV"); + glad_glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)load("glIsCommandListNV"); + glad_glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)load("glListDrawCommandsStatesClientNV"); + glad_glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)load("glCommandListSegmentsNV"); + glad_glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)load("glCompileCommandListNV"); + glad_glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)load("glCallCommandListNV"); +} +static void load_GL_EXT_vertex_weighting(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_weighting) return; + glad_glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)load("glVertexWeightfEXT"); + glad_glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)load("glVertexWeightfvEXT"); + glad_glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)load("glVertexWeightPointerEXT"); +} +static void load_GL_GREMEDY_string_marker(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_string_marker) return; + glad_glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)load("glStringMarkerGREMEDY"); +} +static void load_GL_EXT_subtexture(GLADloadproc load) { + if(!GLAD_GL_EXT_subtexture) return; + glad_glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)load("glTexSubImage1DEXT"); + glad_glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)load("glTexSubImage2DEXT"); +} +static void load_GL_EXT_gpu_program_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_program_parameters) return; + glad_glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)load("glProgramEnvParameters4fvEXT"); + glad_glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glProgramLocalParameters4fvEXT"); +} +static void load_GL_NV_evaluators(GLADloadproc load) { + if(!GLAD_GL_NV_evaluators) return; + glad_glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)load("glMapControlPointsNV"); + glad_glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)load("glMapParameterivNV"); + glad_glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)load("glMapParameterfvNV"); + glad_glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)load("glGetMapControlPointsNV"); + glad_glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)load("glGetMapParameterivNV"); + glad_glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)load("glGetMapParameterfvNV"); + glad_glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)load("glGetMapAttribParameterivNV"); + glad_glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)load("glGetMapAttribParameterfvNV"); + glad_glEvalMapsNV = (PFNGLEVALMAPSNVPROC)load("glEvalMapsNV"); +} +static void load_GL_SGIS_texture_filter4(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_filter4) return; + glad_glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)load("glGetTexFilterFuncSGIS"); + glad_glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)load("glTexFilterFuncSGIS"); +} +static void load_GL_AMD_performance_monitor(GLADloadproc load) { + if(!GLAD_GL_AMD_performance_monitor) return; + glad_glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)load("glGetPerfMonitorGroupsAMD"); + glad_glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)load("glGetPerfMonitorCountersAMD"); + glad_glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)load("glGetPerfMonitorGroupStringAMD"); + glad_glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)load("glGetPerfMonitorCounterStringAMD"); + glad_glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)load("glGetPerfMonitorCounterInfoAMD"); + glad_glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)load("glGenPerfMonitorsAMD"); + glad_glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)load("glDeletePerfMonitorsAMD"); + glad_glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)load("glSelectPerfMonitorCountersAMD"); + glad_glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)load("glBeginPerfMonitorAMD"); + glad_glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)load("glEndPerfMonitorAMD"); + glad_glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)load("glGetPerfMonitorCounterDataAMD"); +} +static void load_GL_EXT_stencil_clear_tag(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_clear_tag) return; + glad_glStencilClearTagEXT = (PFNGLSTENCILCLEARTAGEXTPROC)load("glStencilClearTagEXT"); +} +static void load_GL_NV_present_video(GLADloadproc load) { + if(!GLAD_GL_NV_present_video) return; + glad_glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)load("glPresentFrameKeyedNV"); + glad_glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)load("glPresentFrameDualFillNV"); + glad_glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)load("glGetVideoivNV"); + glad_glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)load("glGetVideouivNV"); + glad_glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)load("glGetVideoi64vNV"); + glad_glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)load("glGetVideoui64vNV"); +} +static void load_GL_SGIX_framezoom(GLADloadproc load) { + if(!GLAD_GL_SGIX_framezoom) return; + glad_glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)load("glFrameZoomSGIX"); +} +static void load_GL_ARB_draw_elements_base_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_elements_base_vertex) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); +} +static void load_GL_NV_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback) return; + glad_glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)load("glBeginTransformFeedbackNV"); + glad_glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)load("glEndTransformFeedbackNV"); + glad_glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)load("glTransformFeedbackAttribsNV"); + glad_glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)load("glBindBufferRangeNV"); + glad_glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)load("glBindBufferOffsetNV"); + glad_glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)load("glBindBufferBaseNV"); + glad_glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)load("glTransformFeedbackVaryingsNV"); + glad_glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)load("glActiveVaryingNV"); + glad_glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)load("glGetVaryingLocationNV"); + glad_glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)load("glGetActiveVaryingNV"); + glad_glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)load("glGetTransformFeedbackVaryingNV"); + glad_glTransformFeedbackStreamAttribsNV = (PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)load("glTransformFeedbackStreamAttribsNV"); +} +static void load_GL_NV_fragment_program(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_program) return; + glad_glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)load("glProgramNamedParameter4fNV"); + glad_glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)load("glProgramNamedParameter4fvNV"); + glad_glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)load("glProgramNamedParameter4dNV"); + glad_glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)load("glProgramNamedParameter4dvNV"); + glad_glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)load("glGetProgramNamedParameterfvNV"); + glad_glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)load("glGetProgramNamedParameterdvNV"); +} +static void load_GL_AMD_stencil_operation_extended(GLADloadproc load) { + if(!GLAD_GL_AMD_stencil_operation_extended) return; + glad_glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)load("glStencilOpValueAMD"); +} +static void load_GL_ARB_instanced_arrays(GLADloadproc load) { + if(!GLAD_GL_ARB_instanced_arrays) return; + glad_glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)load("glVertexAttribDivisorARB"); +} +static void load_GL_EXT_polygon_offset(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset) return; + glad_glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)load("glPolygonOffsetEXT"); +} +static void load_GL_KHR_robustness(GLADloadproc load) { + if(!GLAD_GL_KHR_robustness) return; + glad_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)load("glGetGraphicsResetStatus"); + glad_glReadnPixels = (PFNGLREADNPIXELSPROC)load("glReadnPixels"); + glad_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)load("glGetnUniformfv"); + glad_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)load("glGetnUniformiv"); + glad_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)load("glGetnUniformuiv"); + glad_glGetGraphicsResetStatusKHR = (PFNGLGETGRAPHICSRESETSTATUSKHRPROC)load("glGetGraphicsResetStatusKHR"); + glad_glReadnPixelsKHR = (PFNGLREADNPIXELSKHRPROC)load("glReadnPixelsKHR"); + glad_glGetnUniformfvKHR = (PFNGLGETNUNIFORMFVKHRPROC)load("glGetnUniformfvKHR"); + glad_glGetnUniformivKHR = (PFNGLGETNUNIFORMIVKHRPROC)load("glGetnUniformivKHR"); + glad_glGetnUniformuivKHR = (PFNGLGETNUNIFORMUIVKHRPROC)load("glGetnUniformuivKHR"); +} +static void load_GL_AMD_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_AMD_sparse_texture) return; + glad_glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)load("glTexStorageSparseAMD"); + glad_glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)load("glTextureStorageSparseAMD"); +} +static void load_GL_ARB_clip_control(GLADloadproc load) { + if(!GLAD_GL_ARB_clip_control) return; + glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); +} +static void load_GL_NV_fragment_coverage_to_color(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_coverage_to_color) return; + glad_glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)load("glFragmentCoverageColorNV"); +} +static void load_GL_NV_fence(GLADloadproc load) { + if(!GLAD_GL_NV_fence) return; + glad_glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)load("glDeleteFencesNV"); + glad_glGenFencesNV = (PFNGLGENFENCESNVPROC)load("glGenFencesNV"); + glad_glIsFenceNV = (PFNGLISFENCENVPROC)load("glIsFenceNV"); + glad_glTestFenceNV = (PFNGLTESTFENCENVPROC)load("glTestFenceNV"); + glad_glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)load("glGetFenceivNV"); + glad_glFinishFenceNV = (PFNGLFINISHFENCENVPROC)load("glFinishFenceNV"); + glad_glSetFenceNV = (PFNGLSETFENCENVPROC)load("glSetFenceNV"); +} +static void load_GL_ARB_texture_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_range) return; + glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); +} +static void load_GL_SUN_mesh_array(GLADloadproc load) { + if(!GLAD_GL_SUN_mesh_array) return; + glad_glDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC)load("glDrawMeshArraysSUN"); +} +static void load_GL_ARB_vertex_attrib_binding(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_binding) return; + glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); + glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); + glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); + glad_glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)load("glVertexAttribLFormat"); + glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); + glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); +} +static void load_GL_ARB_framebuffer_no_attachments(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_no_attachments) return; + glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); + glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); +} +static void load_GL_ARB_cl_event(GLADloadproc load) { + if(!GLAD_GL_ARB_cl_event) return; + glad_glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)load("glCreateSyncFromCLeventARB"); +} +static void load_GL_OES_single_precision(GLADloadproc load) { + if(!GLAD_GL_OES_single_precision) return; + glad_glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)load("glClearDepthfOES"); + glad_glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)load("glClipPlanefOES"); + glad_glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)load("glDepthRangefOES"); + glad_glFrustumfOES = (PFNGLFRUSTUMFOESPROC)load("glFrustumfOES"); + glad_glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)load("glGetClipPlanefOES"); + glad_glOrthofOES = (PFNGLORTHOFOESPROC)load("glOrthofOES"); +} +static void load_GL_NV_primitive_restart(GLADloadproc load) { + if(!GLAD_GL_NV_primitive_restart) return; + glad_glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)load("glPrimitiveRestartNV"); + glad_glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)load("glPrimitiveRestartIndexNV"); +} +static void load_GL_SUN_global_alpha(GLADloadproc load) { + if(!GLAD_GL_SUN_global_alpha) return; + glad_glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)load("glGlobalAlphaFactorbSUN"); + glad_glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)load("glGlobalAlphaFactorsSUN"); + glad_glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)load("glGlobalAlphaFactoriSUN"); + glad_glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)load("glGlobalAlphaFactorfSUN"); + glad_glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)load("glGlobalAlphaFactordSUN"); + glad_glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)load("glGlobalAlphaFactorubSUN"); + glad_glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)load("glGlobalAlphaFactorusSUN"); + glad_glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)load("glGlobalAlphaFactoruiSUN"); +} +static void load_GL_EXT_texture_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_object) return; + glad_glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)load("glAreTexturesResidentEXT"); + glad_glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)load("glBindTextureEXT"); + glad_glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)load("glDeleteTexturesEXT"); + glad_glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)load("glGenTexturesEXT"); + glad_glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)load("glIsTextureEXT"); + glad_glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)load("glPrioritizeTexturesEXT"); +} +static void load_GL_AMD_name_gen_delete(GLADloadproc load) { + if(!GLAD_GL_AMD_name_gen_delete) return; + glad_glGenNamesAMD = (PFNGLGENNAMESAMDPROC)load("glGenNamesAMD"); + glad_glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)load("glDeleteNamesAMD"); + glad_glIsNameAMD = (PFNGLISNAMEAMDPROC)load("glIsNameAMD"); +} +static void load_GL_ARB_buffer_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_buffer_storage) return; + glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); +} +static void load_GL_APPLE_vertex_program_evaluators(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_program_evaluators) return; + glad_glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)load("glEnableVertexAttribAPPLE"); + glad_glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)load("glDisableVertexAttribAPPLE"); + glad_glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)load("glIsVertexAttribEnabledAPPLE"); + glad_glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)load("glMapVertexAttrib1dAPPLE"); + glad_glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)load("glMapVertexAttrib1fAPPLE"); + glad_glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)load("glMapVertexAttrib2dAPPLE"); + glad_glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)load("glMapVertexAttrib2fAPPLE"); +} +static void load_GL_ARB_multi_bind(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_bind) return; + glad_glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)load("glBindBuffersBase"); + glad_glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)load("glBindBuffersRange"); + glad_glBindTextures = (PFNGLBINDTEXTURESPROC)load("glBindTextures"); + glad_glBindSamplers = (PFNGLBINDSAMPLERSPROC)load("glBindSamplers"); + glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); + glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); +} +static void load_GL_SGIX_list_priority(GLADloadproc load) { + if(!GLAD_GL_SGIX_list_priority) return; + glad_glGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC)load("glGetListParameterfvSGIX"); + glad_glGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC)load("glGetListParameterivSGIX"); + glad_glListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC)load("glListParameterfSGIX"); + glad_glListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC)load("glListParameterfvSGIX"); + glad_glListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC)load("glListParameteriSGIX"); + glad_glListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC)load("glListParameterivSGIX"); +} +static void load_GL_NV_vertex_buffer_unified_memory(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_buffer_unified_memory) return; + glad_glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)load("glBufferAddressRangeNV"); + glad_glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)load("glVertexFormatNV"); + glad_glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)load("glNormalFormatNV"); + glad_glColorFormatNV = (PFNGLCOLORFORMATNVPROC)load("glColorFormatNV"); + glad_glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)load("glIndexFormatNV"); + glad_glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)load("glTexCoordFormatNV"); + glad_glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)load("glEdgeFlagFormatNV"); + glad_glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)load("glSecondaryColorFormatNV"); + glad_glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)load("glFogCoordFormatNV"); + glad_glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)load("glVertexAttribFormatNV"); + glad_glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)load("glVertexAttribIFormatNV"); + glad_glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)load("glGetIntegerui64i_vNV"); +} +static void load_GL_NV_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_NV_blend_equation_advanced) return; + glad_glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)load("glBlendParameteriNV"); + glad_glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)load("glBlendBarrierNV"); +} +static void load_GL_SGIS_sharpen_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_sharpen_texture) return; + glad_glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)load("glSharpenTexFuncSGIS"); + glad_glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)load("glGetSharpenTexFuncSGIS"); +} +static void load_GL_ARB_vertex_program(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_program) return; + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_vertex_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_buffer_object) return; + glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC)load("glBindBufferARB"); + glad_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)load("glDeleteBuffersARB"); + glad_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)load("glGenBuffersARB"); + glad_glIsBufferARB = (PFNGLISBUFFERARBPROC)load("glIsBufferARB"); + glad_glBufferDataARB = (PFNGLBUFFERDATAARBPROC)load("glBufferDataARB"); + glad_glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)load("glBufferSubDataARB"); + glad_glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)load("glGetBufferSubDataARB"); + glad_glMapBufferARB = (PFNGLMAPBUFFERARBPROC)load("glMapBufferARB"); + glad_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)load("glUnmapBufferARB"); + glad_glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)load("glGetBufferParameterivARB"); + glad_glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)load("glGetBufferPointervARB"); +} +static void load_GL_NV_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_array_range) return; + glad_glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)load("glFlushVertexArrayRangeNV"); + glad_glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)load("glVertexArrayRangeNV"); +} +static void load_GL_SGIX_fragment_lighting(GLADloadproc load) { + if(!GLAD_GL_SGIX_fragment_lighting) return; + glad_glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)load("glFragmentColorMaterialSGIX"); + glad_glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)load("glFragmentLightfSGIX"); + glad_glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)load("glFragmentLightfvSGIX"); + glad_glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)load("glFragmentLightiSGIX"); + glad_glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)load("glFragmentLightivSGIX"); + glad_glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)load("glFragmentLightModelfSGIX"); + glad_glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)load("glFragmentLightModelfvSGIX"); + glad_glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)load("glFragmentLightModeliSGIX"); + glad_glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)load("glFragmentLightModelivSGIX"); + glad_glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)load("glFragmentMaterialfSGIX"); + glad_glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)load("glFragmentMaterialfvSGIX"); + glad_glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)load("glFragmentMaterialiSGIX"); + glad_glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)load("glFragmentMaterialivSGIX"); + glad_glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)load("glGetFragmentLightfvSGIX"); + glad_glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)load("glGetFragmentLightivSGIX"); + glad_glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)load("glGetFragmentMaterialfvSGIX"); + glad_glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)load("glGetFragmentMaterialivSGIX"); + glad_glLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC)load("glLightEnviSGIX"); +} +static void load_GL_NV_framebuffer_multisample_coverage(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_multisample_coverage) return; + glad_glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)load("glRenderbufferStorageMultisampleCoverageNV"); +} +static void load_GL_EXT_timer_query(GLADloadproc load) { + if(!GLAD_GL_EXT_timer_query) return; + glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); + glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); +} +static void load_GL_NV_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_texture) return; + glad_glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)load("glGetTextureHandleNV"); + glad_glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)load("glGetTextureSamplerHandleNV"); + glad_glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)load("glMakeTextureHandleResidentNV"); + glad_glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)load("glMakeTextureHandleNonResidentNV"); + glad_glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)load("glGetImageHandleNV"); + glad_glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)load("glMakeImageHandleResidentNV"); + glad_glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)load("glMakeImageHandleNonResidentNV"); + glad_glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)load("glUniformHandleui64NV"); + glad_glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)load("glUniformHandleui64vNV"); + glad_glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)load("glProgramUniformHandleui64NV"); + glad_glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)load("glProgramUniformHandleui64vNV"); + glad_glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)load("glIsTextureHandleResidentNV"); + glad_glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)load("glIsImageHandleResidentNV"); +} +static void load_GL_KHR_debug(GLADloadproc load) { + if(!GLAD_GL_KHR_debug) return; + glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl"); + glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)load("glDebugMessageInsert"); + glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)load("glDebugMessageCallback"); + glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)load("glGetDebugMessageLog"); + glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)load("glPushDebugGroup"); + glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)load("glPopDebugGroup"); + glad_glObjectLabel = (PFNGLOBJECTLABELPROC)load("glObjectLabel"); + glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)load("glGetObjectLabel"); + glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)load("glObjectPtrLabel"); + glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); + glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)load("glDebugMessageControlKHR"); + glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)load("glDebugMessageInsertKHR"); + glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)load("glDebugMessageCallbackKHR"); + glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC)load("glGetDebugMessageLogKHR"); + glad_glPushDebugGroupKHR = (PFNGLPUSHDEBUGGROUPKHRPROC)load("glPushDebugGroupKHR"); + glad_glPopDebugGroupKHR = (PFNGLPOPDEBUGGROUPKHRPROC)load("glPopDebugGroupKHR"); + glad_glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)load("glObjectLabelKHR"); + glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC)load("glGetObjectLabelKHR"); + glad_glObjectPtrLabelKHR = (PFNGLOBJECTPTRLABELKHRPROC)load("glObjectPtrLabelKHR"); + glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC)load("glGetObjectPtrLabelKHR"); + glad_glGetPointervKHR = (PFNGLGETPOINTERVKHRPROC)load("glGetPointervKHR"); +} +static void load_GL_ATI_vertex_attrib_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_attrib_array_object) return; + glad_glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)load("glVertexAttribArrayObjectATI"); + glad_glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)load("glGetVertexAttribArrayObjectfvATI"); + glad_glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)load("glGetVertexAttribArrayObjectivATI"); +} +static void load_GL_EXT_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_geometry_shader4) return; + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); +} +static void load_GL_EXT_bindable_uniform(GLADloadproc load) { + if(!GLAD_GL_EXT_bindable_uniform) return; + glad_glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)load("glUniformBufferEXT"); + glad_glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)load("glGetUniformBufferSizeEXT"); + glad_glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)load("glGetUniformOffsetEXT"); +} +static void load_GL_KHR_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_KHR_blend_equation_advanced) return; + glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); +} +static void load_GL_ATI_element_array(GLADloadproc load) { + if(!GLAD_GL_ATI_element_array) return; + glad_glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)load("glElementPointerATI"); + glad_glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)load("glDrawElementArrayATI"); + glad_glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)load("glDrawRangeElementArrayATI"); +} +static void load_GL_SGIX_reference_plane(GLADloadproc load) { + if(!GLAD_GL_SGIX_reference_plane) return; + glad_glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)load("glReferencePlaneSGIX"); +} +static void load_GL_EXT_stencil_two_side(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_two_side) return; + glad_glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)load("glActiveStencilFaceEXT"); +} +static void load_GL_NV_explicit_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_explicit_multisample) return; + glad_glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)load("glGetMultisamplefvNV"); + glad_glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)load("glSampleMaskIndexedNV"); + glad_glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)load("glTexRenderbufferNV"); +} +static void load_GL_IBM_static_data(GLADloadproc load) { + if(!GLAD_GL_IBM_static_data) return; + glad_glFlushStaticDataIBM = (PFNGLFLUSHSTATICDATAIBMPROC)load("glFlushStaticDataIBM"); +} +static void load_GL_EXT_texture_perturb_normal(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_perturb_normal) return; + glad_glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)load("glTextureNormalEXT"); +} +static void load_GL_EXT_point_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_point_parameters) return; + glad_glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)load("glPointParameterfEXT"); + glad_glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)load("glPointParameterfvEXT"); +} +static void load_GL_PGI_misc_hints(GLADloadproc load) { + if(!GLAD_GL_PGI_misc_hints) return; + glad_glHintPGI = (PFNGLHINTPGIPROC)load("glHintPGI"); +} +static void load_GL_ARB_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_shader) return; + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)load("glBindAttribLocationARB"); + glad_glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)load("glGetActiveAttribARB"); + glad_glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)load("glGetAttribLocationARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); +} +static void load_GL_ARB_tessellation_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_tessellation_shader) return; + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); +} +static void load_GL_EXT_draw_buffers2(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_buffers2) return; + glad_glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)load("glColorMaskIndexedEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); +} +static void load_GL_ARB_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_64bit) return; + glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); + glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); + glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); + glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); + glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); + glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); + glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); + glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); + glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); + glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); +} +static void load_GL_EXT_texture_filter_minmax(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_filter_minmax) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); +} +static void load_GL_AMD_interleaved_elements(GLADloadproc load) { + if(!GLAD_GL_AMD_interleaved_elements) return; + glad_glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)load("glVertexAttribParameteriAMD"); +} +static void load_GL_ARB_fragment_program(GLADloadproc load) { + if(!GLAD_GL_ARB_fragment_program) return; + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_texture_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage) return; + glad_glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)load("glTexStorage1D"); + glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); + glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); +} +static void load_GL_ARB_copy_image(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_image) return; + glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); +} +static void load_GL_SGIS_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_pixel_texture) return; + glad_glPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC)load("glPixelTexGenParameteriSGIS"); + glad_glPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC)load("glPixelTexGenParameterivSGIS"); + glad_glPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC)load("glPixelTexGenParameterfSGIS"); + glad_glPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC)load("glPixelTexGenParameterfvSGIS"); + glad_glGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)load("glGetPixelTexGenParameterivSGIS"); + glad_glGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)load("glGetPixelTexGenParameterfvSGIS"); +} +static void load_GL_SGIX_instruments(GLADloadproc load) { + if(!GLAD_GL_SGIX_instruments) return; + glad_glGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC)load("glGetInstrumentsSGIX"); + glad_glInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC)load("glInstrumentsBufferSGIX"); + glad_glPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC)load("glPollInstrumentsSGIX"); + glad_glReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC)load("glReadInstrumentsSGIX"); + glad_glStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC)load("glStartInstrumentsSGIX"); + glad_glStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC)load("glStopInstrumentsSGIX"); +} +static void load_GL_ARB_shader_storage_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_storage_buffer_object) return; + glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)load("glShaderStorageBlockBinding"); +} +static void load_GL_EXT_blend_minmax(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_minmax) return; + glad_glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)load("glBlendEquationEXT"); +} +static void load_GL_ARB_base_instance(GLADloadproc load) { + if(!GLAD_GL_ARB_base_instance) return; + glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); +} +static void load_GL_ARB_ES3_1_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_1_compatibility) return; + glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); +} +static void load_GL_EXT_texture_integer(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_integer) return; + glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); + glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); + glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); + glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); + glad_glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)load("glClearColorIiEXT"); + glad_glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)load("glClearColorIuiEXT"); +} +static void load_GL_ARB_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_multisample) return; + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_AMD_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_AMD_gpu_shader_int64) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_AMD_vertex_shader_tessellator(GLADloadproc load) { + if(!GLAD_GL_AMD_vertex_shader_tessellator) return; + glad_glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)load("glTessellationFactorAMD"); + glad_glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)load("glTessellationModeAMD"); +} +static void load_GL_ARB_invalidate_subdata(GLADloadproc load) { + if(!GLAD_GL_ARB_invalidate_subdata) return; + glad_glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)load("glInvalidateTexSubImage"); + glad_glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)load("glInvalidateTexImage"); + glad_glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)load("glInvalidateBufferSubData"); + glad_glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)load("glInvalidateBufferData"); + glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); + glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); +} +static void load_GL_EXT_index_material(GLADloadproc load) { + if(!GLAD_GL_EXT_index_material) return; + glad_glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)load("glIndexMaterialEXT"); +} +static void load_GL_INTEL_parallel_arrays(GLADloadproc load) { + if(!GLAD_GL_INTEL_parallel_arrays) return; + glad_glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)load("glVertexPointervINTEL"); + glad_glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)load("glNormalPointervINTEL"); + glad_glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)load("glColorPointervINTEL"); + glad_glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)load("glTexCoordPointervINTEL"); +} +static void load_GL_ATI_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ATI_draw_buffers) return; + glad_glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)load("glDrawBuffersATI"); +} +static void load_GL_SGIX_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIX_pixel_texture) return; + glad_glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)load("glPixelTexGenSGIX"); +} +static void load_GL_ARB_timer_query(GLADloadproc load) { + if(!GLAD_GL_ARB_timer_query) return; + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); +} +static void load_GL_NV_parameter_buffer_object(GLADloadproc load) { + if(!GLAD_GL_NV_parameter_buffer_object) return; + glad_glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)load("glProgramBufferParametersfvNV"); + glad_glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)load("glProgramBufferParametersIivNV"); + glad_glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)load("glProgramBufferParametersIuivNV"); +} +static void load_GL_ARB_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_ARB_direct_state_access) return; + glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); + glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); + glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)load("glTransformFeedbackBufferRange"); + glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)load("glGetTransformFeedbackiv"); + glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)load("glGetTransformFeedbacki_v"); + glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)load("glGetTransformFeedbacki64_v"); + glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC)load("glCreateBuffers"); + glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)load("glNamedBufferStorage"); + glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)load("glNamedBufferData"); + glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)load("glNamedBufferSubData"); + glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)load("glCopyNamedBufferSubData"); + glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)load("glClearNamedBufferData"); + glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)load("glClearNamedBufferSubData"); + glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)load("glMapNamedBuffer"); + glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)load("glMapNamedBufferRange"); + glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)load("glUnmapNamedBuffer"); + glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)load("glFlushMappedNamedBufferRange"); + glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)load("glGetNamedBufferParameteriv"); + glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)load("glGetNamedBufferParameteri64v"); + glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)load("glGetNamedBufferPointerv"); + glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)load("glGetNamedBufferSubData"); + glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)load("glCreateFramebuffers"); + glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)load("glNamedFramebufferRenderbuffer"); + glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)load("glNamedFramebufferParameteri"); + glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)load("glNamedFramebufferTexture"); + glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)load("glNamedFramebufferTextureLayer"); + glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)load("glNamedFramebufferDrawBuffer"); + glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)load("glNamedFramebufferDrawBuffers"); + glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)load("glNamedFramebufferReadBuffer"); + glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)load("glInvalidateNamedFramebufferData"); + glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)load("glInvalidateNamedFramebufferSubData"); + glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)load("glClearNamedFramebufferiv"); + glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)load("glClearNamedFramebufferuiv"); + glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)load("glClearNamedFramebufferfv"); + glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)load("glClearNamedFramebufferfi"); + glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)load("glBlitNamedFramebuffer"); + glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)load("glCheckNamedFramebufferStatus"); + glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)load("glGetNamedFramebufferParameteriv"); + glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetNamedFramebufferAttachmentParameteriv"); + glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)load("glCreateRenderbuffers"); + glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)load("glNamedRenderbufferStorage"); + glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glNamedRenderbufferStorageMultisample"); + glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)load("glGetNamedRenderbufferParameteriv"); + glad_glCreateTextures = (PFNGLCREATETEXTURESPROC)load("glCreateTextures"); + glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)load("glTextureBuffer"); + glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)load("glTextureBufferRange"); + glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)load("glTextureStorage1D"); + glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)load("glTextureStorage2D"); + glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)load("glTextureStorage3D"); + glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)load("glTextureStorage2DMultisample"); + glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)load("glTextureStorage3DMultisample"); + glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)load("glTextureSubImage1D"); + glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)load("glTextureSubImage2D"); + glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)load("glTextureSubImage3D"); + glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)load("glCompressedTextureSubImage1D"); + glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)load("glCompressedTextureSubImage2D"); + glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)load("glCompressedTextureSubImage3D"); + glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)load("glCopyTextureSubImage1D"); + glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)load("glCopyTextureSubImage2D"); + glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)load("glCopyTextureSubImage3D"); + glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)load("glTextureParameterf"); + glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)load("glTextureParameterfv"); + glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)load("glTextureParameteri"); + glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)load("glTextureParameterIiv"); + glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)load("glTextureParameterIuiv"); + glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)load("glTextureParameteriv"); + glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)load("glGenerateTextureMipmap"); + glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)load("glBindTextureUnit"); + glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)load("glGetTextureImage"); + glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)load("glGetCompressedTextureImage"); + glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)load("glGetTextureLevelParameterfv"); + glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)load("glGetTextureLevelParameteriv"); + glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)load("glGetTextureParameterfv"); + glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)load("glGetTextureParameterIiv"); + glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)load("glGetTextureParameterIuiv"); + glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)load("glGetTextureParameteriv"); + glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)load("glCreateVertexArrays"); + glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)load("glDisableVertexArrayAttrib"); + glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)load("glEnableVertexArrayAttrib"); + glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)load("glVertexArrayElementBuffer"); + glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)load("glVertexArrayVertexBuffer"); + glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)load("glVertexArrayVertexBuffers"); + glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)load("glVertexArrayAttribBinding"); + glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)load("glVertexArrayAttribFormat"); + glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)load("glVertexArrayAttribIFormat"); + glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)load("glVertexArrayAttribLFormat"); + glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)load("glVertexArrayBindingDivisor"); + glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)load("glGetVertexArrayiv"); + glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)load("glGetVertexArrayIndexediv"); + glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)load("glGetVertexArrayIndexed64iv"); + glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC)load("glCreateSamplers"); + glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)load("glCreateProgramPipelines"); + glad_glCreateQueries = (PFNGLCREATEQUERIESPROC)load("glCreateQueries"); + glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)load("glGetQueryBufferObjecti64v"); + glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)load("glGetQueryBufferObjectiv"); + glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)load("glGetQueryBufferObjectui64v"); + glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)load("glGetQueryBufferObjectuiv"); +} +static void load_GL_ARB_uniform_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_uniform_buffer_object) return; + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_NV_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback2) return; + glad_glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)load("glBindTransformFeedbackNV"); + glad_glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)load("glDeleteTransformFeedbacksNV"); + glad_glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)load("glGenTransformFeedbacksNV"); + glad_glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)load("glIsTransformFeedbackNV"); + glad_glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)load("glPauseTransformFeedbackNV"); + glad_glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)load("glResumeTransformFeedbackNV"); + glad_glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)load("glDrawTransformFeedbackNV"); +} +static void load_GL_EXT_blend_color(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_color) return; + glad_glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)load("glBlendColorEXT"); +} +static void load_GL_EXT_histogram(GLADloadproc load) { + if(!GLAD_GL_EXT_histogram) return; + glad_glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)load("glGetHistogramEXT"); + glad_glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)load("glGetHistogramParameterfvEXT"); + glad_glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)load("glGetHistogramParameterivEXT"); + glad_glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)load("glGetMinmaxEXT"); + glad_glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)load("glGetMinmaxParameterfvEXT"); + glad_glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)load("glGetMinmaxParameterivEXT"); + glad_glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)load("glHistogramEXT"); + glad_glMinmaxEXT = (PFNGLMINMAXEXTPROC)load("glMinmaxEXT"); + glad_glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)load("glResetHistogramEXT"); + glad_glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)load("glResetMinmaxEXT"); +} +static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { + if(!GLAD_GL_ARB_get_texture_sub_image) return; + glad_glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)load("glGetTextureSubImage"); + glad_glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)load("glGetCompressedTextureSubImage"); +} +static void load_GL_SGIS_point_parameters(GLADloadproc load) { + if(!GLAD_GL_SGIS_point_parameters) return; + glad_glPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC)load("glPointParameterfSGIS"); + glad_glPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC)load("glPointParameterfvSGIS"); +} +static void load_GL_EXT_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_EXT_direct_state_access) return; + glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); + glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); + glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); + glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); + glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); + glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); + glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); + glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); + glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); + glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); + glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); + glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); + glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); + glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); + glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); + glad_glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)load("glClientAttribDefaultEXT"); + glad_glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)load("glPushClientAttribDefaultEXT"); + glad_glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)load("glTextureParameterfEXT"); + glad_glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)load("glTextureParameterfvEXT"); + glad_glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)load("glTextureParameteriEXT"); + glad_glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)load("glTextureParameterivEXT"); + glad_glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)load("glTextureImage1DEXT"); + glad_glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)load("glTextureImage2DEXT"); + glad_glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)load("glTextureSubImage1DEXT"); + glad_glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)load("glTextureSubImage2DEXT"); + glad_glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)load("glCopyTextureImage1DEXT"); + glad_glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)load("glCopyTextureImage2DEXT"); + glad_glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)load("glCopyTextureSubImage1DEXT"); + glad_glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)load("glCopyTextureSubImage2DEXT"); + glad_glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)load("glGetTextureImageEXT"); + glad_glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)load("glGetTextureParameterfvEXT"); + glad_glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)load("glGetTextureParameterivEXT"); + glad_glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)load("glGetTextureLevelParameterfvEXT"); + glad_glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)load("glGetTextureLevelParameterivEXT"); + glad_glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)load("glTextureImage3DEXT"); + glad_glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)load("glTextureSubImage3DEXT"); + glad_glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)load("glCopyTextureSubImage3DEXT"); + glad_glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)load("glBindMultiTextureEXT"); + glad_glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)load("glMultiTexCoordPointerEXT"); + glad_glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)load("glMultiTexEnvfEXT"); + glad_glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)load("glMultiTexEnvfvEXT"); + glad_glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)load("glMultiTexEnviEXT"); + glad_glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)load("glMultiTexEnvivEXT"); + glad_glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)load("glMultiTexGendEXT"); + glad_glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)load("glMultiTexGendvEXT"); + glad_glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)load("glMultiTexGenfEXT"); + glad_glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)load("glMultiTexGenfvEXT"); + glad_glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)load("glMultiTexGeniEXT"); + glad_glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)load("glMultiTexGenivEXT"); + glad_glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)load("glGetMultiTexEnvfvEXT"); + glad_glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)load("glGetMultiTexEnvivEXT"); + glad_glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)load("glGetMultiTexGendvEXT"); + glad_glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)load("glGetMultiTexGenfvEXT"); + glad_glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)load("glGetMultiTexGenivEXT"); + glad_glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)load("glMultiTexParameteriEXT"); + glad_glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)load("glMultiTexParameterivEXT"); + glad_glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)load("glMultiTexParameterfEXT"); + glad_glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)load("glMultiTexParameterfvEXT"); + glad_glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)load("glMultiTexImage1DEXT"); + glad_glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)load("glMultiTexImage2DEXT"); + glad_glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)load("glMultiTexSubImage1DEXT"); + glad_glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)load("glMultiTexSubImage2DEXT"); + glad_glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)load("glCopyMultiTexImage1DEXT"); + glad_glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)load("glCopyMultiTexImage2DEXT"); + glad_glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)load("glCopyMultiTexSubImage1DEXT"); + glad_glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)load("glCopyMultiTexSubImage2DEXT"); + glad_glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)load("glGetMultiTexImageEXT"); + glad_glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)load("glGetMultiTexParameterfvEXT"); + glad_glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)load("glGetMultiTexParameterivEXT"); + glad_glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)load("glGetMultiTexLevelParameterfvEXT"); + glad_glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)load("glGetMultiTexLevelParameterivEXT"); + glad_glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)load("glMultiTexImage3DEXT"); + glad_glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)load("glMultiTexSubImage3DEXT"); + glad_glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)load("glCopyMultiTexSubImage3DEXT"); + glad_glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)load("glEnableClientStateIndexedEXT"); + glad_glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)load("glDisableClientStateIndexedEXT"); + glad_glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)load("glGetFloatIndexedvEXT"); + glad_glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)load("glGetDoubleIndexedvEXT"); + glad_glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)load("glGetPointerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)load("glCompressedTextureImage3DEXT"); + glad_glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)load("glCompressedTextureImage2DEXT"); + glad_glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)load("glCompressedTextureImage1DEXT"); + glad_glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)load("glCompressedTextureSubImage3DEXT"); + glad_glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)load("glCompressedTextureSubImage2DEXT"); + glad_glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)load("glCompressedTextureSubImage1DEXT"); + glad_glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)load("glGetCompressedTextureImageEXT"); + glad_glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)load("glCompressedMultiTexImage3DEXT"); + glad_glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)load("glCompressedMultiTexImage2DEXT"); + glad_glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)load("glCompressedMultiTexImage1DEXT"); + glad_glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)load("glCompressedMultiTexSubImage3DEXT"); + glad_glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)load("glCompressedMultiTexSubImage2DEXT"); + glad_glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)load("glCompressedMultiTexSubImage1DEXT"); + glad_glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)load("glGetCompressedMultiTexImageEXT"); + glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); + glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); + glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); + glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); + glad_glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)load("glNamedBufferDataEXT"); + glad_glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)load("glNamedBufferSubDataEXT"); + glad_glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)load("glMapNamedBufferEXT"); + glad_glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)load("glUnmapNamedBufferEXT"); + glad_glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)load("glGetNamedBufferParameterivEXT"); + glad_glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)load("glGetNamedBufferPointervEXT"); + glad_glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)load("glGetNamedBufferSubDataEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); + glad_glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)load("glTextureBufferEXT"); + glad_glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)load("glMultiTexBufferEXT"); + glad_glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)load("glTextureParameterIivEXT"); + glad_glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)load("glTextureParameterIuivEXT"); + glad_glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)load("glGetTextureParameterIivEXT"); + glad_glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)load("glGetTextureParameterIuivEXT"); + glad_glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)load("glMultiTexParameterIivEXT"); + glad_glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)load("glMultiTexParameterIuivEXT"); + glad_glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)load("glGetMultiTexParameterIivEXT"); + glad_glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)load("glGetMultiTexParameterIuivEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glNamedProgramLocalParameters4fvEXT"); + glad_glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)load("glNamedProgramLocalParameterI4iEXT"); + glad_glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)load("glNamedProgramLocalParameterI4ivEXT"); + glad_glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)load("glNamedProgramLocalParametersI4ivEXT"); + glad_glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)load("glNamedProgramLocalParameterI4uiEXT"); + glad_glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)load("glNamedProgramLocalParameterI4uivEXT"); + glad_glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)load("glNamedProgramLocalParametersI4uivEXT"); + glad_glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)load("glGetNamedProgramLocalParameterIivEXT"); + glad_glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)load("glGetNamedProgramLocalParameterIuivEXT"); + glad_glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)load("glEnableClientStateiEXT"); + glad_glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)load("glDisableClientStateiEXT"); + glad_glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)load("glGetFloati_vEXT"); + glad_glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)load("glGetDoublei_vEXT"); + glad_glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)load("glGetPointeri_vEXT"); + glad_glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)load("glNamedProgramStringEXT"); + glad_glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)load("glNamedProgramLocalParameter4dEXT"); + glad_glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)load("glNamedProgramLocalParameter4dvEXT"); + glad_glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)load("glNamedProgramLocalParameter4fEXT"); + glad_glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)load("glNamedProgramLocalParameter4fvEXT"); + glad_glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)load("glGetNamedProgramLocalParameterdvEXT"); + glad_glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)load("glGetNamedProgramLocalParameterfvEXT"); + glad_glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)load("glGetNamedProgramivEXT"); + glad_glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)load("glGetNamedProgramStringEXT"); + glad_glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)load("glNamedRenderbufferStorageEXT"); + glad_glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)load("glGetNamedRenderbufferParameterivEXT"); + glad_glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glNamedRenderbufferStorageMultisampleEXT"); + glad_glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)load("glNamedRenderbufferStorageMultisampleCoverageEXT"); + glad_glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)load("glCheckNamedFramebufferStatusEXT"); + glad_glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)load("glNamedFramebufferTexture1DEXT"); + glad_glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)load("glNamedFramebufferTexture2DEXT"); + glad_glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)load("glNamedFramebufferTexture3DEXT"); + glad_glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)load("glNamedFramebufferRenderbufferEXT"); + glad_glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetNamedFramebufferAttachmentParameterivEXT"); + glad_glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)load("glGenerateTextureMipmapEXT"); + glad_glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)load("glGenerateMultiTexMipmapEXT"); + glad_glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)load("glFramebufferDrawBufferEXT"); + glad_glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)load("glFramebufferDrawBuffersEXT"); + glad_glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)load("glFramebufferReadBufferEXT"); + glad_glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetFramebufferParameterivEXT"); + glad_glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)load("glNamedCopyBufferSubDataEXT"); + glad_glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)load("glNamedFramebufferTextureEXT"); + glad_glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)load("glNamedFramebufferTextureLayerEXT"); + glad_glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)load("glNamedFramebufferTextureFaceEXT"); + glad_glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)load("glTextureRenderbufferEXT"); + glad_glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)load("glMultiTexRenderbufferEXT"); + glad_glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)load("glVertexArrayVertexOffsetEXT"); + glad_glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)load("glVertexArrayColorOffsetEXT"); + glad_glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)load("glVertexArrayEdgeFlagOffsetEXT"); + glad_glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)load("glVertexArrayIndexOffsetEXT"); + glad_glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)load("glVertexArrayNormalOffsetEXT"); + glad_glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)load("glVertexArrayTexCoordOffsetEXT"); + glad_glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)load("glVertexArrayMultiTexCoordOffsetEXT"); + glad_glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)load("glVertexArrayFogCoordOffsetEXT"); + glad_glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)load("glVertexArraySecondaryColorOffsetEXT"); + glad_glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)load("glVertexArrayVertexAttribOffsetEXT"); + glad_glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)load("glVertexArrayVertexAttribIOffsetEXT"); + glad_glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)load("glEnableVertexArrayEXT"); + glad_glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)load("glDisableVertexArrayEXT"); + glad_glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)load("glEnableVertexArrayAttribEXT"); + glad_glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)load("glDisableVertexArrayAttribEXT"); + glad_glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)load("glGetVertexArrayIntegervEXT"); + glad_glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)load("glGetVertexArrayPointervEXT"); + glad_glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)load("glGetVertexArrayIntegeri_vEXT"); + glad_glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)load("glGetVertexArrayPointeri_vEXT"); + glad_glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)load("glMapNamedBufferRangeEXT"); + glad_glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)load("glFlushMappedNamedBufferRangeEXT"); + glad_glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)load("glNamedBufferStorageEXT"); + glad_glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)load("glClearNamedBufferDataEXT"); + glad_glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)load("glClearNamedBufferSubDataEXT"); + glad_glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)load("glNamedFramebufferParameteriEXT"); + glad_glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetNamedFramebufferParameterivEXT"); + glad_glProgramUniform1dEXT = (PFNGLPROGRAMUNIFORM1DEXTPROC)load("glProgramUniform1dEXT"); + glad_glProgramUniform2dEXT = (PFNGLPROGRAMUNIFORM2DEXTPROC)load("glProgramUniform2dEXT"); + glad_glProgramUniform3dEXT = (PFNGLPROGRAMUNIFORM3DEXTPROC)load("glProgramUniform3dEXT"); + glad_glProgramUniform4dEXT = (PFNGLPROGRAMUNIFORM4DEXTPROC)load("glProgramUniform4dEXT"); + glad_glProgramUniform1dvEXT = (PFNGLPROGRAMUNIFORM1DVEXTPROC)load("glProgramUniform1dvEXT"); + glad_glProgramUniform2dvEXT = (PFNGLPROGRAMUNIFORM2DVEXTPROC)load("glProgramUniform2dvEXT"); + glad_glProgramUniform3dvEXT = (PFNGLPROGRAMUNIFORM3DVEXTPROC)load("glProgramUniform3dvEXT"); + glad_glProgramUniform4dvEXT = (PFNGLPROGRAMUNIFORM4DVEXTPROC)load("glProgramUniform4dvEXT"); + glad_glProgramUniformMatrix2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)load("glProgramUniformMatrix2dvEXT"); + glad_glProgramUniformMatrix3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)load("glProgramUniformMatrix3dvEXT"); + glad_glProgramUniformMatrix4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)load("glProgramUniformMatrix4dvEXT"); + glad_glProgramUniformMatrix2x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)load("glProgramUniformMatrix2x3dvEXT"); + glad_glProgramUniformMatrix2x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)load("glProgramUniformMatrix2x4dvEXT"); + glad_glProgramUniformMatrix3x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)load("glProgramUniformMatrix3x2dvEXT"); + glad_glProgramUniformMatrix3x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)load("glProgramUniformMatrix3x4dvEXT"); + glad_glProgramUniformMatrix4x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)load("glProgramUniformMatrix4x2dvEXT"); + glad_glProgramUniformMatrix4x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)load("glProgramUniformMatrix4x3dvEXT"); + glad_glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)load("glTextureBufferRangeEXT"); + glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); + glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); + glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); + glad_glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)load("glTextureStorage2DMultisampleEXT"); + glad_glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)load("glTextureStorage3DMultisampleEXT"); + glad_glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)load("glVertexArrayBindVertexBufferEXT"); + glad_glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)load("glVertexArrayVertexAttribFormatEXT"); + glad_glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)load("glVertexArrayVertexAttribIFormatEXT"); + glad_glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)load("glVertexArrayVertexAttribLFormatEXT"); + glad_glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)load("glVertexArrayVertexAttribBindingEXT"); + glad_glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)load("glVertexArrayVertexBindingDivisorEXT"); + glad_glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)load("glVertexArrayVertexAttribLOffsetEXT"); + glad_glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)load("glTexturePageCommitmentEXT"); + glad_glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)load("glVertexArrayVertexAttribDivisorEXT"); +} +static void load_GL_AMD_sample_positions(GLADloadproc load) { + if(!GLAD_GL_AMD_sample_positions) return; + glad_glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)load("glSetMultisamplefvAMD"); +} +static void load_GL_NV_vertex_program(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program) return; + glad_glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)load("glAreProgramsResidentNV"); + glad_glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)load("glBindProgramNV"); + glad_glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)load("glDeleteProgramsNV"); + glad_glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)load("glExecuteProgramNV"); + glad_glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)load("glGenProgramsNV"); + glad_glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)load("glGetProgramParameterdvNV"); + glad_glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)load("glGetProgramParameterfvNV"); + glad_glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)load("glGetProgramivNV"); + glad_glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)load("glGetProgramStringNV"); + glad_glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)load("glGetTrackMatrixivNV"); + glad_glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)load("glGetVertexAttribdvNV"); + glad_glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)load("glGetVertexAttribfvNV"); + glad_glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)load("glGetVertexAttribivNV"); + glad_glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)load("glGetVertexAttribPointervNV"); + glad_glIsProgramNV = (PFNGLISPROGRAMNVPROC)load("glIsProgramNV"); + glad_glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)load("glLoadProgramNV"); + glad_glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)load("glProgramParameter4dNV"); + glad_glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)load("glProgramParameter4dvNV"); + glad_glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)load("glProgramParameter4fNV"); + glad_glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)load("glProgramParameter4fvNV"); + glad_glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)load("glProgramParameters4dvNV"); + glad_glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)load("glProgramParameters4fvNV"); + glad_glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)load("glRequestResidentProgramsNV"); + glad_glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)load("glTrackMatrixNV"); + glad_glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)load("glVertexAttribPointerNV"); + glad_glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)load("glVertexAttrib1dNV"); + glad_glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)load("glVertexAttrib1dvNV"); + glad_glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)load("glVertexAttrib1fNV"); + glad_glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)load("glVertexAttrib1fvNV"); + glad_glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)load("glVertexAttrib1sNV"); + glad_glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)load("glVertexAttrib1svNV"); + glad_glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)load("glVertexAttrib2dNV"); + glad_glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)load("glVertexAttrib2dvNV"); + glad_glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)load("glVertexAttrib2fNV"); + glad_glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)load("glVertexAttrib2fvNV"); + glad_glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)load("glVertexAttrib2sNV"); + glad_glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)load("glVertexAttrib2svNV"); + glad_glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)load("glVertexAttrib3dNV"); + glad_glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)load("glVertexAttrib3dvNV"); + glad_glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)load("glVertexAttrib3fNV"); + glad_glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)load("glVertexAttrib3fvNV"); + glad_glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)load("glVertexAttrib3sNV"); + glad_glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)load("glVertexAttrib3svNV"); + glad_glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)load("glVertexAttrib4dNV"); + glad_glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)load("glVertexAttrib4dvNV"); + glad_glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)load("glVertexAttrib4fNV"); + glad_glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)load("glVertexAttrib4fvNV"); + glad_glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)load("glVertexAttrib4sNV"); + glad_glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)load("glVertexAttrib4svNV"); + glad_glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)load("glVertexAttrib4ubNV"); + glad_glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)load("glVertexAttrib4ubvNV"); + glad_glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)load("glVertexAttribs1dvNV"); + glad_glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)load("glVertexAttribs1fvNV"); + glad_glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)load("glVertexAttribs1svNV"); + glad_glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)load("glVertexAttribs2dvNV"); + glad_glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)load("glVertexAttribs2fvNV"); + glad_glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)load("glVertexAttribs2svNV"); + glad_glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)load("glVertexAttribs3dvNV"); + glad_glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)load("glVertexAttribs3fvNV"); + glad_glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)load("glVertexAttribs3svNV"); + glad_glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)load("glVertexAttribs4dvNV"); + glad_glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)load("glVertexAttribs4fvNV"); + glad_glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)load("glVertexAttribs4svNV"); + glad_glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)load("glVertexAttribs4ubvNV"); +} +static void load_GL_EXT_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_shader) return; + glad_glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)load("glBeginVertexShaderEXT"); + glad_glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)load("glEndVertexShaderEXT"); + glad_glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)load("glBindVertexShaderEXT"); + glad_glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)load("glGenVertexShadersEXT"); + glad_glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)load("glDeleteVertexShaderEXT"); + glad_glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)load("glShaderOp1EXT"); + glad_glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)load("glShaderOp2EXT"); + glad_glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)load("glShaderOp3EXT"); + glad_glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)load("glSwizzleEXT"); + glad_glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)load("glWriteMaskEXT"); + glad_glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)load("glInsertComponentEXT"); + glad_glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)load("glExtractComponentEXT"); + glad_glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)load("glGenSymbolsEXT"); + glad_glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)load("glSetInvariantEXT"); + glad_glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)load("glSetLocalConstantEXT"); + glad_glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)load("glVariantbvEXT"); + glad_glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)load("glVariantsvEXT"); + glad_glVariantivEXT = (PFNGLVARIANTIVEXTPROC)load("glVariantivEXT"); + glad_glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)load("glVariantfvEXT"); + glad_glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)load("glVariantdvEXT"); + glad_glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)load("glVariantubvEXT"); + glad_glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)load("glVariantusvEXT"); + glad_glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)load("glVariantuivEXT"); + glad_glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)load("glVariantPointerEXT"); + glad_glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)load("glEnableVariantClientStateEXT"); + glad_glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)load("glDisableVariantClientStateEXT"); + glad_glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)load("glBindLightParameterEXT"); + glad_glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)load("glBindMaterialParameterEXT"); + glad_glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)load("glBindTexGenParameterEXT"); + glad_glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)load("glBindTextureUnitParameterEXT"); + glad_glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)load("glBindParameterEXT"); + glad_glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)load("glIsVariantEnabledEXT"); + glad_glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)load("glGetVariantBooleanvEXT"); + glad_glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)load("glGetVariantIntegervEXT"); + glad_glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)load("glGetVariantFloatvEXT"); + glad_glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)load("glGetVariantPointervEXT"); + glad_glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)load("glGetInvariantBooleanvEXT"); + glad_glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)load("glGetInvariantIntegervEXT"); + glad_glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)load("glGetInvariantFloatvEXT"); + glad_glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)load("glGetLocalConstantBooleanvEXT"); + glad_glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)load("glGetLocalConstantIntegervEXT"); + glad_glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)load("glGetLocalConstantFloatvEXT"); +} +static void load_GL_EXT_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_func_separate) return; + glad_glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)load("glBlendFuncSeparateEXT"); +} +static void load_GL_APPLE_fence(GLADloadproc load) { + if(!GLAD_GL_APPLE_fence) return; + glad_glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)load("glGenFencesAPPLE"); + glad_glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)load("glDeleteFencesAPPLE"); + glad_glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)load("glSetFenceAPPLE"); + glad_glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)load("glIsFenceAPPLE"); + glad_glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)load("glTestFenceAPPLE"); + glad_glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)load("glFinishFenceAPPLE"); + glad_glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)load("glTestObjectAPPLE"); + glad_glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)load("glFinishObjectAPPLE"); +} +static void load_GL_OES_byte_coordinates(GLADloadproc load) { + if(!GLAD_GL_OES_byte_coordinates) return; + glad_glMultiTexCoord1bOES = (PFNGLMULTITEXCOORD1BOESPROC)load("glMultiTexCoord1bOES"); + glad_glMultiTexCoord1bvOES = (PFNGLMULTITEXCOORD1BVOESPROC)load("glMultiTexCoord1bvOES"); + glad_glMultiTexCoord2bOES = (PFNGLMULTITEXCOORD2BOESPROC)load("glMultiTexCoord2bOES"); + glad_glMultiTexCoord2bvOES = (PFNGLMULTITEXCOORD2BVOESPROC)load("glMultiTexCoord2bvOES"); + glad_glMultiTexCoord3bOES = (PFNGLMULTITEXCOORD3BOESPROC)load("glMultiTexCoord3bOES"); + glad_glMultiTexCoord3bvOES = (PFNGLMULTITEXCOORD3BVOESPROC)load("glMultiTexCoord3bvOES"); + glad_glMultiTexCoord4bOES = (PFNGLMULTITEXCOORD4BOESPROC)load("glMultiTexCoord4bOES"); + glad_glMultiTexCoord4bvOES = (PFNGLMULTITEXCOORD4BVOESPROC)load("glMultiTexCoord4bvOES"); + glad_glTexCoord1bOES = (PFNGLTEXCOORD1BOESPROC)load("glTexCoord1bOES"); + glad_glTexCoord1bvOES = (PFNGLTEXCOORD1BVOESPROC)load("glTexCoord1bvOES"); + glad_glTexCoord2bOES = (PFNGLTEXCOORD2BOESPROC)load("glTexCoord2bOES"); + glad_glTexCoord2bvOES = (PFNGLTEXCOORD2BVOESPROC)load("glTexCoord2bvOES"); + glad_glTexCoord3bOES = (PFNGLTEXCOORD3BOESPROC)load("glTexCoord3bOES"); + glad_glTexCoord3bvOES = (PFNGLTEXCOORD3BVOESPROC)load("glTexCoord3bvOES"); + glad_glTexCoord4bOES = (PFNGLTEXCOORD4BOESPROC)load("glTexCoord4bOES"); + glad_glTexCoord4bvOES = (PFNGLTEXCOORD4BVOESPROC)load("glTexCoord4bvOES"); + glad_glVertex2bOES = (PFNGLVERTEX2BOESPROC)load("glVertex2bOES"); + glad_glVertex2bvOES = (PFNGLVERTEX2BVOESPROC)load("glVertex2bvOES"); + glad_glVertex3bOES = (PFNGLVERTEX3BOESPROC)load("glVertex3bOES"); + glad_glVertex3bvOES = (PFNGLVERTEX3BVOESPROC)load("glVertex3bvOES"); + glad_glVertex4bOES = (PFNGLVERTEX4BOESPROC)load("glVertex4bOES"); + glad_glVertex4bvOES = (PFNGLVERTEX4BVOESPROC)load("glVertex4bvOES"); +} +static void load_GL_ARB_transpose_matrix(GLADloadproc load) { + if(!GLAD_GL_ARB_transpose_matrix) return; + glad_glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)load("glLoadTransposeMatrixfARB"); + glad_glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)load("glLoadTransposeMatrixdARB"); + glad_glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)load("glMultTransposeMatrixfARB"); + glad_glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)load("glMultTransposeMatrixdARB"); +} +static void load_GL_ARB_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_provoking_vertex) return; + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); +} +static void load_GL_EXT_fog_coord(GLADloadproc load) { + if(!GLAD_GL_EXT_fog_coord) return; + glad_glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)load("glFogCoordfEXT"); + glad_glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)load("glFogCoordfvEXT"); + glad_glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)load("glFogCoorddEXT"); + glad_glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)load("glFogCoorddvEXT"); + glad_glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)load("glFogCoordPointerEXT"); +} +static void load_GL_EXT_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_array) return; + glad_glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)load("glArrayElementEXT"); + glad_glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)load("glColorPointerEXT"); + glad_glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)load("glDrawArraysEXT"); + glad_glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)load("glEdgeFlagPointerEXT"); + glad_glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)load("glGetPointervEXT"); + glad_glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)load("glIndexPointerEXT"); + glad_glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)load("glNormalPointerEXT"); + glad_glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)load("glTexCoordPointerEXT"); + glad_glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)load("glVertexPointerEXT"); +} +static void load_GL_EXT_blend_equation_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_equation_separate) return; + glad_glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)load("glBlendEquationSeparateEXT"); +} +static void load_GL_NV_framebuffer_mixed_samples(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_mixed_samples) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); + glad_glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)load("glCoverageModulationTableNV"); + glad_glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)load("glGetCoverageModulationTableNV"); + glad_glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)load("glCoverageModulationNV"); +} +static void load_GL_NVX_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NVX_conditional_render) return; + glad_glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)load("glBeginConditionalRenderNVX"); + glad_glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)load("glEndConditionalRenderNVX"); +} +static void load_GL_ARB_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)load("glMultiDrawArraysIndirect"); + glad_glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)load("glMultiDrawElementsIndirect"); +} +static void load_GL_EXT_raster_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_raster_multisample) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); +} +static void load_GL_NV_copy_image(GLADloadproc load) { + if(!GLAD_GL_NV_copy_image) return; + glad_glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)load("glCopyImageSubDataNV"); +} +static void load_GL_INTEL_framebuffer_CMAA(GLADloadproc load) { + if(!GLAD_GL_INTEL_framebuffer_CMAA) return; + glad_glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)load("glApplyFramebufferAttachmentCMAAINTEL"); +} +static void load_GL_ARB_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback2) return; + glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); + glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); + glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); + glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); + glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); + glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); + glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); +} +static void load_GL_ARB_transform_feedback3(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback3) return; + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_EXT_debug_marker(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_marker) return; + glad_glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)load("glInsertEventMarkerEXT"); + glad_glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)load("glPushGroupMarkerEXT"); + glad_glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)load("glPopGroupMarkerEXT"); +} +static void load_GL_EXT_pixel_transform(GLADloadproc load) { + if(!GLAD_GL_EXT_pixel_transform) return; + glad_glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)load("glPixelTransformParameteriEXT"); + glad_glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)load("glPixelTransformParameterfEXT"); + glad_glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)load("glPixelTransformParameterivEXT"); + glad_glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)load("glPixelTransformParameterfvEXT"); + glad_glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)load("glGetPixelTransformParameterivEXT"); + glad_glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)load("glGetPixelTransformParameterfvEXT"); +} +static void load_GL_ATI_fragment_shader(GLADloadproc load) { + if(!GLAD_GL_ATI_fragment_shader) return; + glad_glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)load("glGenFragmentShadersATI"); + glad_glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)load("glBindFragmentShaderATI"); + glad_glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)load("glDeleteFragmentShaderATI"); + glad_glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)load("glBeginFragmentShaderATI"); + glad_glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)load("glEndFragmentShaderATI"); + glad_glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)load("glPassTexCoordATI"); + glad_glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)load("glSampleMapATI"); + glad_glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)load("glColorFragmentOp1ATI"); + glad_glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)load("glColorFragmentOp2ATI"); + glad_glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)load("glColorFragmentOp3ATI"); + glad_glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)load("glAlphaFragmentOp1ATI"); + glad_glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)load("glAlphaFragmentOp2ATI"); + glad_glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)load("glAlphaFragmentOp3ATI"); + glad_glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)load("glSetFragmentShaderConstantATI"); +} +static void load_GL_ARB_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_array_object) return; + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_SUN_triangle_list(GLADloadproc load) { + if(!GLAD_GL_SUN_triangle_list) return; + glad_glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)load("glReplacementCodeuiSUN"); + glad_glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)load("glReplacementCodeusSUN"); + glad_glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)load("glReplacementCodeubSUN"); + glad_glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)load("glReplacementCodeuivSUN"); + glad_glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)load("glReplacementCodeusvSUN"); + glad_glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)load("glReplacementCodeubvSUN"); + glad_glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)load("glReplacementCodePointerSUN"); +} +static void load_GL_ARB_transform_feedback_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback_instanced) return; + glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); + glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); +} +static void load_GL_SGIX_async(GLADloadproc load) { + if(!GLAD_GL_SGIX_async) return; + glad_glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)load("glAsyncMarkerSGIX"); + glad_glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)load("glFinishAsyncSGIX"); + glad_glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)load("glPollAsyncSGIX"); + glad_glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)load("glGenAsyncMarkersSGIX"); + glad_glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)load("glDeleteAsyncMarkersSGIX"); + glad_glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)load("glIsAsyncMarkerSGIX"); +} +static void load_GL_INTEL_performance_query(GLADloadproc load) { + if(!GLAD_GL_INTEL_performance_query) return; + glad_glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)load("glBeginPerfQueryINTEL"); + glad_glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)load("glCreatePerfQueryINTEL"); + glad_glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)load("glDeletePerfQueryINTEL"); + glad_glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)load("glEndPerfQueryINTEL"); + glad_glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)load("glGetFirstPerfQueryIdINTEL"); + glad_glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)load("glGetNextPerfQueryIdINTEL"); + glad_glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)load("glGetPerfCounterInfoINTEL"); + glad_glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)load("glGetPerfQueryDataINTEL"); + glad_glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)load("glGetPerfQueryIdByNameINTEL"); + glad_glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)load("glGetPerfQueryInfoINTEL"); +} +static void load_GL_NV_gpu_shader5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_shader5) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_NV_bindless_multi_draw_indirect_count(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect_count) return; + glad_glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawArraysIndirectBindlessCountNV"); + glad_glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawElementsIndirectBindlessCountNV"); +} +static void load_GL_ARB_ES2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES2_compatibility) return; + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); +} +static void load_GL_ARB_indirect_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_indirect_parameters) return; + glad_glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)load("glMultiDrawArraysIndirectCountARB"); + glad_glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)load("glMultiDrawElementsIndirectCountARB"); +} +static void load_GL_NV_half_float(GLADloadproc load) { + if(!GLAD_GL_NV_half_float) return; + glad_glVertex2hNV = (PFNGLVERTEX2HNVPROC)load("glVertex2hNV"); + glad_glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)load("glVertex2hvNV"); + glad_glVertex3hNV = (PFNGLVERTEX3HNVPROC)load("glVertex3hNV"); + glad_glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)load("glVertex3hvNV"); + glad_glVertex4hNV = (PFNGLVERTEX4HNVPROC)load("glVertex4hNV"); + glad_glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)load("glVertex4hvNV"); + glad_glNormal3hNV = (PFNGLNORMAL3HNVPROC)load("glNormal3hNV"); + glad_glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)load("glNormal3hvNV"); + glad_glColor3hNV = (PFNGLCOLOR3HNVPROC)load("glColor3hNV"); + glad_glColor3hvNV = (PFNGLCOLOR3HVNVPROC)load("glColor3hvNV"); + glad_glColor4hNV = (PFNGLCOLOR4HNVPROC)load("glColor4hNV"); + glad_glColor4hvNV = (PFNGLCOLOR4HVNVPROC)load("glColor4hvNV"); + glad_glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)load("glTexCoord1hNV"); + glad_glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)load("glTexCoord1hvNV"); + glad_glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)load("glTexCoord2hNV"); + glad_glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)load("glTexCoord2hvNV"); + glad_glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)load("glTexCoord3hNV"); + glad_glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)load("glTexCoord3hvNV"); + glad_glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)load("glTexCoord4hNV"); + glad_glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)load("glTexCoord4hvNV"); + glad_glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)load("glMultiTexCoord1hNV"); + glad_glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)load("glMultiTexCoord1hvNV"); + glad_glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)load("glMultiTexCoord2hNV"); + glad_glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)load("glMultiTexCoord2hvNV"); + glad_glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)load("glMultiTexCoord3hNV"); + glad_glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)load("glMultiTexCoord3hvNV"); + glad_glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)load("glMultiTexCoord4hNV"); + glad_glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)load("glMultiTexCoord4hvNV"); + glad_glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)load("glFogCoordhNV"); + glad_glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)load("glFogCoordhvNV"); + glad_glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)load("glSecondaryColor3hNV"); + glad_glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)load("glSecondaryColor3hvNV"); + glad_glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)load("glVertexWeighthNV"); + glad_glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)load("glVertexWeighthvNV"); + glad_glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)load("glVertexAttrib1hNV"); + glad_glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)load("glVertexAttrib1hvNV"); + glad_glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)load("glVertexAttrib2hNV"); + glad_glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)load("glVertexAttrib2hvNV"); + glad_glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)load("glVertexAttrib3hNV"); + glad_glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)load("glVertexAttrib3hvNV"); + glad_glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)load("glVertexAttrib4hNV"); + glad_glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)load("glVertexAttrib4hvNV"); + glad_glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)load("glVertexAttribs1hvNV"); + glad_glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)load("glVertexAttribs2hvNV"); + glad_glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)load("glVertexAttribs3hvNV"); + glad_glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)load("glVertexAttribs4hvNV"); +} +static void load_GL_ARB_ES3_2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_2_compatibility) return; + glad_glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)load("glPrimitiveBoundingBoxARB"); +} +static void load_GL_EXT_polygon_offset_clamp(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset_clamp) return; + glad_glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)load("glPolygonOffsetClampEXT"); +} +static void load_GL_EXT_compiled_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_compiled_vertex_array) return; + glad_glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)load("glLockArraysEXT"); + glad_glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)load("glUnlockArraysEXT"); +} +static void load_GL_NV_depth_buffer_float(GLADloadproc load) { + if(!GLAD_GL_NV_depth_buffer_float) return; + glad_glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)load("glDepthRangedNV"); + glad_glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)load("glClearDepthdNV"); + glad_glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)load("glDepthBoundsdNV"); +} +static void load_GL_NV_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_NV_occlusion_query) return; + glad_glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)load("glGenOcclusionQueriesNV"); + glad_glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)load("glDeleteOcclusionQueriesNV"); + glad_glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)load("glIsOcclusionQueryNV"); + glad_glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)load("glBeginOcclusionQueryNV"); + glad_glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)load("glEndOcclusionQueryNV"); + glad_glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)load("glGetOcclusionQueryivNV"); + glad_glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)load("glGetOcclusionQueryuivNV"); +} +static void load_GL_APPLE_flush_buffer_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_flush_buffer_range) return; + glad_glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)load("glBufferParameteriAPPLE"); + glad_glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)load("glFlushMappedBufferRangeAPPLE"); +} +static void load_GL_ARB_imaging(GLADloadproc load) { + if(!GLAD_GL_ARB_imaging) return; + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); + glad_glColorTable = (PFNGLCOLORTABLEPROC)load("glColorTable"); + glad_glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)load("glColorTableParameterfv"); + glad_glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)load("glColorTableParameteriv"); + glad_glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)load("glCopyColorTable"); + glad_glGetColorTable = (PFNGLGETCOLORTABLEPROC)load("glGetColorTable"); + glad_glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)load("glGetColorTableParameterfv"); + glad_glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)load("glGetColorTableParameteriv"); + glad_glColorSubTable = (PFNGLCOLORSUBTABLEPROC)load("glColorSubTable"); + glad_glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)load("glCopyColorSubTable"); + glad_glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)load("glConvolutionFilter1D"); + glad_glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)load("glConvolutionFilter2D"); + glad_glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)load("glConvolutionParameterf"); + glad_glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)load("glConvolutionParameterfv"); + glad_glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)load("glConvolutionParameteri"); + glad_glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)load("glConvolutionParameteriv"); + glad_glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)load("glCopyConvolutionFilter1D"); + glad_glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)load("glCopyConvolutionFilter2D"); + glad_glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)load("glGetConvolutionFilter"); + glad_glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)load("glGetConvolutionParameterfv"); + glad_glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)load("glGetConvolutionParameteriv"); + glad_glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)load("glGetSeparableFilter"); + glad_glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)load("glSeparableFilter2D"); + glad_glGetHistogram = (PFNGLGETHISTOGRAMPROC)load("glGetHistogram"); + glad_glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)load("glGetHistogramParameterfv"); + glad_glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)load("glGetHistogramParameteriv"); + glad_glGetMinmax = (PFNGLGETMINMAXPROC)load("glGetMinmax"); + glad_glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)load("glGetMinmaxParameterfv"); + glad_glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)load("glGetMinmaxParameteriv"); + glad_glHistogram = (PFNGLHISTOGRAMPROC)load("glHistogram"); + glad_glMinmax = (PFNGLMINMAXPROC)load("glMinmax"); + glad_glResetHistogram = (PFNGLRESETHISTOGRAMPROC)load("glResetHistogram"); + glad_glResetMinmax = (PFNGLRESETMINMAXPROC)load("glResetMinmax"); +} +static void load_GL_ARB_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers_blend) return; + glad_glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)load("glBlendEquationiARB"); + glad_glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)load("glBlendEquationSeparateiARB"); + glad_glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)load("glBlendFunciARB"); + glad_glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)load("glBlendFuncSeparateiARB"); +} +static void load_GL_ARB_clear_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_buffer_object) return; + glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); + glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); +} +static void load_GL_ARB_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_multisample) return; + glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)load("glSampleCoverageARB"); +} +static void load_GL_EXT_debug_label(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_label) return; + glad_glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)load("glLabelObjectEXT"); + glad_glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)load("glGetObjectLabelEXT"); +} +static void load_GL_ARB_sample_shading(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_shading) return; + glad_glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)load("glMinSampleShadingARB"); +} +static void load_GL_NV_internalformat_sample_query(GLADloadproc load) { + if(!GLAD_GL_NV_internalformat_sample_query) return; + glad_glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)load("glGetInternalformatSampleivNV"); +} +static void load_GL_INTEL_map_texture(GLADloadproc load) { + if(!GLAD_GL_INTEL_map_texture) return; + glad_glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)load("glSyncTextureINTEL"); + glad_glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)load("glUnmapTexture2DINTEL"); + glad_glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)load("glMapTexture2DINTEL"); +} +static void load_GL_ARB_compute_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_shader) return; + glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); + glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); +} +static void load_GL_IBM_vertex_array_lists(GLADloadproc load) { + if(!GLAD_GL_IBM_vertex_array_lists) return; + glad_glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)load("glColorPointerListIBM"); + glad_glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)load("glSecondaryColorPointerListIBM"); + glad_glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)load("glEdgeFlagPointerListIBM"); + glad_glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)load("glFogCoordPointerListIBM"); + glad_glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)load("glIndexPointerListIBM"); + glad_glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)load("glNormalPointerListIBM"); + glad_glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)load("glTexCoordPointerListIBM"); + glad_glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)load("glVertexPointerListIBM"); +} +static void load_GL_ARB_color_buffer_float(GLADloadproc load) { + if(!GLAD_GL_ARB_color_buffer_float) return; + glad_glClampColorARB = (PFNGLCLAMPCOLORARBPROC)load("glClampColorARB"); +} +static void load_GL_ARB_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_bindless_texture) return; + glad_glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)load("glGetTextureHandleARB"); + glad_glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)load("glGetTextureSamplerHandleARB"); + glad_glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)load("glMakeTextureHandleResidentARB"); + glad_glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)load("glMakeTextureHandleNonResidentARB"); + glad_glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)load("glGetImageHandleARB"); + glad_glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)load("glMakeImageHandleResidentARB"); + glad_glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)load("glMakeImageHandleNonResidentARB"); + glad_glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)load("glUniformHandleui64ARB"); + glad_glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)load("glUniformHandleui64vARB"); + glad_glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)load("glProgramUniformHandleui64ARB"); + glad_glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)load("glProgramUniformHandleui64vARB"); + glad_glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)load("glIsTextureHandleResidentARB"); + glad_glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)load("glIsImageHandleResidentARB"); + glad_glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)load("glVertexAttribL1ui64ARB"); + glad_glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)load("glVertexAttribL1ui64vARB"); + glad_glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)load("glGetVertexAttribLui64vARB"); +} +static void load_GL_ARB_window_pos(GLADloadproc load) { + if(!GLAD_GL_ARB_window_pos) return; + glad_glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)load("glWindowPos2dARB"); + glad_glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)load("glWindowPos2dvARB"); + glad_glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)load("glWindowPos2fARB"); + glad_glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)load("glWindowPos2fvARB"); + glad_glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)load("glWindowPos2iARB"); + glad_glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)load("glWindowPos2ivARB"); + glad_glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)load("glWindowPos2sARB"); + glad_glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)load("glWindowPos2svARB"); + glad_glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)load("glWindowPos3dARB"); + glad_glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)load("glWindowPos3dvARB"); + glad_glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)load("glWindowPos3fARB"); + glad_glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)load("glWindowPos3fvARB"); + glad_glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)load("glWindowPos3iARB"); + glad_glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)load("glWindowPos3ivARB"); + glad_glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)load("glWindowPos3sARB"); + glad_glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)load("glWindowPos3svARB"); +} +static void load_GL_ARB_internalformat_query(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query) return; + glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); +} +static void load_GL_EXT_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_EXT_shader_image_load_store) return; + glad_glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)load("glBindImageTextureEXT"); + glad_glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)load("glMemoryBarrierEXT"); +} +static void load_GL_EXT_copy_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_copy_texture) return; + glad_glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)load("glCopyTexImage1DEXT"); + glad_glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)load("glCopyTexImage2DEXT"); + glad_glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)load("glCopyTexSubImage1DEXT"); + glad_glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)load("glCopyTexSubImage2DEXT"); + glad_glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)load("glCopyTexSubImage3DEXT"); +} +static void load_GL_NV_register_combiners2(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners2) return; + glad_glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)load("glCombinerStageParameterfvNV"); + glad_glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)load("glGetCombinerStageParameterfvNV"); +} +static void load_GL_NV_draw_texture(GLADloadproc load) { + if(!GLAD_GL_NV_draw_texture) return; + glad_glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)load("glDrawTextureNV"); +} +static void load_GL_EXT_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_instanced) return; + glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); + glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); +} +static void load_GL_ARB_viewport_array(GLADloadproc load) { + if(!GLAD_GL_ARB_viewport_array) return; + glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); + glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); + glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); + glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); + glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); + glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); + glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); + glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); + glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); + glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); +} +static void load_GL_ARB_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_separate_shader_objects) return; + glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); + glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); + glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); + glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); + glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); + glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); + glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); + glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); + glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); + glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); + glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); + glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); + glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); + glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); + glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); + glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); + glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); + glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); + glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); + glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); + glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); + glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); + glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); + glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); + glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); + glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); + glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); + glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); + glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); + glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); + glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); + glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); + glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); + glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); + glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); + glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); + glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); + glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); + glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); + glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); + glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); + glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); + glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); + glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); + glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); + glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); + glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); + glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); + glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); + glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); + glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); + glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); + glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); + glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); + glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); + glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); + glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); + glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); + glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); + glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); +} +static void load_GL_EXT_depth_bounds_test(GLADloadproc load) { + if(!GLAD_GL_EXT_depth_bounds_test) return; + glad_glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)load("glDepthBoundsEXT"); +} +static void load_GL_NV_video_capture(GLADloadproc load) { + if(!GLAD_GL_NV_video_capture) return; + glad_glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)load("glBeginVideoCaptureNV"); + glad_glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)load("glBindVideoCaptureStreamBufferNV"); + glad_glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)load("glBindVideoCaptureStreamTextureNV"); + glad_glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)load("glEndVideoCaptureNV"); + glad_glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)load("glGetVideoCaptureivNV"); + glad_glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)load("glGetVideoCaptureStreamivNV"); + glad_glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)load("glGetVideoCaptureStreamfvNV"); + glad_glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)load("glGetVideoCaptureStreamdvNV"); + glad_glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)load("glVideoCaptureNV"); + glad_glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)load("glVideoCaptureStreamParameterivNV"); + glad_glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)load("glVideoCaptureStreamParameterfvNV"); + glad_glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)load("glVideoCaptureStreamParameterdvNV"); +} +static void load_GL_ARB_sampler_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_sampler_objects) return; + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); +} +static void load_GL_ARB_matrix_palette(GLADloadproc load) { + if(!GLAD_GL_ARB_matrix_palette) return; + glad_glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)load("glCurrentPaletteMatrixARB"); + glad_glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)load("glMatrixIndexubvARB"); + glad_glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)load("glMatrixIndexusvARB"); + glad_glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)load("glMatrixIndexuivARB"); + glad_glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)load("glMatrixIndexPointerARB"); +} +static void load_GL_SGIS_texture_color_mask(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_color_mask) return; + glad_glTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC)load("glTextureColorMaskSGIS"); +} +static void load_GL_EXT_coordinate_frame(GLADloadproc load) { + if(!GLAD_GL_EXT_coordinate_frame) return; + glad_glTangent3bEXT = (PFNGLTANGENT3BEXTPROC)load("glTangent3bEXT"); + glad_glTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC)load("glTangent3bvEXT"); + glad_glTangent3dEXT = (PFNGLTANGENT3DEXTPROC)load("glTangent3dEXT"); + glad_glTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC)load("glTangent3dvEXT"); + glad_glTangent3fEXT = (PFNGLTANGENT3FEXTPROC)load("glTangent3fEXT"); + glad_glTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC)load("glTangent3fvEXT"); + glad_glTangent3iEXT = (PFNGLTANGENT3IEXTPROC)load("glTangent3iEXT"); + glad_glTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC)load("glTangent3ivEXT"); + glad_glTangent3sEXT = (PFNGLTANGENT3SEXTPROC)load("glTangent3sEXT"); + glad_glTangent3svEXT = (PFNGLTANGENT3SVEXTPROC)load("glTangent3svEXT"); + glad_glBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC)load("glBinormal3bEXT"); + glad_glBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC)load("glBinormal3bvEXT"); + glad_glBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC)load("glBinormal3dEXT"); + glad_glBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC)load("glBinormal3dvEXT"); + glad_glBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC)load("glBinormal3fEXT"); + glad_glBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC)load("glBinormal3fvEXT"); + glad_glBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC)load("glBinormal3iEXT"); + glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC)load("glBinormal3ivEXT"); + glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC)load("glBinormal3sEXT"); + glad_glBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC)load("glBinormal3svEXT"); + glad_glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)load("glTangentPointerEXT"); + glad_glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)load("glBinormalPointerEXT"); +} +static void load_GL_ARB_texture_compression(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_compression) return; + glad_glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)load("glCompressedTexImage3DARB"); + glad_glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)load("glCompressedTexImage2DARB"); + glad_glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)load("glCompressedTexImage1DARB"); + glad_glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)load("glCompressedTexSubImage3DARB"); + glad_glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)load("glCompressedTexSubImage2DARB"); + glad_glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)load("glCompressedTexSubImage1DARB"); + glad_glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)load("glGetCompressedTexImageARB"); +} +static void load_GL_ARB_shader_subroutine(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_subroutine) return; + glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); + glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); + glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); + glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); + glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); + glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); + glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); + glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); +} +static void load_GL_ARB_texture_storage_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage_multisample) return; + glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); + glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); +} +static void load_GL_EXT_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_attrib_64bit) return; + glad_glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)load("glVertexAttribL1dEXT"); + glad_glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)load("glVertexAttribL2dEXT"); + glad_glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)load("glVertexAttribL3dEXT"); + glad_glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)load("glVertexAttribL4dEXT"); + glad_glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)load("glVertexAttribL1dvEXT"); + glad_glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)load("glVertexAttribL2dvEXT"); + glad_glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)load("glVertexAttribL3dvEXT"); + glad_glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)load("glVertexAttribL4dvEXT"); + glad_glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)load("glVertexAttribLPointerEXT"); + glad_glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)load("glGetVertexAttribLdvEXT"); +} +static void load_GL_OES_query_matrix(GLADloadproc load) { + if(!GLAD_GL_OES_query_matrix) return; + glad_glQueryMatrixxOES = (PFNGLQUERYMATRIXXOESPROC)load("glQueryMatrixxOES"); +} +static void load_GL_MESA_window_pos(GLADloadproc load) { + if(!GLAD_GL_MESA_window_pos) return; + glad_glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)load("glWindowPos2dMESA"); + glad_glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)load("glWindowPos2dvMESA"); + glad_glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)load("glWindowPos2fMESA"); + glad_glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)load("glWindowPos2fvMESA"); + glad_glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)load("glWindowPos2iMESA"); + glad_glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)load("glWindowPos2ivMESA"); + glad_glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)load("glWindowPos2sMESA"); + glad_glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)load("glWindowPos2svMESA"); + glad_glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)load("glWindowPos3dMESA"); + glad_glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)load("glWindowPos3dvMESA"); + glad_glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)load("glWindowPos3fMESA"); + glad_glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)load("glWindowPos3fvMESA"); + glad_glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)load("glWindowPos3iMESA"); + glad_glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)load("glWindowPos3ivMESA"); + glad_glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)load("glWindowPos3sMESA"); + glad_glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)load("glWindowPos3svMESA"); + glad_glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)load("glWindowPos4dMESA"); + glad_glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)load("glWindowPos4dvMESA"); + glad_glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)load("glWindowPos4fMESA"); + glad_glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)load("glWindowPos4fvMESA"); + glad_glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)load("glWindowPos4iMESA"); + glad_glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)load("glWindowPos4ivMESA"); + glad_glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)load("glWindowPos4sMESA"); + glad_glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)load("glWindowPos4svMESA"); +} +static void load_GL_ARB_copy_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_buffer) return; + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); +} +static void load_GL_APPLE_object_purgeable(GLADloadproc load) { + if(!GLAD_GL_APPLE_object_purgeable) return; + glad_glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)load("glObjectPurgeableAPPLE"); + glad_glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)load("glObjectUnpurgeableAPPLE"); + glad_glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)load("glGetObjectParameterivAPPLE"); +} +static void load_GL_ARB_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_ARB_occlusion_query) return; + glad_glGenQueriesARB = (PFNGLGENQUERIESARBPROC)load("glGenQueriesARB"); + glad_glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)load("glDeleteQueriesARB"); + glad_glIsQueryARB = (PFNGLISQUERYARBPROC)load("glIsQueryARB"); + glad_glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)load("glBeginQueryARB"); + glad_glEndQueryARB = (PFNGLENDQUERYARBPROC)load("glEndQueryARB"); + glad_glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)load("glGetQueryivARB"); + glad_glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)load("glGetQueryObjectivARB"); + glad_glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)load("glGetQueryObjectuivARB"); +} +static void load_GL_SGI_color_table(GLADloadproc load) { + if(!GLAD_GL_SGI_color_table) return; + glad_glColorTableSGI = (PFNGLCOLORTABLESGIPROC)load("glColorTableSGI"); + glad_glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)load("glColorTableParameterfvSGI"); + glad_glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)load("glColorTableParameterivSGI"); + glad_glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)load("glCopyColorTableSGI"); + glad_glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)load("glGetColorTableSGI"); + glad_glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)load("glGetColorTableParameterfvSGI"); + glad_glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)load("glGetColorTableParameterivSGI"); +} +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"); +} +static void load_GL_NV_geometry_program4(GLADloadproc load) { + if(!GLAD_GL_NV_geometry_program4) return; + glad_glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)load("glProgramVertexLimitNV"); + glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); + glad_glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)load("glFramebufferTextureFaceEXT"); +} +static void load_GL_AMD_debug_output(GLADloadproc load) { + if(!GLAD_GL_AMD_debug_output) return; + glad_glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)load("glDebugMessageEnableAMD"); + glad_glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)load("glDebugMessageInsertAMD"); + glad_glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)load("glDebugMessageCallbackAMD"); + glad_glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)load("glGetDebugMessageLogAMD"); +} +static void load_GL_ARB_multitexture(GLADloadproc load) { + if(!GLAD_GL_ARB_multitexture) return; + glad_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)load("glActiveTextureARB"); + glad_glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)load("glClientActiveTextureARB"); + glad_glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)load("glMultiTexCoord1dARB"); + glad_glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)load("glMultiTexCoord1dvARB"); + glad_glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)load("glMultiTexCoord1fARB"); + glad_glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)load("glMultiTexCoord1fvARB"); + glad_glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)load("glMultiTexCoord1iARB"); + glad_glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)load("glMultiTexCoord1ivARB"); + glad_glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)load("glMultiTexCoord1sARB"); + glad_glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)load("glMultiTexCoord1svARB"); + glad_glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)load("glMultiTexCoord2dARB"); + glad_glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)load("glMultiTexCoord2dvARB"); + glad_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)load("glMultiTexCoord2fARB"); + glad_glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)load("glMultiTexCoord2fvARB"); + glad_glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)load("glMultiTexCoord2iARB"); + glad_glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)load("glMultiTexCoord2ivARB"); + glad_glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)load("glMultiTexCoord2sARB"); + glad_glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)load("glMultiTexCoord2svARB"); + glad_glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)load("glMultiTexCoord3dARB"); + glad_glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)load("glMultiTexCoord3dvARB"); + glad_glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)load("glMultiTexCoord3fARB"); + glad_glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)load("glMultiTexCoord3fvARB"); + glad_glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)load("glMultiTexCoord3iARB"); + glad_glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)load("glMultiTexCoord3ivARB"); + glad_glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)load("glMultiTexCoord3sARB"); + glad_glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)load("glMultiTexCoord3svARB"); + glad_glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)load("glMultiTexCoord4dARB"); + glad_glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)load("glMultiTexCoord4dvARB"); + glad_glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)load("glMultiTexCoord4fARB"); + glad_glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)load("glMultiTexCoord4fvARB"); + glad_glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)load("glMultiTexCoord4iARB"); + glad_glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)load("glMultiTexCoord4ivARB"); + glad_glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)load("glMultiTexCoord4sARB"); + glad_glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)load("glMultiTexCoord4svARB"); +} +static void load_GL_SGIX_polynomial_ffd(GLADloadproc load) { + if(!GLAD_GL_SGIX_polynomial_ffd) return; + glad_glDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC)load("glDeformationMap3dSGIX"); + glad_glDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC)load("glDeformationMap3fSGIX"); + glad_glDeformSGIX = (PFNGLDEFORMSGIXPROC)load("glDeformSGIX"); + glad_glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)load("glLoadIdentityDeformationMapSGIX"); +} +static void load_GL_EXT_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_provoking_vertex) return; + glad_glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)load("glProvokingVertexEXT"); +} +static void load_GL_ARB_point_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_point_parameters) return; + glad_glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)load("glPointParameterfARB"); + glad_glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)load("glPointParameterfvARB"); +} +static void load_GL_ARB_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_image_load_store) return; + glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); + glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); +} +static void load_GL_ARB_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_barrier) return; + glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); +} +static void load_GL_NV_bindless_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)load("glMultiDrawArraysIndirectBindlessNV"); + glad_glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)load("glMultiDrawElementsIndirectBindlessNV"); +} +static void load_GL_EXT_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_EXT_transform_feedback) return; + glad_glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)load("glBeginTransformFeedbackEXT"); + glad_glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)load("glEndTransformFeedbackEXT"); + glad_glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)load("glBindBufferRangeEXT"); + glad_glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)load("glBindBufferOffsetEXT"); + glad_glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)load("glBindBufferBaseEXT"); + glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)load("glTransformFeedbackVaryingsEXT"); + glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)load("glGetTransformFeedbackVaryingEXT"); +} +static void load_GL_NV_gpu_program4(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program4) return; + glad_glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)load("glProgramLocalParameterI4iNV"); + glad_glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)load("glProgramLocalParameterI4ivNV"); + glad_glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)load("glProgramLocalParametersI4ivNV"); + glad_glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)load("glProgramLocalParameterI4uiNV"); + glad_glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)load("glProgramLocalParameterI4uivNV"); + glad_glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)load("glProgramLocalParametersI4uivNV"); + glad_glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)load("glProgramEnvParameterI4iNV"); + glad_glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)load("glProgramEnvParameterI4ivNV"); + glad_glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)load("glProgramEnvParametersI4ivNV"); + glad_glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)load("glProgramEnvParameterI4uiNV"); + glad_glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)load("glProgramEnvParameterI4uivNV"); + glad_glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)load("glProgramEnvParametersI4uivNV"); + glad_glGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)load("glGetProgramLocalParameterIivNV"); + glad_glGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)load("glGetProgramLocalParameterIuivNV"); + glad_glGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)load("glGetProgramEnvParameterIivNV"); + glad_glGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)load("glGetProgramEnvParameterIuivNV"); +} +static void load_GL_NV_gpu_program5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program5) return; + glad_glProgramSubroutineParametersuivNV = (PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)load("glProgramSubroutineParametersuivNV"); + glad_glGetProgramSubroutineParameteruivNV = (PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)load("glGetProgramSubroutineParameteruivNV"); +} +static void load_GL_ARB_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_ARB_geometry_shader4) return; + glad_glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)load("glProgramParameteriARB"); + glad_glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)load("glFramebufferTextureARB"); + glad_glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)load("glFramebufferTextureLayerARB"); + glad_glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)load("glFramebufferTextureFaceARB"); +} +static void load_GL_NV_conservative_raster(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster) return; + glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); +} +static void load_GL_SGIX_sprite(GLADloadproc load) { + if(!GLAD_GL_SGIX_sprite) return; + glad_glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)load("glSpriteParameterfSGIX"); + glad_glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)load("glSpriteParameterfvSGIX"); + glad_glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)load("glSpriteParameteriSGIX"); + glad_glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)load("glSpriteParameterivSGIX"); +} +static void load_GL_ARB_get_program_binary(GLADloadproc load) { + if(!GLAD_GL_ARB_get_program_binary) return; + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); +} +static void load_GL_AMD_occlusion_query_event(GLADloadproc load) { + if(!GLAD_GL_AMD_occlusion_query_event) return; + glad_glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)load("glQueryObjectParameteruiAMD"); +} +static void load_GL_SGIS_multisample(GLADloadproc load) { + if(!GLAD_GL_SGIS_multisample) return; + glad_glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)load("glSampleMaskSGIS"); + glad_glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)load("glSamplePatternSGIS"); +} +static void load_GL_EXT_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_object) return; + glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT"); + glad_glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)load("glBindRenderbufferEXT"); + glad_glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)load("glDeleteRenderbuffersEXT"); + glad_glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)load("glGenRenderbuffersEXT"); + glad_glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)load("glRenderbufferStorageEXT"); + glad_glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)load("glGetRenderbufferParameterivEXT"); + glad_glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)load("glIsFramebufferEXT"); + glad_glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)load("glBindFramebufferEXT"); + glad_glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)load("glDeleteFramebuffersEXT"); + glad_glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)load("glGenFramebuffersEXT"); + glad_glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)load("glCheckFramebufferStatusEXT"); + glad_glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)load("glFramebufferTexture1DEXT"); + glad_glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)load("glFramebufferTexture2DEXT"); + glad_glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)load("glFramebufferTexture3DEXT"); + glad_glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)load("glFramebufferRenderbufferEXT"); + glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT"); + glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT"); +} +static void load_GL_APPLE_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_range) return; + glad_glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)load("glVertexArrayRangeAPPLE"); + glad_glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)load("glFlushVertexArrayRangeAPPLE"); + glad_glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)load("glVertexArrayParameteriAPPLE"); +} +static void load_GL_NV_register_combiners(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners) return; + glad_glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)load("glCombinerParameterfvNV"); + glad_glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)load("glCombinerParameterfNV"); + glad_glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)load("glCombinerParameterivNV"); + glad_glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)load("glCombinerParameteriNV"); + glad_glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)load("glCombinerInputNV"); + glad_glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)load("glCombinerOutputNV"); + glad_glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)load("glFinalCombinerInputNV"); + glad_glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)load("glGetCombinerInputParameterfvNV"); + glad_glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)load("glGetCombinerInputParameterivNV"); + glad_glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)load("glGetCombinerOutputParameterfvNV"); + glad_glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)load("glGetCombinerOutputParameterivNV"); + glad_glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)load("glGetFinalCombinerInputParameterfvNV"); + glad_glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)load("glGetFinalCombinerInputParameterivNV"); +} +static void load_GL_ARB_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers) return; + glad_glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)load("glDrawBuffersARB"); +} +static void load_GL_ARB_clear_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_texture) return; + glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); + glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); +} +static void load_GL_ARB_debug_output(GLADloadproc load) { + if(!GLAD_GL_ARB_debug_output) return; + glad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load("glDebugMessageControlARB"); + glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load("glDebugMessageInsertARB"); + glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); + glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); +} +static void load_GL_EXT_cull_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_cull_vertex) return; + glad_glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)load("glCullParameterdvEXT"); + glad_glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)load("glCullParameterfvEXT"); +} +static void load_GL_IBM_multimode_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_IBM_multimode_draw_arrays) return; + glad_glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)load("glMultiModeDrawArraysIBM"); + glad_glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)load("glMultiModeDrawElementsIBM"); +} +static void load_GL_APPLE_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_object) return; + glad_glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)load("glBindVertexArrayAPPLE"); + glad_glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)load("glDeleteVertexArraysAPPLE"); + glad_glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)load("glGenVertexArraysAPPLE"); + glad_glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)load("glIsVertexArrayAPPLE"); +} +static void load_GL_SGIS_detail_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_detail_texture) return; + glad_glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)load("glDetailTexFuncSGIS"); + glad_glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)load("glGetDetailTexFuncSGIS"); +} +static void load_GL_ARB_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_instanced) return; + glad_glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)load("glDrawArraysInstancedARB"); + glad_glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)load("glDrawElementsInstancedARB"); +} +static void load_GL_ARB_shading_language_include(GLADloadproc load) { + if(!GLAD_GL_ARB_shading_language_include) return; + glad_glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)load("glNamedStringARB"); + glad_glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)load("glDeleteNamedStringARB"); + glad_glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)load("glCompileShaderIncludeARB"); + glad_glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)load("glIsNamedStringARB"); + glad_glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)load("glGetNamedStringARB"); + glad_glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)load("glGetNamedStringivARB"); +} +static void load_GL_INGR_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_INGR_blend_func_separate) return; + glad_glBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC)load("glBlendFuncSeparateINGR"); +} +static void load_GL_NV_path_rendering(GLADloadproc load) { + if(!GLAD_GL_NV_path_rendering) return; + glad_glGenPathsNV = (PFNGLGENPATHSNVPROC)load("glGenPathsNV"); + glad_glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)load("glDeletePathsNV"); + glad_glIsPathNV = (PFNGLISPATHNVPROC)load("glIsPathNV"); + glad_glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)load("glPathCommandsNV"); + glad_glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)load("glPathCoordsNV"); + glad_glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)load("glPathSubCommandsNV"); + glad_glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)load("glPathSubCoordsNV"); + glad_glPathStringNV = (PFNGLPATHSTRINGNVPROC)load("glPathStringNV"); + glad_glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)load("glPathGlyphsNV"); + glad_glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)load("glPathGlyphRangeNV"); + glad_glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)load("glWeightPathsNV"); + glad_glCopyPathNV = (PFNGLCOPYPATHNVPROC)load("glCopyPathNV"); + glad_glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)load("glInterpolatePathsNV"); + glad_glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)load("glTransformPathNV"); + glad_glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)load("glPathParameterivNV"); + glad_glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)load("glPathParameteriNV"); + glad_glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)load("glPathParameterfvNV"); + glad_glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)load("glPathParameterfNV"); + glad_glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)load("glPathDashArrayNV"); + glad_glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)load("glPathStencilFuncNV"); + glad_glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)load("glPathStencilDepthOffsetNV"); + glad_glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)load("glStencilFillPathNV"); + glad_glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)load("glStencilStrokePathNV"); + glad_glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)load("glStencilFillPathInstancedNV"); + glad_glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)load("glStencilStrokePathInstancedNV"); + glad_glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)load("glPathCoverDepthFuncNV"); + glad_glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)load("glCoverFillPathNV"); + glad_glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)load("glCoverStrokePathNV"); + glad_glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)load("glCoverFillPathInstancedNV"); + glad_glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)load("glCoverStrokePathInstancedNV"); + glad_glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)load("glGetPathParameterivNV"); + glad_glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)load("glGetPathParameterfvNV"); + glad_glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)load("glGetPathCommandsNV"); + glad_glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)load("glGetPathCoordsNV"); + glad_glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)load("glGetPathDashArrayNV"); + glad_glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)load("glGetPathMetricsNV"); + glad_glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)load("glGetPathMetricRangeNV"); + glad_glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)load("glGetPathSpacingNV"); + glad_glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)load("glIsPointInFillPathNV"); + glad_glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)load("glIsPointInStrokePathNV"); + glad_glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)load("glGetPathLengthNV"); + glad_glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)load("glPointAlongPathNV"); + glad_glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)load("glMatrixLoad3x2fNV"); + glad_glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)load("glMatrixLoad3x3fNV"); + glad_glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)load("glMatrixLoadTranspose3x3fNV"); + glad_glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)load("glMatrixMult3x2fNV"); + glad_glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)load("glMatrixMult3x3fNV"); + glad_glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)load("glMatrixMultTranspose3x3fNV"); + glad_glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)load("glStencilThenCoverFillPathNV"); + glad_glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)load("glStencilThenCoverStrokePathNV"); + glad_glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)load("glStencilThenCoverFillPathInstancedNV"); + glad_glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)load("glStencilThenCoverStrokePathInstancedNV"); + glad_glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)load("glPathGlyphIndexRangeNV"); + glad_glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)load("glPathGlyphIndexArrayNV"); + glad_glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)load("glPathMemoryGlyphIndexArrayNV"); + glad_glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)load("glProgramPathFragmentInputGenNV"); + glad_glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)load("glGetProgramResourcefvNV"); + glad_glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)load("glPathColorGenNV"); + glad_glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)load("glPathTexGenNV"); + glad_glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)load("glPathFogGenNV"); + glad_glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)load("glGetPathColorGenivNV"); + glad_glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)load("glGetPathColorGenfvNV"); + glad_glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)load("glGetPathTexGenivNV"); + glad_glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)load("glGetPathTexGenfvNV"); +} +static void load_GL_NV_conservative_raster_dilate(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster_dilate) return; + glad_glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)load("glConservativeRasterParameterfNV"); +} +static void load_GL_ATI_vertex_streams(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_streams) return; + glad_glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)load("glVertexStream1sATI"); + glad_glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)load("glVertexStream1svATI"); + glad_glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)load("glVertexStream1iATI"); + glad_glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)load("glVertexStream1ivATI"); + glad_glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)load("glVertexStream1fATI"); + glad_glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)load("glVertexStream1fvATI"); + glad_glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)load("glVertexStream1dATI"); + glad_glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)load("glVertexStream1dvATI"); + glad_glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)load("glVertexStream2sATI"); + glad_glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)load("glVertexStream2svATI"); + glad_glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)load("glVertexStream2iATI"); + glad_glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)load("glVertexStream2ivATI"); + glad_glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)load("glVertexStream2fATI"); + glad_glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)load("glVertexStream2fvATI"); + glad_glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)load("glVertexStream2dATI"); + glad_glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)load("glVertexStream2dvATI"); + glad_glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)load("glVertexStream3sATI"); + glad_glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)load("glVertexStream3svATI"); + glad_glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)load("glVertexStream3iATI"); + glad_glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)load("glVertexStream3ivATI"); + glad_glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)load("glVertexStream3fATI"); + glad_glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)load("glVertexStream3fvATI"); + glad_glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)load("glVertexStream3dATI"); + glad_glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)load("glVertexStream3dvATI"); + glad_glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)load("glVertexStream4sATI"); + glad_glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)load("glVertexStream4svATI"); + glad_glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)load("glVertexStream4iATI"); + glad_glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)load("glVertexStream4ivATI"); + glad_glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)load("glVertexStream4fATI"); + glad_glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)load("glVertexStream4fvATI"); + glad_glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)load("glVertexStream4dATI"); + glad_glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)load("glVertexStream4dvATI"); + glad_glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)load("glNormalStream3bATI"); + glad_glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)load("glNormalStream3bvATI"); + glad_glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)load("glNormalStream3sATI"); + glad_glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)load("glNormalStream3svATI"); + glad_glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)load("glNormalStream3iATI"); + glad_glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)load("glNormalStream3ivATI"); + glad_glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)load("glNormalStream3fATI"); + glad_glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)load("glNormalStream3fvATI"); + glad_glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)load("glNormalStream3dATI"); + glad_glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)load("glNormalStream3dvATI"); + glad_glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)load("glClientActiveVertexStreamATI"); + glad_glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)load("glVertexBlendEnviATI"); + glad_glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)load("glVertexBlendEnvfATI"); +} +static void load_GL_ARB_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_int64) return; + glad_glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)load("glUniform1i64ARB"); + glad_glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)load("glUniform2i64ARB"); + glad_glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)load("glUniform3i64ARB"); + glad_glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)load("glUniform4i64ARB"); + glad_glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)load("glUniform1i64vARB"); + glad_glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)load("glUniform2i64vARB"); + glad_glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)load("glUniform3i64vARB"); + glad_glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)load("glUniform4i64vARB"); + glad_glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)load("glUniform1ui64ARB"); + glad_glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)load("glUniform2ui64ARB"); + glad_glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)load("glUniform3ui64ARB"); + glad_glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)load("glUniform4ui64ARB"); + glad_glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)load("glUniform1ui64vARB"); + glad_glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)load("glUniform2ui64vARB"); + glad_glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)load("glUniform3ui64vARB"); + glad_glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)load("glUniform4ui64vARB"); + glad_glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)load("glGetUniformi64vARB"); + glad_glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)load("glGetUniformui64vARB"); + glad_glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)load("glGetnUniformi64vARB"); + glad_glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)load("glGetnUniformui64vARB"); + glad_glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)load("glProgramUniform1i64ARB"); + glad_glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)load("glProgramUniform2i64ARB"); + glad_glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)load("glProgramUniform3i64ARB"); + glad_glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)load("glProgramUniform4i64ARB"); + glad_glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)load("glProgramUniform1i64vARB"); + glad_glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)load("glProgramUniform2i64vARB"); + glad_glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)load("glProgramUniform3i64vARB"); + glad_glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)load("glProgramUniform4i64vARB"); + glad_glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)load("glProgramUniform1ui64ARB"); + glad_glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)load("glProgramUniform2ui64ARB"); + glad_glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)load("glProgramUniform3ui64ARB"); + glad_glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)load("glProgramUniform4ui64ARB"); + glad_glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)load("glProgramUniform1ui64vARB"); + glad_glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)load("glProgramUniform2ui64vARB"); + glad_glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)load("glProgramUniform3ui64vARB"); + glad_glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)load("glProgramUniform4ui64vARB"); +} +static void load_GL_NV_vdpau_interop(GLADloadproc load) { + if(!GLAD_GL_NV_vdpau_interop) return; + glad_glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)load("glVDPAUInitNV"); + glad_glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)load("glVDPAUFiniNV"); + glad_glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)load("glVDPAURegisterVideoSurfaceNV"); + glad_glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)load("glVDPAURegisterOutputSurfaceNV"); + glad_glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)load("glVDPAUIsSurfaceNV"); + glad_glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)load("glVDPAUUnregisterSurfaceNV"); + glad_glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)load("glVDPAUGetSurfaceivNV"); + glad_glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)load("glVDPAUSurfaceAccessNV"); + glad_glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)load("glVDPAUMapSurfacesNV"); + glad_glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)load("glVDPAUUnmapSurfacesNV"); +} +static void load_GL_ARB_internalformat_query2(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query2) return; + glad_glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)load("glGetInternalformati64v"); +} +static void load_GL_SUN_vertex(GLADloadproc load) { + if(!GLAD_GL_SUN_vertex) return; + glad_glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)load("glColor4ubVertex2fSUN"); + glad_glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)load("glColor4ubVertex2fvSUN"); + glad_glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)load("glColor4ubVertex3fSUN"); + glad_glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)load("glColor4ubVertex3fvSUN"); + glad_glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)load("glColor3fVertex3fSUN"); + glad_glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)load("glColor3fVertex3fvSUN"); + glad_glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)load("glNormal3fVertex3fSUN"); + glad_glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)load("glNormal3fVertex3fvSUN"); + glad_glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glColor4fNormal3fVertex3fSUN"); + glad_glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)load("glTexCoord2fVertex3fSUN"); + glad_glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)load("glTexCoord2fVertex3fvSUN"); + glad_glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)load("glTexCoord4fVertex4fSUN"); + glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)load("glTexCoord4fVertex4fvSUN"); + glad_glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)load("glTexCoord2fColor4ubVertex3fSUN"); + glad_glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)load("glTexCoord2fColor4ubVertex3fvSUN"); + glad_glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)load("glTexCoord2fColor3fVertex3fSUN"); + glad_glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)load("glTexCoord2fColor3fVertex3fvSUN"); + glad_glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fNormal3fVertex3fSUN"); + glad_glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fNormal3fVertex3fvSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fvSUN"); + glad_glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)load("glReplacementCodeuiVertex3fSUN"); + glad_glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)load("glReplacementCodeuiVertex3fvSUN"); + glad_glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)load("glReplacementCodeuiColor4ubVertex3fSUN"); + glad_glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4ubVertex3fvSUN"); + glad_glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor3fVertex3fSUN"); + glad_glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor3fVertex3fvSUN"); + glad_glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiNormal3fVertex3fSUN"); + glad_glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); +} +static void load_GL_SGIX_igloo_interface(GLADloadproc load) { + if(!GLAD_GL_SGIX_igloo_interface) return; + glad_glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)load("glIglooInterfaceSGIX"); +} +static void load_GL_ARB_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_indirect) return; + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); +} +static void load_GL_NV_vertex_program4(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program4) return; + 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_SGIS_fog_function(GLADloadproc load) { + if(!GLAD_GL_SGIS_fog_function) return; + glad_glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)load("glFogFuncSGIS"); + glad_glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)load("glGetFogFuncSGIS"); +} +static void load_GL_EXT_x11_sync_object(GLADloadproc load) { + if(!GLAD_GL_EXT_x11_sync_object) return; + glad_glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)load("glImportSyncEXT"); +} +static void load_GL_ARB_sync(GLADloadproc load) { + if(!GLAD_GL_ARB_sync) return; + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); +} +static void load_GL_NV_sample_locations(GLADloadproc load) { + if(!GLAD_GL_NV_sample_locations) return; + glad_glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glFramebufferSampleLocationsfvNV"); + glad_glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glNamedFramebufferSampleLocationsfvNV"); + glad_glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)load("glResolveDepthValuesNV"); +} +static void load_GL_ARB_compute_variable_group_size(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_variable_group_size) return; + glad_glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)load("glDispatchComputeGroupSizeARB"); +} +static void load_GL_OES_fixed_point(GLADloadproc load) { + if(!GLAD_GL_OES_fixed_point) return; + glad_glAlphaFuncxOES = (PFNGLALPHAFUNCXOESPROC)load("glAlphaFuncxOES"); + glad_glClearColorxOES = (PFNGLCLEARCOLORXOESPROC)load("glClearColorxOES"); + glad_glClearDepthxOES = (PFNGLCLEARDEPTHXOESPROC)load("glClearDepthxOES"); + glad_glClipPlanexOES = (PFNGLCLIPPLANEXOESPROC)load("glClipPlanexOES"); + glad_glColor4xOES = (PFNGLCOLOR4XOESPROC)load("glColor4xOES"); + glad_glDepthRangexOES = (PFNGLDEPTHRANGEXOESPROC)load("glDepthRangexOES"); + glad_glFogxOES = (PFNGLFOGXOESPROC)load("glFogxOES"); + glad_glFogxvOES = (PFNGLFOGXVOESPROC)load("glFogxvOES"); + glad_glFrustumxOES = (PFNGLFRUSTUMXOESPROC)load("glFrustumxOES"); + glad_glGetClipPlanexOES = (PFNGLGETCLIPPLANEXOESPROC)load("glGetClipPlanexOES"); + glad_glGetFixedvOES = (PFNGLGETFIXEDVOESPROC)load("glGetFixedvOES"); + glad_glGetTexEnvxvOES = (PFNGLGETTEXENVXVOESPROC)load("glGetTexEnvxvOES"); + glad_glGetTexParameterxvOES = (PFNGLGETTEXPARAMETERXVOESPROC)load("glGetTexParameterxvOES"); + glad_glLightModelxOES = (PFNGLLIGHTMODELXOESPROC)load("glLightModelxOES"); + glad_glLightModelxvOES = (PFNGLLIGHTMODELXVOESPROC)load("glLightModelxvOES"); + glad_glLightxOES = (PFNGLLIGHTXOESPROC)load("glLightxOES"); + glad_glLightxvOES = (PFNGLLIGHTXVOESPROC)load("glLightxvOES"); + glad_glLineWidthxOES = (PFNGLLINEWIDTHXOESPROC)load("glLineWidthxOES"); + glad_glLoadMatrixxOES = (PFNGLLOADMATRIXXOESPROC)load("glLoadMatrixxOES"); + glad_glMaterialxOES = (PFNGLMATERIALXOESPROC)load("glMaterialxOES"); + glad_glMaterialxvOES = (PFNGLMATERIALXVOESPROC)load("glMaterialxvOES"); + glad_glMultMatrixxOES = (PFNGLMULTMATRIXXOESPROC)load("glMultMatrixxOES"); + glad_glMultiTexCoord4xOES = (PFNGLMULTITEXCOORD4XOESPROC)load("glMultiTexCoord4xOES"); + glad_glNormal3xOES = (PFNGLNORMAL3XOESPROC)load("glNormal3xOES"); + glad_glOrthoxOES = (PFNGLORTHOXOESPROC)load("glOrthoxOES"); + glad_glPointParameterxvOES = (PFNGLPOINTPARAMETERXVOESPROC)load("glPointParameterxvOES"); + glad_glPointSizexOES = (PFNGLPOINTSIZEXOESPROC)load("glPointSizexOES"); + glad_glPolygonOffsetxOES = (PFNGLPOLYGONOFFSETXOESPROC)load("glPolygonOffsetxOES"); + glad_glRotatexOES = (PFNGLROTATEXOESPROC)load("glRotatexOES"); + glad_glScalexOES = (PFNGLSCALEXOESPROC)load("glScalexOES"); + glad_glTexEnvxOES = (PFNGLTEXENVXOESPROC)load("glTexEnvxOES"); + glad_glTexEnvxvOES = (PFNGLTEXENVXVOESPROC)load("glTexEnvxvOES"); + glad_glTexParameterxOES = (PFNGLTEXPARAMETERXOESPROC)load("glTexParameterxOES"); + glad_glTexParameterxvOES = (PFNGLTEXPARAMETERXVOESPROC)load("glTexParameterxvOES"); + glad_glTranslatexOES = (PFNGLTRANSLATEXOESPROC)load("glTranslatexOES"); + glad_glGetLightxvOES = (PFNGLGETLIGHTXVOESPROC)load("glGetLightxvOES"); + glad_glGetMaterialxvOES = (PFNGLGETMATERIALXVOESPROC)load("glGetMaterialxvOES"); + glad_glPointParameterxOES = (PFNGLPOINTPARAMETERXOESPROC)load("glPointParameterxOES"); + glad_glSampleCoveragexOES = (PFNGLSAMPLECOVERAGEXOESPROC)load("glSampleCoveragexOES"); + glad_glAccumxOES = (PFNGLACCUMXOESPROC)load("glAccumxOES"); + glad_glBitmapxOES = (PFNGLBITMAPXOESPROC)load("glBitmapxOES"); + glad_glBlendColorxOES = (PFNGLBLENDCOLORXOESPROC)load("glBlendColorxOES"); + glad_glClearAccumxOES = (PFNGLCLEARACCUMXOESPROC)load("glClearAccumxOES"); + glad_glColor3xOES = (PFNGLCOLOR3XOESPROC)load("glColor3xOES"); + glad_glColor3xvOES = (PFNGLCOLOR3XVOESPROC)load("glColor3xvOES"); + glad_glColor4xvOES = (PFNGLCOLOR4XVOESPROC)load("glColor4xvOES"); + glad_glConvolutionParameterxOES = (PFNGLCONVOLUTIONPARAMETERXOESPROC)load("glConvolutionParameterxOES"); + glad_glConvolutionParameterxvOES = (PFNGLCONVOLUTIONPARAMETERXVOESPROC)load("glConvolutionParameterxvOES"); + glad_glEvalCoord1xOES = (PFNGLEVALCOORD1XOESPROC)load("glEvalCoord1xOES"); + glad_glEvalCoord1xvOES = (PFNGLEVALCOORD1XVOESPROC)load("glEvalCoord1xvOES"); + glad_glEvalCoord2xOES = (PFNGLEVALCOORD2XOESPROC)load("glEvalCoord2xOES"); + glad_glEvalCoord2xvOES = (PFNGLEVALCOORD2XVOESPROC)load("glEvalCoord2xvOES"); + glad_glFeedbackBufferxOES = (PFNGLFEEDBACKBUFFERXOESPROC)load("glFeedbackBufferxOES"); + glad_glGetConvolutionParameterxvOES = (PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)load("glGetConvolutionParameterxvOES"); + glad_glGetHistogramParameterxvOES = (PFNGLGETHISTOGRAMPARAMETERXVOESPROC)load("glGetHistogramParameterxvOES"); + glad_glGetLightxOES = (PFNGLGETLIGHTXOESPROC)load("glGetLightxOES"); + glad_glGetMapxvOES = (PFNGLGETMAPXVOESPROC)load("glGetMapxvOES"); + glad_glGetMaterialxOES = (PFNGLGETMATERIALXOESPROC)load("glGetMaterialxOES"); + glad_glGetPixelMapxv = (PFNGLGETPIXELMAPXVPROC)load("glGetPixelMapxv"); + glad_glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)load("glGetTexGenxvOES"); + glad_glGetTexLevelParameterxvOES = (PFNGLGETTEXLEVELPARAMETERXVOESPROC)load("glGetTexLevelParameterxvOES"); + glad_glIndexxOES = (PFNGLINDEXXOESPROC)load("glIndexxOES"); + glad_glIndexxvOES = (PFNGLINDEXXVOESPROC)load("glIndexxvOES"); + glad_glLoadTransposeMatrixxOES = (PFNGLLOADTRANSPOSEMATRIXXOESPROC)load("glLoadTransposeMatrixxOES"); + glad_glMap1xOES = (PFNGLMAP1XOESPROC)load("glMap1xOES"); + glad_glMap2xOES = (PFNGLMAP2XOESPROC)load("glMap2xOES"); + glad_glMapGrid1xOES = (PFNGLMAPGRID1XOESPROC)load("glMapGrid1xOES"); + glad_glMapGrid2xOES = (PFNGLMAPGRID2XOESPROC)load("glMapGrid2xOES"); + glad_glMultTransposeMatrixxOES = (PFNGLMULTTRANSPOSEMATRIXXOESPROC)load("glMultTransposeMatrixxOES"); + glad_glMultiTexCoord1xOES = (PFNGLMULTITEXCOORD1XOESPROC)load("glMultiTexCoord1xOES"); + glad_glMultiTexCoord1xvOES = (PFNGLMULTITEXCOORD1XVOESPROC)load("glMultiTexCoord1xvOES"); + glad_glMultiTexCoord2xOES = (PFNGLMULTITEXCOORD2XOESPROC)load("glMultiTexCoord2xOES"); + glad_glMultiTexCoord2xvOES = (PFNGLMULTITEXCOORD2XVOESPROC)load("glMultiTexCoord2xvOES"); + glad_glMultiTexCoord3xOES = (PFNGLMULTITEXCOORD3XOESPROC)load("glMultiTexCoord3xOES"); + glad_glMultiTexCoord3xvOES = (PFNGLMULTITEXCOORD3XVOESPROC)load("glMultiTexCoord3xvOES"); + glad_glMultiTexCoord4xvOES = (PFNGLMULTITEXCOORD4XVOESPROC)load("glMultiTexCoord4xvOES"); + glad_glNormal3xvOES = (PFNGLNORMAL3XVOESPROC)load("glNormal3xvOES"); + glad_glPassThroughxOES = (PFNGLPASSTHROUGHXOESPROC)load("glPassThroughxOES"); + glad_glPixelMapx = (PFNGLPIXELMAPXPROC)load("glPixelMapx"); + glad_glPixelStorex = (PFNGLPIXELSTOREXPROC)load("glPixelStorex"); + glad_glPixelTransferxOES = (PFNGLPIXELTRANSFERXOESPROC)load("glPixelTransferxOES"); + glad_glPixelZoomxOES = (PFNGLPIXELZOOMXOESPROC)load("glPixelZoomxOES"); + glad_glPrioritizeTexturesxOES = (PFNGLPRIORITIZETEXTURESXOESPROC)load("glPrioritizeTexturesxOES"); + glad_glRasterPos2xOES = (PFNGLRASTERPOS2XOESPROC)load("glRasterPos2xOES"); + glad_glRasterPos2xvOES = (PFNGLRASTERPOS2XVOESPROC)load("glRasterPos2xvOES"); + glad_glRasterPos3xOES = (PFNGLRASTERPOS3XOESPROC)load("glRasterPos3xOES"); + glad_glRasterPos3xvOES = (PFNGLRASTERPOS3XVOESPROC)load("glRasterPos3xvOES"); + glad_glRasterPos4xOES = (PFNGLRASTERPOS4XOESPROC)load("glRasterPos4xOES"); + glad_glRasterPos4xvOES = (PFNGLRASTERPOS4XVOESPROC)load("glRasterPos4xvOES"); + glad_glRectxOES = (PFNGLRECTXOESPROC)load("glRectxOES"); + glad_glRectxvOES = (PFNGLRECTXVOESPROC)load("glRectxvOES"); + glad_glTexCoord1xOES = (PFNGLTEXCOORD1XOESPROC)load("glTexCoord1xOES"); + glad_glTexCoord1xvOES = (PFNGLTEXCOORD1XVOESPROC)load("glTexCoord1xvOES"); + glad_glTexCoord2xOES = (PFNGLTEXCOORD2XOESPROC)load("glTexCoord2xOES"); + glad_glTexCoord2xvOES = (PFNGLTEXCOORD2XVOESPROC)load("glTexCoord2xvOES"); + glad_glTexCoord3xOES = (PFNGLTEXCOORD3XOESPROC)load("glTexCoord3xOES"); + glad_glTexCoord3xvOES = (PFNGLTEXCOORD3XVOESPROC)load("glTexCoord3xvOES"); + glad_glTexCoord4xOES = (PFNGLTEXCOORD4XOESPROC)load("glTexCoord4xOES"); + glad_glTexCoord4xvOES = (PFNGLTEXCOORD4XVOESPROC)load("glTexCoord4xvOES"); + glad_glTexGenxOES = (PFNGLTEXGENXOESPROC)load("glTexGenxOES"); + glad_glTexGenxvOES = (PFNGLTEXGENXVOESPROC)load("glTexGenxvOES"); + glad_glVertex2xOES = (PFNGLVERTEX2XOESPROC)load("glVertex2xOES"); + glad_glVertex2xvOES = (PFNGLVERTEX2XVOESPROC)load("glVertex2xvOES"); + glad_glVertex3xOES = (PFNGLVERTEX3XOESPROC)load("glVertex3xOES"); + glad_glVertex3xvOES = (PFNGLVERTEX3XVOESPROC)load("glVertex3xvOES"); + glad_glVertex4xOES = (PFNGLVERTEX4XOESPROC)load("glVertex4xOES"); + glad_glVertex4xvOES = (PFNGLVERTEX4XVOESPROC)load("glVertex4xvOES"); +} +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_SGIS_texture4D(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture4D) return; + glad_glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)load("glTexImage4DSGIS"); + glad_glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)load("glTexSubImage4DSGIS"); +} +static void load_GL_EXT_texture3D(GLADloadproc load) { + if(!GLAD_GL_EXT_texture3D) return; + glad_glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)load("glTexImage3DEXT"); + glad_glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)load("glTexSubImage3DEXT"); +} +static void load_GL_EXT_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_multisample) return; + glad_glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)load("glSampleMaskEXT"); + glad_glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)load("glSamplePatternEXT"); +} +static void load_GL_EXT_secondary_color(GLADloadproc load) { + if(!GLAD_GL_EXT_secondary_color) return; + glad_glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)load("glSecondaryColor3bEXT"); + glad_glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)load("glSecondaryColor3bvEXT"); + glad_glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)load("glSecondaryColor3dEXT"); + glad_glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)load("glSecondaryColor3dvEXT"); + glad_glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)load("glSecondaryColor3fEXT"); + glad_glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)load("glSecondaryColor3fvEXT"); + glad_glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)load("glSecondaryColor3iEXT"); + glad_glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)load("glSecondaryColor3ivEXT"); + glad_glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)load("glSecondaryColor3sEXT"); + glad_glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)load("glSecondaryColor3svEXT"); + glad_glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)load("glSecondaryColor3ubEXT"); + glad_glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)load("glSecondaryColor3ubvEXT"); + glad_glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)load("glSecondaryColor3uiEXT"); + glad_glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)load("glSecondaryColor3uivEXT"); + glad_glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)load("glSecondaryColor3usEXT"); + glad_glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)load("glSecondaryColor3usvEXT"); + glad_glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)load("glSecondaryColorPointerEXT"); +} +static void load_GL_ATI_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_array_object) return; + glad_glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)load("glNewObjectBufferATI"); + glad_glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)load("glIsObjectBufferATI"); + glad_glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)load("glUpdateObjectBufferATI"); + glad_glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)load("glGetObjectBufferfvATI"); + glad_glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)load("glGetObjectBufferivATI"); + glad_glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)load("glFreeObjectBufferATI"); + glad_glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)load("glArrayObjectATI"); + glad_glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)load("glGetArrayObjectfvATI"); + glad_glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)load("glGetArrayObjectivATI"); + glad_glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)load("glVariantArrayObjectATI"); + glad_glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)load("glGetVariantArrayObjectfvATI"); + glad_glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)load("glGetVariantArrayObjectivATI"); +} +static void load_GL_ARB_parallel_shader_compile(GLADloadproc load) { + if(!GLAD_GL_ARB_parallel_shader_compile) return; + glad_glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)load("glMaxShaderCompilerThreadsARB"); +} +static void load_GL_ARB_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_texture) return; + glad_glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)load("glTexPageCommitmentARB"); +} +static void load_GL_ARB_sample_locations(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_locations) return; + glad_glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glFramebufferSampleLocationsfvARB"); + glad_glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glNamedFramebufferSampleLocationsfvARB"); + glad_glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)load("glEvaluateDepthValuesARB"); +} +static void load_GL_ARB_sparse_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_buffer) return; + glad_glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)load("glBufferPageCommitmentARB"); + glad_glNamedBufferPageCommitmentEXT = (PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)load("glNamedBufferPageCommitmentEXT"); + glad_glNamedBufferPageCommitmentARB = (PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)load("glNamedBufferPageCommitmentARB"); +} +static void load_GL_EXT_draw_range_elements(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_range_elements) return; + glad_glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)load("glDrawRangeElementsEXT"); +} +static int find_extensionsGL(void) { + if (!get_exts()) return 0; + GLAD_GL_SGIX_pixel_tiles = has_ext("GL_SGIX_pixel_tiles"); + GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); + GLAD_GL_APPLE_element_array = has_ext("GL_APPLE_element_array"); + GLAD_GL_AMD_multi_draw_indirect = has_ext("GL_AMD_multi_draw_indirect"); + GLAD_GL_EXT_blend_subtract = has_ext("GL_EXT_blend_subtract"); + GLAD_GL_SGIX_tag_sample_buffer = has_ext("GL_SGIX_tag_sample_buffer"); + GLAD_GL_NV_point_sprite = has_ext("GL_NV_point_sprite"); + GLAD_GL_IBM_texture_mirrored_repeat = has_ext("GL_IBM_texture_mirrored_repeat"); + GLAD_GL_APPLE_transform_hint = has_ext("GL_APPLE_transform_hint"); + GLAD_GL_ATI_separate_stencil = has_ext("GL_ATI_separate_stencil"); + GLAD_GL_NV_shader_atomic_int64 = has_ext("GL_NV_shader_atomic_int64"); + GLAD_GL_NV_vertex_program2_option = has_ext("GL_NV_vertex_program2_option"); + GLAD_GL_EXT_texture_buffer_object = has_ext("GL_EXT_texture_buffer_object"); + GLAD_GL_ARB_vertex_blend = has_ext("GL_ARB_vertex_blend"); + GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); + GLAD_GL_NV_vertex_program2 = has_ext("GL_NV_vertex_program2"); + GLAD_GL_ARB_program_interface_query = has_ext("GL_ARB_program_interface_query"); + GLAD_GL_EXT_misc_attribute = has_ext("GL_EXT_misc_attribute"); + GLAD_GL_NV_multisample_coverage = has_ext("GL_NV_multisample_coverage"); + GLAD_GL_ARB_shading_language_packing = has_ext("GL_ARB_shading_language_packing"); + GLAD_GL_EXT_texture_cube_map = has_ext("GL_EXT_texture_cube_map"); + GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); + GLAD_GL_ARB_texture_stencil8 = has_ext("GL_ARB_texture_stencil8"); + GLAD_GL_EXT_index_func = has_ext("GL_EXT_index_func"); + GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); + GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp"); + GLAD_GL_NV_shader_buffer_load = has_ext("GL_NV_shader_buffer_load"); + GLAD_GL_EXT_color_subtable = has_ext("GL_EXT_color_subtable"); + GLAD_GL_SUNX_constant_data = has_ext("GL_SUNX_constant_data"); + GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); + GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); + GLAD_GL_ARB_shader_atomic_counters = has_ext("GL_ARB_shader_atomic_counters"); + GLAD_GL_ARB_arrays_of_arrays = has_ext("GL_ARB_arrays_of_arrays"); + GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); + GLAD_GL_EXT_texture_env_combine = has_ext("GL_EXT_texture_env_combine"); + GLAD_GL_NV_fog_distance = has_ext("GL_NV_fog_distance"); + GLAD_GL_SGIX_async_histogram = has_ext("GL_SGIX_async_histogram"); + GLAD_GL_MESA_resize_buffers = has_ext("GL_MESA_resize_buffers"); + GLAD_GL_NV_light_max_exponent = has_ext("GL_NV_light_max_exponent"); + GLAD_GL_NV_texture_env_combine4 = has_ext("GL_NV_texture_env_combine4"); + GLAD_GL_ARB_texture_view = has_ext("GL_ARB_texture_view"); + GLAD_GL_ARB_texture_env_combine = has_ext("GL_ARB_texture_env_combine"); + GLAD_GL_ARB_map_buffer_range = has_ext("GL_ARB_map_buffer_range"); + GLAD_GL_EXT_convolution = has_ext("GL_EXT_convolution"); + GLAD_GL_NV_compute_program5 = has_ext("GL_NV_compute_program5"); + GLAD_GL_NV_vertex_attrib_integer_64bit = has_ext("GL_NV_vertex_attrib_integer_64bit"); + GLAD_GL_EXT_paletted_texture = has_ext("GL_EXT_paletted_texture"); + GLAD_GL_ARB_texture_buffer_object = has_ext("GL_ARB_texture_buffer_object"); + GLAD_GL_ATI_pn_triangles = has_ext("GL_ATI_pn_triangles"); + GLAD_GL_SGIX_resample = has_ext("GL_SGIX_resample"); + GLAD_GL_SGIX_flush_raster = has_ext("GL_SGIX_flush_raster"); + GLAD_GL_EXT_light_texture = has_ext("GL_EXT_light_texture"); + GLAD_GL_ARB_point_sprite = has_ext("GL_ARB_point_sprite"); + GLAD_GL_SUN_convolution_border_modes = has_ext("GL_SUN_convolution_border_modes"); + GLAD_GL_NV_parameter_buffer_object2 = has_ext("GL_NV_parameter_buffer_object2"); + GLAD_GL_ARB_half_float_pixel = has_ext("GL_ARB_half_float_pixel"); + GLAD_GL_NV_tessellation_program5 = has_ext("GL_NV_tessellation_program5"); + GLAD_GL_REND_screen_coordinates = has_ext("GL_REND_screen_coordinates"); + GLAD_GL_HP_image_transform = has_ext("GL_HP_image_transform"); + GLAD_GL_EXT_packed_float = has_ext("GL_EXT_packed_float"); + GLAD_GL_OML_subsample = has_ext("GL_OML_subsample"); + GLAD_GL_SGIX_vertex_preclip = has_ext("GL_SGIX_vertex_preclip"); + GLAD_GL_SGIX_texture_scale_bias = has_ext("GL_SGIX_texture_scale_bias"); + GLAD_GL_AMD_draw_buffers_blend = has_ext("GL_AMD_draw_buffers_blend"); + GLAD_GL_APPLE_texture_range = has_ext("GL_APPLE_texture_range"); + GLAD_GL_EXT_texture_array = has_ext("GL_EXT_texture_array"); + GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); + GLAD_GL_ARB_texture_query_levels = has_ext("GL_ARB_texture_query_levels"); + GLAD_GL_NV_texgen_emboss = has_ext("GL_NV_texgen_emboss"); + GLAD_GL_EXT_texture_swizzle = has_ext("GL_EXT_texture_swizzle"); + GLAD_GL_ARB_texture_rg = has_ext("GL_ARB_texture_rg"); + GLAD_GL_ARB_vertex_type_2_10_10_10_rev = has_ext("GL_ARB_vertex_type_2_10_10_10_rev"); + GLAD_GL_ARB_fragment_shader = has_ext("GL_ARB_fragment_shader"); + GLAD_GL_3DFX_tbuffer = has_ext("GL_3DFX_tbuffer"); + GLAD_GL_GREMEDY_frame_terminator = has_ext("GL_GREMEDY_frame_terminator"); + GLAD_GL_ARB_blend_func_extended = has_ext("GL_ARB_blend_func_extended"); + GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); + GLAD_GL_NV_texture_multisample = has_ext("GL_NV_texture_multisample"); + GLAD_GL_ARB_shader_objects = has_ext("GL_ARB_shader_objects"); + GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object"); + GLAD_GL_ATI_envmap_bumpmap = has_ext("GL_ATI_envmap_bumpmap"); + GLAD_GL_ARB_robust_buffer_access_behavior = has_ext("GL_ARB_robust_buffer_access_behavior"); + GLAD_GL_ARB_shader_stencil_export = has_ext("GL_ARB_shader_stencil_export"); + GLAD_GL_NV_texture_rectangle = has_ext("GL_NV_texture_rectangle"); + GLAD_GL_ARB_enhanced_layouts = has_ext("GL_ARB_enhanced_layouts"); + GLAD_GL_ARB_texture_rectangle = has_ext("GL_ARB_texture_rectangle"); + GLAD_GL_SGI_texture_color_table = has_ext("GL_SGI_texture_color_table"); + GLAD_GL_ATI_map_object_buffer = has_ext("GL_ATI_map_object_buffer"); + GLAD_GL_ARB_robustness = has_ext("GL_ARB_robustness"); + GLAD_GL_NV_pixel_data_range = has_ext("GL_NV_pixel_data_range"); + GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit"); + GLAD_GL_ARB_gpu_shader_fp64 = has_ext("GL_ARB_gpu_shader_fp64"); + GLAD_GL_NV_command_list = has_ext("GL_NV_command_list"); + GLAD_GL_SGIX_depth_texture = has_ext("GL_SGIX_depth_texture"); + GLAD_GL_EXT_vertex_weighting = has_ext("GL_EXT_vertex_weighting"); + GLAD_GL_GREMEDY_string_marker = has_ext("GL_GREMEDY_string_marker"); + GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); + GLAD_GL_EXT_subtexture = has_ext("GL_EXT_subtexture"); + GLAD_GL_EXT_pixel_transform_color_table = has_ext("GL_EXT_pixel_transform_color_table"); + GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); + GLAD_GL_ARB_shader_atomic_counter_ops = has_ext("GL_ARB_shader_atomic_counter_ops"); + GLAD_GL_SGIX_depth_pass_instrument = has_ext("GL_SGIX_depth_pass_instrument"); + GLAD_GL_EXT_gpu_program_parameters = has_ext("GL_EXT_gpu_program_parameters"); + GLAD_GL_NV_evaluators = has_ext("GL_NV_evaluators"); + GLAD_GL_SGIS_texture_filter4 = has_ext("GL_SGIS_texture_filter4"); + GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); + GLAD_GL_NV_geometry_shader4 = has_ext("GL_NV_geometry_shader4"); + GLAD_GL_EXT_stencil_clear_tag = has_ext("GL_EXT_stencil_clear_tag"); + GLAD_GL_NV_vertex_program1_1 = has_ext("GL_NV_vertex_program1_1"); + GLAD_GL_NV_present_video = has_ext("GL_NV_present_video"); + GLAD_GL_ARB_texture_compression_rgtc = has_ext("GL_ARB_texture_compression_rgtc"); + GLAD_GL_HP_convolution_border_modes = has_ext("GL_HP_convolution_border_modes"); + GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); + GLAD_GL_SGIX_framezoom = has_ext("GL_SGIX_framezoom"); + GLAD_GL_ARB_stencil_texturing = has_ext("GL_ARB_stencil_texturing"); + GLAD_GL_ARB_shader_clock = has_ext("GL_ARB_shader_clock"); + GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); + GLAD_GL_SGIX_fog_offset = has_ext("GL_SGIX_fog_offset"); + GLAD_GL_ARB_draw_elements_base_vertex = has_ext("GL_ARB_draw_elements_base_vertex"); + GLAD_GL_INGR_interlace_read = has_ext("GL_INGR_interlace_read"); + GLAD_GL_NV_transform_feedback = has_ext("GL_NV_transform_feedback"); + GLAD_GL_NV_fragment_program = has_ext("GL_NV_fragment_program"); + GLAD_GL_AMD_stencil_operation_extended = has_ext("GL_AMD_stencil_operation_extended"); + GLAD_GL_ARB_seamless_cubemap_per_texture = has_ext("GL_ARB_seamless_cubemap_per_texture"); + GLAD_GL_ARB_instanced_arrays = has_ext("GL_ARB_instanced_arrays"); + GLAD_GL_EXT_polygon_offset = has_ext("GL_EXT_polygon_offset"); + GLAD_GL_NV_vertex_array_range2 = has_ext("GL_NV_vertex_array_range2"); + GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); + GLAD_GL_AMD_sparse_texture = has_ext("GL_AMD_sparse_texture"); + GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); + GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); + GLAD_GL_NV_fence = has_ext("GL_NV_fence"); + GLAD_GL_ARB_texture_buffer_range = has_ext("GL_ARB_texture_buffer_range"); + GLAD_GL_SUN_mesh_array = has_ext("GL_SUN_mesh_array"); + GLAD_GL_ARB_vertex_attrib_binding = has_ext("GL_ARB_vertex_attrib_binding"); + GLAD_GL_ARB_framebuffer_no_attachments = has_ext("GL_ARB_framebuffer_no_attachments"); + GLAD_GL_ARB_cl_event = has_ext("GL_ARB_cl_event"); + GLAD_GL_ARB_derivative_control = has_ext("GL_ARB_derivative_control"); + GLAD_GL_NV_packed_depth_stencil = has_ext("GL_NV_packed_depth_stencil"); + GLAD_GL_OES_single_precision = has_ext("GL_OES_single_precision"); + GLAD_GL_NV_primitive_restart = has_ext("GL_NV_primitive_restart"); + GLAD_GL_SUN_global_alpha = has_ext("GL_SUN_global_alpha"); + GLAD_GL_ARB_fragment_shader_interlock = has_ext("GL_ARB_fragment_shader_interlock"); + GLAD_GL_EXT_texture_object = has_ext("GL_EXT_texture_object"); + GLAD_GL_AMD_name_gen_delete = has_ext("GL_AMD_name_gen_delete"); + GLAD_GL_NV_texture_compression_vtc = has_ext("GL_NV_texture_compression_vtc"); + GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); + GLAD_GL_NV_texture_shader3 = has_ext("GL_NV_texture_shader3"); + GLAD_GL_NV_texture_shader2 = has_ext("GL_NV_texture_shader2"); + GLAD_GL_EXT_texture = has_ext("GL_EXT_texture"); + GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); + GLAD_GL_AMD_shader_atomic_counter_ops = has_ext("GL_AMD_shader_atomic_counter_ops"); + GLAD_GL_APPLE_vertex_program_evaluators = has_ext("GL_APPLE_vertex_program_evaluators"); + GLAD_GL_ARB_multi_bind = has_ext("GL_ARB_multi_bind"); + GLAD_GL_ARB_explicit_uniform_location = has_ext("GL_ARB_explicit_uniform_location"); + GLAD_GL_ARB_depth_buffer_float = has_ext("GL_ARB_depth_buffer_float"); + GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); + GLAD_GL_SGIX_shadow_ambient = has_ext("GL_SGIX_shadow_ambient"); + GLAD_GL_ARB_texture_cube_map = has_ext("GL_ARB_texture_cube_map"); + GLAD_GL_AMD_vertex_shader_viewport_index = has_ext("GL_AMD_vertex_shader_viewport_index"); + GLAD_GL_SGIX_list_priority = has_ext("GL_SGIX_list_priority"); + GLAD_GL_NV_vertex_buffer_unified_memory = has_ext("GL_NV_vertex_buffer_unified_memory"); + GLAD_GL_NV_uniform_buffer_unified_memory = has_ext("GL_NV_uniform_buffer_unified_memory"); + GLAD_GL_EXT_texture_env_dot3 = has_ext("GL_EXT_texture_env_dot3"); + GLAD_GL_ATI_texture_env_combine3 = has_ext("GL_ATI_texture_env_combine3"); + GLAD_GL_ARB_map_buffer_alignment = has_ext("GL_ARB_map_buffer_alignment"); + GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); + GLAD_GL_SGIS_sharpen_texture = has_ext("GL_SGIS_sharpen_texture"); + GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); + GLAD_GL_ARB_pipeline_statistics_query = has_ext("GL_ARB_pipeline_statistics_query"); + GLAD_GL_ARB_vertex_program = has_ext("GL_ARB_vertex_program"); + GLAD_GL_ARB_texture_rgb10_a2ui = has_ext("GL_ARB_texture_rgb10_a2ui"); + GLAD_GL_OML_interlace = has_ext("GL_OML_interlace"); + GLAD_GL_ATI_pixel_format_float = has_ext("GL_ATI_pixel_format_float"); + GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); + GLAD_GL_ARB_vertex_buffer_object = has_ext("GL_ARB_vertex_buffer_object"); + GLAD_GL_EXT_shadow_funcs = has_ext("GL_EXT_shadow_funcs"); + GLAD_GL_ATI_text_fragment_shader = has_ext("GL_ATI_text_fragment_shader"); + GLAD_GL_NV_vertex_array_range = has_ext("GL_NV_vertex_array_range"); + GLAD_GL_SGIX_fragment_lighting = has_ext("GL_SGIX_fragment_lighting"); + GLAD_GL_NV_texture_expand_normal = has_ext("GL_NV_texture_expand_normal"); + GLAD_GL_NV_framebuffer_multisample_coverage = has_ext("GL_NV_framebuffer_multisample_coverage"); + GLAD_GL_EXT_timer_query = has_ext("GL_EXT_timer_query"); + GLAD_GL_EXT_vertex_array_bgra = has_ext("GL_EXT_vertex_array_bgra"); + GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); + GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); + GLAD_GL_SGIS_texture_border_clamp = has_ext("GL_SGIS_texture_border_clamp"); + GLAD_GL_ATI_vertex_attrib_array_object = has_ext("GL_ATI_vertex_attrib_array_object"); + GLAD_GL_SGIX_clipmap = has_ext("GL_SGIX_clipmap"); + GLAD_GL_EXT_geometry_shader4 = has_ext("GL_EXT_geometry_shader4"); + GLAD_GL_ARB_shader_texture_image_samples = has_ext("GL_ARB_shader_texture_image_samples"); + GLAD_GL_MESA_ycbcr_texture = has_ext("GL_MESA_ycbcr_texture"); + GLAD_GL_MESAX_texture_stack = has_ext("GL_MESAX_texture_stack"); + GLAD_GL_AMD_seamless_cubemap_per_texture = has_ext("GL_AMD_seamless_cubemap_per_texture"); + GLAD_GL_EXT_bindable_uniform = has_ext("GL_EXT_bindable_uniform"); + GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); + GLAD_GL_ARB_shader_ballot = has_ext("GL_ARB_shader_ballot"); + GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); + GLAD_GL_ARB_fragment_program_shadow = has_ext("GL_ARB_fragment_program_shadow"); + GLAD_GL_ATI_element_array = has_ext("GL_ATI_element_array"); + GLAD_GL_AMD_texture_texture4 = has_ext("GL_AMD_texture_texture4"); + GLAD_GL_SGIX_reference_plane = has_ext("GL_SGIX_reference_plane"); + GLAD_GL_EXT_stencil_two_side = has_ext("GL_EXT_stencil_two_side"); + GLAD_GL_ARB_transform_feedback_overflow_query = has_ext("GL_ARB_transform_feedback_overflow_query"); + GLAD_GL_SGIX_texture_lod_bias = has_ext("GL_SGIX_texture_lod_bias"); + GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); + GLAD_GL_NV_explicit_multisample = has_ext("GL_NV_explicit_multisample"); + GLAD_GL_IBM_static_data = has_ext("GL_IBM_static_data"); + GLAD_GL_EXT_clip_volume_hint = has_ext("GL_EXT_clip_volume_hint"); + GLAD_GL_EXT_texture_perturb_normal = has_ext("GL_EXT_texture_perturb_normal"); + GLAD_GL_NV_fragment_program2 = has_ext("GL_NV_fragment_program2"); + GLAD_GL_NV_fragment_program4 = has_ext("GL_NV_fragment_program4"); + GLAD_GL_EXT_point_parameters = has_ext("GL_EXT_point_parameters"); + GLAD_GL_PGI_misc_hints = has_ext("GL_PGI_misc_hints"); + GLAD_GL_SGIX_subsample = has_ext("GL_SGIX_subsample"); + GLAD_GL_AMD_shader_stencil_export = has_ext("GL_AMD_shader_stencil_export"); + GLAD_GL_ARB_shader_texture_lod = has_ext("GL_ARB_shader_texture_lod"); + GLAD_GL_ARB_vertex_shader = has_ext("GL_ARB_vertex_shader"); + GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp"); + GLAD_GL_SGIS_texture_select = has_ext("GL_SGIS_texture_select"); + GLAD_GL_NV_texture_shader = has_ext("GL_NV_texture_shader"); + GLAD_GL_ARB_tessellation_shader = has_ext("GL_ARB_tessellation_shader"); + GLAD_GL_EXT_draw_buffers2 = has_ext("GL_EXT_draw_buffers2"); + GLAD_GL_ARB_vertex_attrib_64bit = has_ext("GL_ARB_vertex_attrib_64bit"); + GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); + GLAD_GL_WIN_specular_fog = has_ext("GL_WIN_specular_fog"); + GLAD_GL_AMD_interleaved_elements = has_ext("GL_AMD_interleaved_elements"); + GLAD_GL_ARB_fragment_program = has_ext("GL_ARB_fragment_program"); + GLAD_GL_OML_resample = has_ext("GL_OML_resample"); + GLAD_GL_APPLE_ycbcr_422 = has_ext("GL_APPLE_ycbcr_422"); + GLAD_GL_SGIX_texture_add_env = has_ext("GL_SGIX_texture_add_env"); + GLAD_GL_ARB_shadow_ambient = has_ext("GL_ARB_shadow_ambient"); + GLAD_GL_ARB_texture_storage = has_ext("GL_ARB_texture_storage"); + GLAD_GL_EXT_pixel_buffer_object = has_ext("GL_EXT_pixel_buffer_object"); + GLAD_GL_ARB_copy_image = has_ext("GL_ARB_copy_image"); + GLAD_GL_SGIS_pixel_texture = has_ext("GL_SGIS_pixel_texture"); + GLAD_GL_SGIS_generate_mipmap = has_ext("GL_SGIS_generate_mipmap"); + GLAD_GL_SGIX_instruments = has_ext("GL_SGIX_instruments"); + GLAD_GL_HP_texture_lighting = has_ext("GL_HP_texture_lighting"); + GLAD_GL_ARB_shader_storage_buffer_object = has_ext("GL_ARB_shader_storage_buffer_object"); + GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); + GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); + GLAD_GL_MESA_pack_invert = has_ext("GL_MESA_pack_invert"); + GLAD_GL_ARB_base_instance = has_ext("GL_ARB_base_instance"); + GLAD_GL_SGIX_convolution_accuracy = has_ext("GL_SGIX_convolution_accuracy"); + GLAD_GL_PGI_vertex_hints = has_ext("GL_PGI_vertex_hints"); + GLAD_GL_AMD_transform_feedback4 = has_ext("GL_AMD_transform_feedback4"); + GLAD_GL_ARB_ES3_1_compatibility = has_ext("GL_ARB_ES3_1_compatibility"); + GLAD_GL_EXT_texture_integer = has_ext("GL_EXT_texture_integer"); + GLAD_GL_ARB_texture_multisample = has_ext("GL_ARB_texture_multisample"); + GLAD_GL_AMD_gpu_shader_int64 = has_ext("GL_AMD_gpu_shader_int64"); + GLAD_GL_S3_s3tc = has_ext("GL_S3_s3tc"); + GLAD_GL_ARB_query_buffer_object = has_ext("GL_ARB_query_buffer_object"); + GLAD_GL_AMD_vertex_shader_tessellator = has_ext("GL_AMD_vertex_shader_tessellator"); + GLAD_GL_ARB_invalidate_subdata = has_ext("GL_ARB_invalidate_subdata"); + GLAD_GL_EXT_index_material = has_ext("GL_EXT_index_material"); + GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); + GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); + GLAD_GL_INTEL_parallel_arrays = has_ext("GL_INTEL_parallel_arrays"); + GLAD_GL_ATI_draw_buffers = has_ext("GL_ATI_draw_buffers"); + GLAD_GL_EXT_cmyka = has_ext("GL_EXT_cmyka"); + GLAD_GL_SGIX_pixel_texture = has_ext("GL_SGIX_pixel_texture"); + GLAD_GL_APPLE_specular_vector = has_ext("GL_APPLE_specular_vector"); + GLAD_GL_ARB_compatibility = has_ext("GL_ARB_compatibility"); + GLAD_GL_ARB_timer_query = has_ext("GL_ARB_timer_query"); + GLAD_GL_SGIX_interlace = has_ext("GL_SGIX_interlace"); + GLAD_GL_NV_parameter_buffer_object = has_ext("GL_NV_parameter_buffer_object"); + GLAD_GL_AMD_shader_trinary_minmax = has_ext("GL_AMD_shader_trinary_minmax"); + GLAD_GL_ARB_direct_state_access = has_ext("GL_ARB_direct_state_access"); + GLAD_GL_EXT_rescale_normal = has_ext("GL_EXT_rescale_normal"); + GLAD_GL_ARB_pixel_buffer_object = has_ext("GL_ARB_pixel_buffer_object"); + GLAD_GL_ARB_uniform_buffer_object = has_ext("GL_ARB_uniform_buffer_object"); + GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = has_ext("GL_ARB_vertex_type_10f_11f_11f_rev"); + GLAD_GL_ARB_texture_swizzle = has_ext("GL_ARB_texture_swizzle"); + GLAD_GL_NV_transform_feedback2 = has_ext("GL_NV_transform_feedback2"); + GLAD_GL_SGIX_async_pixel = has_ext("GL_SGIX_async_pixel"); + GLAD_GL_NV_fragment_program_option = has_ext("GL_NV_fragment_program_option"); + GLAD_GL_ARB_explicit_attrib_location = has_ext("GL_ARB_explicit_attrib_location"); + GLAD_GL_EXT_blend_color = has_ext("GL_EXT_blend_color"); + GLAD_GL_NV_shader_thread_group = has_ext("GL_NV_shader_thread_group"); + GLAD_GL_EXT_stencil_wrap = has_ext("GL_EXT_stencil_wrap"); + GLAD_GL_EXT_index_array_formats = has_ext("GL_EXT_index_array_formats"); + GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); + GLAD_GL_EXT_histogram = has_ext("GL_EXT_histogram"); + GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); + GLAD_GL_SGIS_point_parameters = has_ext("GL_SGIS_point_parameters"); + GLAD_GL_SGIX_ycrcb = has_ext("GL_SGIX_ycrcb"); + GLAD_GL_EXT_direct_state_access = has_ext("GL_EXT_direct_state_access"); + GLAD_GL_ARB_cull_distance = has_ext("GL_ARB_cull_distance"); + GLAD_GL_AMD_sample_positions = has_ext("GL_AMD_sample_positions"); + GLAD_GL_NV_vertex_program = has_ext("GL_NV_vertex_program"); + GLAD_GL_NV_shader_thread_shuffle = has_ext("GL_NV_shader_thread_shuffle"); + GLAD_GL_ARB_shader_precision = has_ext("GL_ARB_shader_precision"); + GLAD_GL_EXT_vertex_shader = has_ext("GL_EXT_vertex_shader"); + GLAD_GL_EXT_blend_func_separate = has_ext("GL_EXT_blend_func_separate"); + GLAD_GL_APPLE_fence = has_ext("GL_APPLE_fence"); + GLAD_GL_OES_byte_coordinates = has_ext("GL_OES_byte_coordinates"); + GLAD_GL_ARB_transpose_matrix = has_ext("GL_ARB_transpose_matrix"); + GLAD_GL_ARB_provoking_vertex = has_ext("GL_ARB_provoking_vertex"); + GLAD_GL_EXT_fog_coord = has_ext("GL_EXT_fog_coord"); + GLAD_GL_EXT_vertex_array = has_ext("GL_EXT_vertex_array"); + GLAD_GL_ARB_half_float_vertex = has_ext("GL_ARB_half_float_vertex"); + GLAD_GL_EXT_blend_equation_separate = has_ext("GL_EXT_blend_equation_separate"); + GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); + GLAD_GL_NVX_conditional_render = has_ext("GL_NVX_conditional_render"); + GLAD_GL_ARB_multi_draw_indirect = has_ext("GL_ARB_multi_draw_indirect"); + GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); + GLAD_GL_NV_copy_image = has_ext("GL_NV_copy_image"); + GLAD_GL_ARB_fragment_layer_viewport = has_ext("GL_ARB_fragment_layer_viewport"); + GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); + GLAD_GL_ARB_transform_feedback2 = has_ext("GL_ARB_transform_feedback2"); + GLAD_GL_ARB_transform_feedback3 = has_ext("GL_ARB_transform_feedback3"); + GLAD_GL_SGIX_ycrcba = has_ext("GL_SGIX_ycrcba"); + GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); + GLAD_GL_EXT_bgra = has_ext("GL_EXT_bgra"); + GLAD_GL_ARB_sparse_texture_clamp = has_ext("GL_ARB_sparse_texture_clamp"); + GLAD_GL_EXT_pixel_transform = has_ext("GL_EXT_pixel_transform"); + GLAD_GL_ARB_conservative_depth = has_ext("GL_ARB_conservative_depth"); + GLAD_GL_ATI_fragment_shader = has_ext("GL_ATI_fragment_shader"); + GLAD_GL_ARB_vertex_array_object = has_ext("GL_ARB_vertex_array_object"); + GLAD_GL_SUN_triangle_list = has_ext("GL_SUN_triangle_list"); + GLAD_GL_EXT_texture_env_add = has_ext("GL_EXT_texture_env_add"); + GLAD_GL_EXT_packed_depth_stencil = has_ext("GL_EXT_packed_depth_stencil"); + GLAD_GL_EXT_texture_mirror_clamp = has_ext("GL_EXT_texture_mirror_clamp"); + GLAD_GL_NV_multisample_filter_hint = has_ext("GL_NV_multisample_filter_hint"); + GLAD_GL_APPLE_float_pixels = has_ext("GL_APPLE_float_pixels"); + GLAD_GL_ARB_transform_feedback_instanced = has_ext("GL_ARB_transform_feedback_instanced"); + GLAD_GL_SGIX_async = has_ext("GL_SGIX_async"); + GLAD_GL_EXT_texture_compression_latc = has_ext("GL_EXT_texture_compression_latc"); + GLAD_GL_NV_shader_atomic_float = has_ext("GL_NV_shader_atomic_float"); + GLAD_GL_ARB_shading_language_100 = has_ext("GL_ARB_shading_language_100"); + GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); + GLAD_GL_ARB_texture_mirror_clamp_to_edge = has_ext("GL_ARB_texture_mirror_clamp_to_edge"); + GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); + GLAD_GL_NV_bindless_multi_draw_indirect_count = has_ext("GL_NV_bindless_multi_draw_indirect_count"); + GLAD_GL_ARB_ES2_compatibility = has_ext("GL_ARB_ES2_compatibility"); + GLAD_GL_ARB_indirect_parameters = has_ext("GL_ARB_indirect_parameters"); + GLAD_GL_NV_half_float = has_ext("GL_NV_half_float"); + GLAD_GL_ARB_ES3_2_compatibility = has_ext("GL_ARB_ES3_2_compatibility"); + GLAD_GL_ATI_texture_mirror_once = has_ext("GL_ATI_texture_mirror_once"); + GLAD_GL_IBM_rasterpos_clip = has_ext("GL_IBM_rasterpos_clip"); + GLAD_GL_SGIX_shadow = has_ext("GL_SGIX_shadow"); + GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); + GLAD_GL_NV_deep_texture3D = has_ext("GL_NV_deep_texture3D"); + GLAD_GL_ARB_shader_draw_parameters = has_ext("GL_ARB_shader_draw_parameters"); + GLAD_GL_SGIX_calligraphic_fragment = has_ext("GL_SGIX_calligraphic_fragment"); + GLAD_GL_ARB_shader_bit_encoding = has_ext("GL_ARB_shader_bit_encoding"); + GLAD_GL_EXT_compiled_vertex_array = has_ext("GL_EXT_compiled_vertex_array"); + GLAD_GL_NV_depth_buffer_float = has_ext("GL_NV_depth_buffer_float"); + GLAD_GL_NV_occlusion_query = has_ext("GL_NV_occlusion_query"); + GLAD_GL_APPLE_flush_buffer_range = has_ext("GL_APPLE_flush_buffer_range"); + GLAD_GL_ARB_imaging = has_ext("GL_ARB_imaging"); + GLAD_GL_ARB_draw_buffers_blend = has_ext("GL_ARB_draw_buffers_blend"); + GLAD_GL_AMD_gcn_shader = has_ext("GL_AMD_gcn_shader"); + GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); + GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); + GLAD_GL_ARB_shading_language_420pack = has_ext("GL_ARB_shading_language_420pack"); + GLAD_GL_ARB_shader_viewport_layer_array = has_ext("GL_ARB_shader_viewport_layer_array"); + GLAD_GL_ATI_meminfo = has_ext("GL_ATI_meminfo"); + GLAD_GL_EXT_abgr = has_ext("GL_EXT_abgr"); + GLAD_GL_AMD_pinned_memory = has_ext("GL_AMD_pinned_memory"); + GLAD_GL_EXT_texture_snorm = has_ext("GL_EXT_texture_snorm"); + GLAD_GL_SGIX_texture_coordinate_clamp = has_ext("GL_SGIX_texture_coordinate_clamp"); + GLAD_GL_ARB_clear_buffer_object = has_ext("GL_ARB_clear_buffer_object"); + GLAD_GL_ARB_multisample = has_ext("GL_ARB_multisample"); + GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); + GLAD_GL_ARB_sample_shading = has_ext("GL_ARB_sample_shading"); + GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); + GLAD_GL_INTEL_map_texture = has_ext("GL_INTEL_map_texture"); + GLAD_GL_ARB_texture_env_crossbar = has_ext("GL_ARB_texture_env_crossbar"); + GLAD_GL_EXT_422_pixels = has_ext("GL_EXT_422_pixels"); + GLAD_GL_ARB_compute_shader = has_ext("GL_ARB_compute_shader"); + GLAD_GL_EXT_blend_logic_op = has_ext("GL_EXT_blend_logic_op"); + GLAD_GL_IBM_cull_vertex = has_ext("GL_IBM_cull_vertex"); + GLAD_GL_IBM_vertex_array_lists = has_ext("GL_IBM_vertex_array_lists"); + GLAD_GL_ARB_color_buffer_float = has_ext("GL_ARB_color_buffer_float"); + GLAD_GL_ARB_bindless_texture = has_ext("GL_ARB_bindless_texture"); + GLAD_GL_ARB_window_pos = has_ext("GL_ARB_window_pos"); + GLAD_GL_ARB_internalformat_query = has_ext("GL_ARB_internalformat_query"); + GLAD_GL_ARB_shadow = has_ext("GL_ARB_shadow"); + GLAD_GL_ARB_texture_mirrored_repeat = has_ext("GL_ARB_texture_mirrored_repeat"); + GLAD_GL_EXT_shader_image_load_store = has_ext("GL_EXT_shader_image_load_store"); + GLAD_GL_EXT_copy_texture = has_ext("GL_EXT_copy_texture"); + GLAD_GL_NV_register_combiners2 = has_ext("GL_NV_register_combiners2"); + GLAD_GL_SGIX_ycrcb_subsample = has_ext("GL_SGIX_ycrcb_subsample"); + GLAD_GL_SGIX_ir_instrument1 = has_ext("GL_SGIX_ir_instrument1"); + GLAD_GL_NV_draw_texture = has_ext("GL_NV_draw_texture"); + GLAD_GL_EXT_texture_shared_exponent = has_ext("GL_EXT_texture_shared_exponent"); + GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); + GLAD_GL_NV_copy_depth_to_color = has_ext("GL_NV_copy_depth_to_color"); + GLAD_GL_ARB_viewport_array = has_ext("GL_ARB_viewport_array"); + GLAD_GL_ARB_separate_shader_objects = has_ext("GL_ARB_separate_shader_objects"); + GLAD_GL_EXT_depth_bounds_test = has_ext("GL_EXT_depth_bounds_test"); + GLAD_GL_EXT_shared_texture_palette = has_ext("GL_EXT_shared_texture_palette"); + GLAD_GL_ARB_texture_env_add = has_ext("GL_ARB_texture_env_add"); + GLAD_GL_NV_video_capture = has_ext("GL_NV_video_capture"); + GLAD_GL_ARB_sampler_objects = has_ext("GL_ARB_sampler_objects"); + GLAD_GL_ARB_matrix_palette = has_ext("GL_ARB_matrix_palette"); + GLAD_GL_SGIS_texture_color_mask = has_ext("GL_SGIS_texture_color_mask"); + GLAD_GL_EXT_packed_pixels = has_ext("GL_EXT_packed_pixels"); + GLAD_GL_EXT_coordinate_frame = has_ext("GL_EXT_coordinate_frame"); + GLAD_GL_ARB_texture_compression = has_ext("GL_ARB_texture_compression"); + GLAD_GL_APPLE_aux_depth_stencil = has_ext("GL_APPLE_aux_depth_stencil"); + GLAD_GL_ARB_shader_subroutine = has_ext("GL_ARB_shader_subroutine"); + GLAD_GL_EXT_framebuffer_sRGB = has_ext("GL_EXT_framebuffer_sRGB"); + GLAD_GL_ARB_texture_storage_multisample = has_ext("GL_ARB_texture_storage_multisample"); + GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); + GLAD_GL_EXT_vertex_attrib_64bit = has_ext("GL_EXT_vertex_attrib_64bit"); + GLAD_GL_ARB_depth_texture = has_ext("GL_ARB_depth_texture"); + GLAD_GL_NV_shader_buffer_store = has_ext("GL_NV_shader_buffer_store"); + GLAD_GL_OES_query_matrix = has_ext("GL_OES_query_matrix"); + GLAD_GL_MESA_window_pos = has_ext("GL_MESA_window_pos"); + GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); + GLAD_GL_NV_shader_storage_buffer_object = has_ext("GL_NV_shader_storage_buffer_object"); + GLAD_GL_ARB_texture_query_lod = has_ext("GL_ARB_texture_query_lod"); + GLAD_GL_ARB_copy_buffer = has_ext("GL_ARB_copy_buffer"); + GLAD_GL_ARB_shader_image_size = has_ext("GL_ARB_shader_image_size"); + GLAD_GL_NV_shader_atomic_counters = has_ext("GL_NV_shader_atomic_counters"); + GLAD_GL_APPLE_object_purgeable = has_ext("GL_APPLE_object_purgeable"); + GLAD_GL_ARB_occlusion_query = has_ext("GL_ARB_occlusion_query"); + GLAD_GL_INGR_color_clamp = has_ext("GL_INGR_color_clamp"); + GLAD_GL_SGI_color_table = has_ext("GL_SGI_color_table"); + GLAD_GL_NV_gpu_program5_mem_extended = has_ext("GL_NV_gpu_program5_mem_extended"); + GLAD_GL_ARB_texture_cube_map_array = has_ext("GL_ARB_texture_cube_map_array"); + GLAD_GL_SGIX_scalebias_hint = has_ext("GL_SGIX_scalebias_hint"); + GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4"); + GLAD_GL_NV_geometry_program4 = has_ext("GL_NV_geometry_program4"); + GLAD_GL_EXT_framebuffer_multisample_blit_scaled = has_ext("GL_EXT_framebuffer_multisample_blit_scaled"); + GLAD_GL_AMD_debug_output = has_ext("GL_AMD_debug_output"); + GLAD_GL_ARB_texture_border_clamp = has_ext("GL_ARB_texture_border_clamp"); + GLAD_GL_ARB_fragment_coord_conventions = has_ext("GL_ARB_fragment_coord_conventions"); + GLAD_GL_ARB_multitexture = has_ext("GL_ARB_multitexture"); + GLAD_GL_SGIX_polynomial_ffd = has_ext("GL_SGIX_polynomial_ffd"); + GLAD_GL_EXT_provoking_vertex = has_ext("GL_EXT_provoking_vertex"); + GLAD_GL_ARB_point_parameters = has_ext("GL_ARB_point_parameters"); + GLAD_GL_ARB_shader_image_load_store = has_ext("GL_ARB_shader_image_load_store"); + GLAD_GL_ARB_conditional_render_inverted = has_ext("GL_ARB_conditional_render_inverted"); + GLAD_GL_HP_occlusion_test = has_ext("GL_HP_occlusion_test"); + GLAD_GL_ARB_ES3_compatibility = has_ext("GL_ARB_ES3_compatibility"); + GLAD_GL_ARB_texture_barrier = has_ext("GL_ARB_texture_barrier"); + GLAD_GL_ARB_texture_buffer_object_rgb32 = has_ext("GL_ARB_texture_buffer_object_rgb32"); + GLAD_GL_NV_bindless_multi_draw_indirect = has_ext("GL_NV_bindless_multi_draw_indirect"); + GLAD_GL_SGIX_texture_multi_buffer = has_ext("GL_SGIX_texture_multi_buffer"); + GLAD_GL_EXT_transform_feedback = has_ext("GL_EXT_transform_feedback"); + GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); + GLAD_GL_3DFX_multisample = has_ext("GL_3DFX_multisample"); + GLAD_GL_INTEL_fragment_shader_ordering = has_ext("GL_INTEL_fragment_shader_ordering"); + GLAD_GL_ARB_texture_env_dot3 = has_ext("GL_ARB_texture_env_dot3"); + GLAD_GL_NV_gpu_program4 = has_ext("GL_NV_gpu_program4"); + GLAD_GL_NV_gpu_program5 = has_ext("GL_NV_gpu_program5"); + GLAD_GL_NV_float_buffer = has_ext("GL_NV_float_buffer"); + GLAD_GL_SGIS_texture_edge_clamp = has_ext("GL_SGIS_texture_edge_clamp"); + GLAD_GL_ARB_framebuffer_sRGB = has_ext("GL_ARB_framebuffer_sRGB"); + GLAD_GL_SUN_slice_accum = has_ext("GL_SUN_slice_accum"); + GLAD_GL_EXT_index_texture = has_ext("GL_EXT_index_texture"); + GLAD_GL_EXT_shader_image_load_formatted = has_ext("GL_EXT_shader_image_load_formatted"); + GLAD_GL_ARB_geometry_shader4 = has_ext("GL_ARB_geometry_shader4"); + GLAD_GL_EXT_separate_specular_color = has_ext("GL_EXT_separate_specular_color"); + GLAD_GL_AMD_depth_clamp_separate = has_ext("GL_AMD_depth_clamp_separate"); + GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); + GLAD_GL_ARB_sparse_texture2 = has_ext("GL_ARB_sparse_texture2"); + GLAD_GL_SGIX_sprite = has_ext("GL_SGIX_sprite"); + GLAD_GL_ARB_get_program_binary = has_ext("GL_ARB_get_program_binary"); + GLAD_GL_AMD_occlusion_query_event = has_ext("GL_AMD_occlusion_query_event"); + GLAD_GL_SGIS_multisample = has_ext("GL_SGIS_multisample"); + GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object"); + GLAD_GL_ARB_robustness_isolation = has_ext("GL_ARB_robustness_isolation"); + GLAD_GL_ARB_vertex_array_bgra = has_ext("GL_ARB_vertex_array_bgra"); + GLAD_GL_APPLE_vertex_array_range = has_ext("GL_APPLE_vertex_array_range"); + GLAD_GL_AMD_query_buffer_object = has_ext("GL_AMD_query_buffer_object"); + GLAD_GL_NV_register_combiners = has_ext("GL_NV_register_combiners"); + GLAD_GL_ARB_draw_buffers = has_ext("GL_ARB_draw_buffers"); + GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); + GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); + GLAD_GL_SGI_color_matrix = has_ext("GL_SGI_color_matrix"); + GLAD_GL_EXT_cull_vertex = has_ext("GL_EXT_cull_vertex"); + GLAD_GL_EXT_texture_sRGB = has_ext("GL_EXT_texture_sRGB"); + GLAD_GL_APPLE_row_bytes = has_ext("GL_APPLE_row_bytes"); + GLAD_GL_NV_texgen_reflection = has_ext("GL_NV_texgen_reflection"); + GLAD_GL_IBM_multimode_draw_arrays = has_ext("GL_IBM_multimode_draw_arrays"); + GLAD_GL_APPLE_vertex_array_object = has_ext("GL_APPLE_vertex_array_object"); + GLAD_GL_3DFX_texture_compression_FXT1 = has_ext("GL_3DFX_texture_compression_FXT1"); + GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); + GLAD_GL_AMD_conservative_depth = has_ext("GL_AMD_conservative_depth"); + GLAD_GL_ARB_texture_float = has_ext("GL_ARB_texture_float"); + GLAD_GL_ARB_compressed_texture_pixel_storage = has_ext("GL_ARB_compressed_texture_pixel_storage"); + GLAD_GL_SGIS_detail_texture = has_ext("GL_SGIS_detail_texture"); + GLAD_GL_ARB_draw_instanced = has_ext("GL_ARB_draw_instanced"); + GLAD_GL_OES_read_format = has_ext("GL_OES_read_format"); + GLAD_GL_ATI_texture_float = has_ext("GL_ATI_texture_float"); + GLAD_GL_ARB_texture_gather = has_ext("GL_ARB_texture_gather"); + GLAD_GL_AMD_vertex_shader_layer = has_ext("GL_AMD_vertex_shader_layer"); + GLAD_GL_ARB_shading_language_include = has_ext("GL_ARB_shading_language_include"); + GLAD_GL_APPLE_client_storage = has_ext("GL_APPLE_client_storage"); + GLAD_GL_WIN_phong_shading = has_ext("GL_WIN_phong_shading"); + GLAD_GL_INGR_blend_func_separate = has_ext("GL_INGR_blend_func_separate"); + GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); + GLAD_GL_NV_conservative_raster_dilate = has_ext("GL_NV_conservative_raster_dilate"); + GLAD_GL_ATI_vertex_streams = has_ext("GL_ATI_vertex_streams"); + GLAD_GL_ARB_post_depth_coverage = has_ext("GL_ARB_post_depth_coverage"); + GLAD_GL_ARB_texture_non_power_of_two = has_ext("GL_ARB_texture_non_power_of_two"); + GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); + GLAD_GL_EXT_texture_lod_bias = has_ext("GL_EXT_texture_lod_bias"); + GLAD_GL_ARB_gpu_shader_int64 = has_ext("GL_ARB_gpu_shader_int64"); + GLAD_GL_ARB_seamless_cube_map = has_ext("GL_ARB_seamless_cube_map"); + GLAD_GL_ARB_shader_group_vote = has_ext("GL_ARB_shader_group_vote"); + GLAD_GL_NV_vdpau_interop = has_ext("GL_NV_vdpau_interop"); + GLAD_GL_ARB_occlusion_query2 = has_ext("GL_ARB_occlusion_query2"); + GLAD_GL_ARB_internalformat_query2 = has_ext("GL_ARB_internalformat_query2"); + GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); + GLAD_GL_SUN_vertex = has_ext("GL_SUN_vertex"); + GLAD_GL_SGIX_igloo_interface = has_ext("GL_SGIX_igloo_interface"); + GLAD_GL_SGIS_texture_lod = has_ext("GL_SGIS_texture_lod"); + GLAD_GL_NV_vertex_program3 = has_ext("GL_NV_vertex_program3"); + GLAD_GL_ARB_draw_indirect = has_ext("GL_ARB_draw_indirect"); + GLAD_GL_NV_vertex_program4 = has_ext("GL_NV_vertex_program4"); + GLAD_GL_AMD_transform_feedback3_lines_triangles = has_ext("GL_AMD_transform_feedback3_lines_triangles"); + GLAD_GL_SGIS_fog_function = has_ext("GL_SGIS_fog_function"); + GLAD_GL_EXT_x11_sync_object = has_ext("GL_EXT_x11_sync_object"); + GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); + GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); + GLAD_GL_ARB_compute_variable_group_size = has_ext("GL_ARB_compute_variable_group_size"); + GLAD_GL_OES_fixed_point = has_ext("GL_OES_fixed_point"); + GLAD_GL_NV_blend_square = has_ext("GL_NV_blend_square"); + GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample"); + GLAD_GL_ARB_gpu_shader5 = has_ext("GL_ARB_gpu_shader5"); + GLAD_GL_SGIS_texture4D = has_ext("GL_SGIS_texture4D"); + GLAD_GL_EXT_texture3D = has_ext("GL_EXT_texture3D"); + GLAD_GL_EXT_multisample = has_ext("GL_EXT_multisample"); + GLAD_GL_EXT_secondary_color = has_ext("GL_EXT_secondary_color"); + GLAD_GL_ARB_texture_filter_minmax = has_ext("GL_ARB_texture_filter_minmax"); + GLAD_GL_ATI_vertex_array_object = has_ext("GL_ATI_vertex_array_object"); + GLAD_GL_ARB_parallel_shader_compile = has_ext("GL_ARB_parallel_shader_compile"); + GLAD_GL_NVX_gpu_memory_info = has_ext("GL_NVX_gpu_memory_info"); + GLAD_GL_ARB_sparse_texture = has_ext("GL_ARB_sparse_texture"); + GLAD_GL_SGIS_point_line_texgen = has_ext("GL_SGIS_point_line_texgen"); + GLAD_GL_ARB_sample_locations = has_ext("GL_ARB_sample_locations"); + GLAD_GL_ARB_sparse_buffer = has_ext("GL_ARB_sparse_buffer"); + GLAD_GL_EXT_draw_range_elements = has_ext("GL_EXT_draw_range_elements"); + GLAD_GL_SGIX_blend_alpha_minmax = has_ext("GL_SGIX_blend_alpha_minmax"); + GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); + free_exts(); + return 1; +} + +static void find_coreGL(void) { + + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; + + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL + }; + + version = (const char*) glGetString(GL_VERSION); + if (!version) return; + + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + +/* PR #18 */ +#ifdef _MSC_VER + sscanf_s(version, "%d.%d", &major, &minor); +#else + sscanf(version, "%d.%d", &major, &minor); +#endif + + GLVersion.major = major; GLVersion.minor = minor; + max_loaded_major = major; max_loaded_minor = minor; + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) { + max_loaded_major = 3; + max_loaded_minor = 3; + } +} + +int gladLoadGLLoader(GLADloadproc load) { + GLVersion.major = 0; GLVersion.minor = 0; + glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + if(glGetString == NULL) return 0; + if(glGetString(GL_VERSION) == NULL) return 0; + find_coreGL(); + load_GL_VERSION_1_0(load); + load_GL_VERSION_1_1(load); + load_GL_VERSION_1_2(load); + load_GL_VERSION_1_3(load); + load_GL_VERSION_1_4(load); + load_GL_VERSION_1_5(load); + load_GL_VERSION_2_0(load); + load_GL_VERSION_2_1(load); + load_GL_VERSION_3_0(load); + load_GL_VERSION_3_1(load); + load_GL_VERSION_3_2(load); + load_GL_VERSION_3_3(load); + + if (!find_extensionsGL()) return 0; + load_GL_APPLE_element_array(load); + load_GL_AMD_multi_draw_indirect(load); + load_GL_SGIX_tag_sample_buffer(load); + load_GL_NV_point_sprite(load); + load_GL_ATI_separate_stencil(load); + load_GL_EXT_texture_buffer_object(load); + load_GL_ARB_vertex_blend(load); + load_GL_OVR_multiview(load); + load_GL_ARB_program_interface_query(load); + load_GL_EXT_index_func(load); + load_GL_NV_shader_buffer_load(load); + load_GL_EXT_color_subtable(load); + load_GL_SUNX_constant_data(load); + load_GL_EXT_multi_draw_arrays(load); + load_GL_ARB_shader_atomic_counters(load); + load_GL_NV_conditional_render(load); + load_GL_MESA_resize_buffers(load); + load_GL_ARB_texture_view(load); + load_GL_ARB_map_buffer_range(load); + load_GL_EXT_convolution(load); + load_GL_NV_vertex_attrib_integer_64bit(load); + load_GL_EXT_paletted_texture(load); + load_GL_ARB_texture_buffer_object(load); + load_GL_ATI_pn_triangles(load); + load_GL_SGIX_flush_raster(load); + load_GL_EXT_light_texture(load); + load_GL_HP_image_transform(load); + load_GL_AMD_draw_buffers_blend(load); + load_GL_APPLE_texture_range(load); + load_GL_EXT_texture_array(load); + load_GL_NV_texture_barrier(load); + load_GL_ARB_vertex_type_2_10_10_10_rev(load); + load_GL_3DFX_tbuffer(load); + load_GL_GREMEDY_frame_terminator(load); + load_GL_ARB_blend_func_extended(load); + load_GL_EXT_separate_shader_objects(load); + load_GL_NV_texture_multisample(load); + load_GL_ARB_shader_objects(load); + load_GL_ARB_framebuffer_object(load); + load_GL_ATI_envmap_bumpmap(load); + load_GL_ATI_map_object_buffer(load); + load_GL_ARB_robustness(load); + load_GL_NV_pixel_data_range(load); + load_GL_EXT_framebuffer_blit(load); + load_GL_ARB_gpu_shader_fp64(load); + load_GL_NV_command_list(load); + load_GL_EXT_vertex_weighting(load); + load_GL_GREMEDY_string_marker(load); + load_GL_EXT_subtexture(load); + load_GL_EXT_gpu_program_parameters(load); + load_GL_NV_evaluators(load); + load_GL_SGIS_texture_filter4(load); + load_GL_AMD_performance_monitor(load); + load_GL_EXT_stencil_clear_tag(load); + load_GL_NV_present_video(load); + load_GL_SGIX_framezoom(load); + load_GL_ARB_draw_elements_base_vertex(load); + load_GL_NV_transform_feedback(load); + load_GL_NV_fragment_program(load); + load_GL_AMD_stencil_operation_extended(load); + load_GL_ARB_instanced_arrays(load); + load_GL_EXT_polygon_offset(load); + load_GL_KHR_robustness(load); + load_GL_AMD_sparse_texture(load); + load_GL_ARB_clip_control(load); + load_GL_NV_fragment_coverage_to_color(load); + load_GL_NV_fence(load); + load_GL_ARB_texture_buffer_range(load); + load_GL_SUN_mesh_array(load); + load_GL_ARB_vertex_attrib_binding(load); + load_GL_ARB_framebuffer_no_attachments(load); + load_GL_ARB_cl_event(load); + load_GL_OES_single_precision(load); + load_GL_NV_primitive_restart(load); + load_GL_SUN_global_alpha(load); + load_GL_EXT_texture_object(load); + load_GL_AMD_name_gen_delete(load); + load_GL_ARB_buffer_storage(load); + load_GL_APPLE_vertex_program_evaluators(load); + load_GL_ARB_multi_bind(load); + load_GL_SGIX_list_priority(load); + load_GL_NV_vertex_buffer_unified_memory(load); + load_GL_NV_blend_equation_advanced(load); + load_GL_SGIS_sharpen_texture(load); + load_GL_ARB_vertex_program(load); + load_GL_ARB_vertex_buffer_object(load); + load_GL_NV_vertex_array_range(load); + load_GL_SGIX_fragment_lighting(load); + load_GL_NV_framebuffer_multisample_coverage(load); + load_GL_EXT_timer_query(load); + load_GL_NV_bindless_texture(load); + load_GL_KHR_debug(load); + load_GL_ATI_vertex_attrib_array_object(load); + load_GL_EXT_geometry_shader4(load); + load_GL_EXT_bindable_uniform(load); + load_GL_KHR_blend_equation_advanced(load); + load_GL_ATI_element_array(load); + load_GL_SGIX_reference_plane(load); + load_GL_EXT_stencil_two_side(load); + load_GL_NV_explicit_multisample(load); + load_GL_IBM_static_data(load); + load_GL_EXT_texture_perturb_normal(load); + load_GL_EXT_point_parameters(load); + load_GL_PGI_misc_hints(load); + load_GL_ARB_vertex_shader(load); + load_GL_ARB_tessellation_shader(load); + load_GL_EXT_draw_buffers2(load); + load_GL_ARB_vertex_attrib_64bit(load); + load_GL_EXT_texture_filter_minmax(load); + load_GL_AMD_interleaved_elements(load); + load_GL_ARB_fragment_program(load); + load_GL_ARB_texture_storage(load); + load_GL_ARB_copy_image(load); + load_GL_SGIS_pixel_texture(load); + load_GL_SGIX_instruments(load); + load_GL_ARB_shader_storage_buffer_object(load); + load_GL_EXT_blend_minmax(load); + load_GL_ARB_base_instance(load); + load_GL_ARB_ES3_1_compatibility(load); + load_GL_EXT_texture_integer(load); + load_GL_ARB_texture_multisample(load); + load_GL_AMD_gpu_shader_int64(load); + load_GL_AMD_vertex_shader_tessellator(load); + load_GL_ARB_invalidate_subdata(load); + load_GL_EXT_index_material(load); + load_GL_INTEL_parallel_arrays(load); + load_GL_ATI_draw_buffers(load); + load_GL_SGIX_pixel_texture(load); + load_GL_ARB_timer_query(load); + load_GL_NV_parameter_buffer_object(load); + load_GL_ARB_direct_state_access(load); + load_GL_ARB_uniform_buffer_object(load); + load_GL_NV_transform_feedback2(load); + load_GL_EXT_blend_color(load); + load_GL_EXT_histogram(load); + load_GL_ARB_get_texture_sub_image(load); + load_GL_SGIS_point_parameters(load); + load_GL_EXT_direct_state_access(load); + load_GL_AMD_sample_positions(load); + load_GL_NV_vertex_program(load); + load_GL_EXT_vertex_shader(load); + load_GL_EXT_blend_func_separate(load); + load_GL_APPLE_fence(load); + load_GL_OES_byte_coordinates(load); + load_GL_ARB_transpose_matrix(load); + load_GL_ARB_provoking_vertex(load); + load_GL_EXT_fog_coord(load); + load_GL_EXT_vertex_array(load); + load_GL_EXT_blend_equation_separate(load); + load_GL_NV_framebuffer_mixed_samples(load); + load_GL_NVX_conditional_render(load); + load_GL_ARB_multi_draw_indirect(load); + load_GL_EXT_raster_multisample(load); + load_GL_NV_copy_image(load); + load_GL_INTEL_framebuffer_CMAA(load); + load_GL_ARB_transform_feedback2(load); + load_GL_ARB_transform_feedback3(load); + load_GL_EXT_debug_marker(load); + load_GL_EXT_pixel_transform(load); + load_GL_ATI_fragment_shader(load); + load_GL_ARB_vertex_array_object(load); + load_GL_SUN_triangle_list(load); + load_GL_ARB_transform_feedback_instanced(load); + load_GL_SGIX_async(load); + load_GL_INTEL_performance_query(load); + load_GL_NV_gpu_shader5(load); + load_GL_NV_bindless_multi_draw_indirect_count(load); + load_GL_ARB_ES2_compatibility(load); + load_GL_ARB_indirect_parameters(load); + load_GL_NV_half_float(load); + load_GL_ARB_ES3_2_compatibility(load); + load_GL_EXT_polygon_offset_clamp(load); + load_GL_EXT_compiled_vertex_array(load); + load_GL_NV_depth_buffer_float(load); + load_GL_NV_occlusion_query(load); + load_GL_APPLE_flush_buffer_range(load); + load_GL_ARB_imaging(load); + load_GL_ARB_draw_buffers_blend(load); + load_GL_ARB_clear_buffer_object(load); + load_GL_ARB_multisample(load); + load_GL_EXT_debug_label(load); + load_GL_ARB_sample_shading(load); + load_GL_NV_internalformat_sample_query(load); + load_GL_INTEL_map_texture(load); + load_GL_ARB_compute_shader(load); + load_GL_IBM_vertex_array_lists(load); + load_GL_ARB_color_buffer_float(load); + load_GL_ARB_bindless_texture(load); + load_GL_ARB_window_pos(load); + load_GL_ARB_internalformat_query(load); + load_GL_EXT_shader_image_load_store(load); + load_GL_EXT_copy_texture(load); + load_GL_NV_register_combiners2(load); + load_GL_NV_draw_texture(load); + load_GL_EXT_draw_instanced(load); + load_GL_ARB_viewport_array(load); + load_GL_ARB_separate_shader_objects(load); + load_GL_EXT_depth_bounds_test(load); + load_GL_NV_video_capture(load); + load_GL_ARB_sampler_objects(load); + load_GL_ARB_matrix_palette(load); + load_GL_SGIS_texture_color_mask(load); + load_GL_EXT_coordinate_frame(load); + load_GL_ARB_texture_compression(load); + load_GL_ARB_shader_subroutine(load); + load_GL_ARB_texture_storage_multisample(load); + load_GL_EXT_vertex_attrib_64bit(load); + load_GL_OES_query_matrix(load); + load_GL_MESA_window_pos(load); + load_GL_ARB_copy_buffer(load); + load_GL_APPLE_object_purgeable(load); + load_GL_ARB_occlusion_query(load); + load_GL_SGI_color_table(load); + load_GL_EXT_gpu_shader4(load); + load_GL_NV_geometry_program4(load); + load_GL_AMD_debug_output(load); + load_GL_ARB_multitexture(load); + load_GL_SGIX_polynomial_ffd(load); + load_GL_EXT_provoking_vertex(load); + load_GL_ARB_point_parameters(load); + load_GL_ARB_shader_image_load_store(load); + load_GL_ARB_texture_barrier(load); + load_GL_NV_bindless_multi_draw_indirect(load); + load_GL_EXT_transform_feedback(load); + load_GL_NV_gpu_program4(load); + load_GL_NV_gpu_program5(load); + load_GL_ARB_geometry_shader4(load); + load_GL_NV_conservative_raster(load); + load_GL_SGIX_sprite(load); + load_GL_ARB_get_program_binary(load); + load_GL_AMD_occlusion_query_event(load); + load_GL_SGIS_multisample(load); + load_GL_EXT_framebuffer_object(load); + load_GL_APPLE_vertex_array_range(load); + load_GL_NV_register_combiners(load); + load_GL_ARB_draw_buffers(load); + load_GL_ARB_clear_texture(load); + load_GL_ARB_debug_output(load); + load_GL_EXT_cull_vertex(load); + load_GL_IBM_multimode_draw_arrays(load); + load_GL_APPLE_vertex_array_object(load); + load_GL_SGIS_detail_texture(load); + load_GL_ARB_draw_instanced(load); + load_GL_ARB_shading_language_include(load); + load_GL_INGR_blend_func_separate(load); + load_GL_NV_path_rendering(load); + load_GL_NV_conservative_raster_dilate(load); + load_GL_ATI_vertex_streams(load); + load_GL_ARB_gpu_shader_int64(load); + load_GL_NV_vdpau_interop(load); + load_GL_ARB_internalformat_query2(load); + load_GL_SUN_vertex(load); + load_GL_SGIX_igloo_interface(load); + load_GL_ARB_draw_indirect(load); + load_GL_NV_vertex_program4(load); + load_GL_SGIS_fog_function(load); + load_GL_EXT_x11_sync_object(load); + load_GL_ARB_sync(load); + load_GL_NV_sample_locations(load); + load_GL_ARB_compute_variable_group_size(load); + load_GL_OES_fixed_point(load); + load_GL_EXT_framebuffer_multisample(load); + load_GL_SGIS_texture4D(load); + load_GL_EXT_texture3D(load); + load_GL_EXT_multisample(load); + load_GL_EXT_secondary_color(load); + load_GL_ATI_vertex_array_object(load); + load_GL_ARB_parallel_shader_compile(load); + load_GL_ARB_sparse_texture(load); + load_GL_ARB_sample_locations(load); + load_GL_ARB_sparse_buffer(load); + load_GL_EXT_draw_range_elements(load); + return GLVersion.major != 0 || GLVersion.minor != 0; +} + +#endif // GLAD_IMPLEMENTATION diff --git a/examples/oculus_glfw_sample/oculus_glfw_sample.c b/examples/oculus_glfw_sample/oculus_glfw_sample.c index b1fabbe97..5166bac64 100644 --- a/examples/oculus_glfw_sample/oculus_glfw_sample.c +++ b/examples/oculus_glfw_sample/oculus_glfw_sample.c @@ -4,11 +4,11 @@ * * NOTE: This example requires raylib module [rlgl] * -* Compile rlgl using: +* Compile rlgl module using: * gcc -c rlgl.c -Wall -std=c99 -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33 * * Compile example using: -* gcc -o oculus_glfw_sample.exe oculus_glfw_sample.c rlgl.o glad.o -L. -lLibOVRRT32_1 -lglfw3 -lopengl32 -lgdi32 -std=c99 +* gcc -o oculus_glfw_sample.exe oculus_glfw_sample.c rlgl.o -L. -lLibOVRRT32_1 -lglfw3 -lopengl32 -lgdi32 -std=c99 * * This example has been created using raylib 1.5 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) @@ -21,72 +21,103 @@ #include #include #include +#include +#define GLAD_IMPLEMENTATION #include "glad.h" // Extensions loading library #include // Windows/Context and inputs management -#include "OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL - #define RLGL_STANDALONE #include "rlgl.h" +//#define PLATFORM_OCULUS + +#if defined(PLATFORM_OCULUS) + #include "OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL +#endif + +#if defined(PLATFORM_OCULUS) // OVR device variables ovrSession session; ovrHmdDesc hmdDesc; ovrGraphicsLuid luid; +#endif -// OVR OpenGL required variables -GLuint fbo = 0; -GLuint depthBuffer = 0; -ovrTextureSwapChain eyeTexture; +unsigned int frameIndex = 0; -GLuint mirrorFbo = 0; -ovrMirrorTexture mirrorTexture; -ovrEyeRenderDesc eyeRenderDescs[2]; -Matrix eyeProjections[2]; - -ovrLayerEyeFov eyeLayer; -ovrViewScaleDesc viewScaleDesc; - -Vector2 renderTargetSize = { 0, 0 }; -Vector2 mirrorSize; -unsigned int frame = 0; - -// GLFW variables -GLFWwindow *window = NULL; +#define RED (Color){ 230, 41, 55, 255 } // Red +#define MAROON (Color){ 190, 33, 55, 255 } // Maroon +#define RAYWHITE (Color){ 245, 245, 245, 255 } // My own White (raylib logo) +#define DARKGRAY (Color){ 80, 80, 80, 255 } // Dark Gray //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- +#if defined(PLATFORM_OCULUS) +typedef struct OculusBuffer { + ovrTextureSwapChain textureChain; + GLuint depthId; + GLuint fboId; + int width; + int height; +} OculusBuffer; + +typedef struct OculusMirror { + ovrMirrorTexture texture; + GLuint fboId; + int width; + int height; +} OculusMirror; + +typedef struct OculusLayer { + ovrViewScaleDesc viewScaleDesc; + ovrLayerEyeFov eyeLayer; // layer 0 + //ovrLayerQuad quadLayer; // layer 1 + Matrix eyeProjections[2]; + int width; + int height; +} OculusLayer; +#endif + typedef enum { LOG_INFO = 0, LOG_ERROR, LOG_WARNING, LOG_DEBUG, LOG_OTHER } TraceLogType; //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- -static void ErrorCallback(int error, const char* description) -{ - fputs(description, stderr); -} - -static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) -{ - if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) - { - glfwSetWindowShouldClose(window, GL_TRUE); - } -} - -static void DrawRectangleV(Vector2 position, Vector2 size, Color color); +static void ErrorCallback(int error, const char* description); +static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); static void TraceLog(int msgType, const char *text, ...); + +// Drawing functions (uses rlgl functionality) +static void DrawGrid(int slices, float spacing); +static void DrawCube(Vector3 position, float width, float height, float length, Color color); +static void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); +static void DrawRectangleV(Vector2 position, Vector2 size, Color color); + +#if defined(PLATFORM_OCULUS) +// Oculus Rift functions static Matrix FromOvrMatrix(ovrMatrix4f ovrM); -void DrawGrid(int slices, float spacing); -void DrawCube(Vector3 position, float width, float height, float length, Color color); +static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height); +static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer); +static void SetOculusBuffer(ovrSession session, OculusBuffer buffer); +static void UnsetOculusBuffer(OculusBuffer buffer); +static OculusMirror LoadOculusMirror(ovrSession session, int width, int height); // Load Oculus mirror buffers +static void UnloadOculusMirror(ovrSession session, OculusMirror mirror); // Unload Oculus mirror buffers +static void BlitOculusMirror(ovrSession session, OculusMirror mirror); +static OculusLayer InitOculusLayer(ovrSession session); +#endif //---------------------------------------------------------------------------------- // Main Entry point //---------------------------------------------------------------------------------- -int main() +int main(void) { + // Initialization + //-------------------------------------------------------------------------------------- + int screenWidth = 1080; + int screenHeight = 600; + +#if defined(PLATFORM_OCULUS) ovrResult result = ovr_Initialize(NULL); if (OVR_FAILURE(result)) TraceLog(LOG_ERROR, "OVR: Could not initialize Oculus device"); @@ -106,37 +137,14 @@ int main() TraceLog(LOG_INFO, "OVR: Serian Number: %s", hmdDesc.SerialNumber); TraceLog(LOG_INFO, "OVR: Resolution: %ix%i", hmdDesc.Resolution.w, hmdDesc.Resolution.h); - - viewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f; - memset(&eyeLayer, 0, sizeof(ovrLayerEyeFov)); - eyeLayer.Header.Type = ovrLayerType_EyeFov; - eyeLayer.Header.Flags = ovrLayerFlag_TextureOriginAtBottomLeft; - - for (int eye = 0; eye < 2; eye++) - { - eyeRenderDescs[eye] = ovr_GetRenderDesc(session, eye, hmdDesc.DefaultEyeFov[eye]); - ovrMatrix4f ovrPerspectiveProjection = ovrMatrix4f_Projection(eyeRenderDescs[eye].Fov, 0.01f, 1000.0f, ovrProjection_ClipRangeOpenGL); - // NOTE struct ovrMatrix4f { float M[4][4] } - eyeProjections[eye] = FromOvrMatrix(ovrPerspectiveProjection); - viewScaleDesc.HmdToEyeOffset[eye] = eyeRenderDescs[eye].HmdToEyeOffset; - - eyeLayer.Fov[eye] = eyeRenderDescs[eye].Fov; - ovrSizei eyeSize = ovr_GetFovTextureSize(session, eye, eyeLayer.Fov[eye], 1.0f); - eyeLayer.Viewport[eye].Size = eyeSize; - eyeLayer.Viewport[eye].Pos.x = renderTargetSize.x; - eyeLayer.Viewport[eye].Pos.y = 0; - - renderTargetSize.y = eyeSize.h; //std::max(renderTargetSize.y, (uint32_t)eyeSize.h); - renderTargetSize.x += eyeSize.w; - } - - // Make the on screen window 1/2 the resolution of the device - mirrorSize.x = hmdDesc.Resolution.w/2; - mirrorSize.y = hmdDesc.Resolution.h/2; - + screenWidth = hmdDesc.Resolution.w/2; + screenHeight = hmdDesc.Resolution.h/2; +#endif // GLFW3 Initialization + OpenGL 3.3 Context + Extensions //-------------------------------------------------------- + glfwSetErrorCallback(ErrorCallback); + if (!glfwInit()) { TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); @@ -149,9 +157,8 @@ int main() glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - //glfwWindowHint(GLFW_DECORATED, GL_FALSE); // Mandatory on Oculus Rift to avoid program crash? --> NO - window = glfwCreateWindow(mirrorSize.x, mirrorSize.y, "raylib oculus sample", NULL, NULL); + GLFWwindow *window = glfwCreateWindow(screenWidth, screenHeight, "raylib oculus sample", NULL, NULL); if (!window) { @@ -160,146 +167,129 @@ int main() } else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); - glfwSetErrorCallback(ErrorCallback); glfwSetKeyCallback(window, KeyCallback); glfwMakeContextCurrent(window); glfwSwapInterval(0); + // Load OpenGL 3.3 extensions if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { TraceLog(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); exit(1); } else TraceLog(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); + //-------------------------------------------------------- - // Initialize OVR OpenGL swap chain textures - ovrTextureSwapChainDesc desc = {}; - desc.Type = ovrTexture_2D; - desc.ArraySize = 1; - desc.Width = renderTargetSize.x; - desc.Height = renderTargetSize.y; - desc.MipLevels = 1; - desc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - desc.SampleCount = 1; - desc.StaticImage = ovrFalse; - - result = ovr_CreateTextureSwapChainGL(session, &desc, &eyeTexture); - eyeLayer.ColorTexture[0] = eyeTexture; - - if (!OVR_SUCCESS(result)) TraceLog(LOG_WARNING, "Failed to create swap textures"); - - int length = 0; - result = ovr_GetTextureSwapChainLength(session, eyeTexture, &length); - - if (!OVR_SUCCESS(result) || !length) TraceLog(LOG_WARNING, "Unable to count swap chain textures"); - - for (int i = 0; i < length; ++i) - { - GLuint chainTexId; - ovr_GetTextureSwapChainBufferGL(session, eyeTexture, i, &chainTexId); - glBindTexture(GL_TEXTURE_2D, chainTexId); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - } - - glBindTexture(GL_TEXTURE_2D, 0); - - // Setup framebuffer object - glGenFramebuffers(1, &fbo); - glGenRenderbuffers(1, &depthBuffer); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo); - glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, renderTargetSize.x, renderTargetSize.y); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - - // Setup mirror texture - ovrMirrorTextureDesc mirrorDesc; - memset(&mirrorDesc, 0, sizeof(mirrorDesc)); - mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - mirrorDesc.Width = mirrorSize.x; - mirrorDesc.Height = mirrorSize.y; - - if (!OVR_SUCCESS(ovr_CreateMirrorTextureGL(session, &mirrorDesc, &mirrorTexture))) TraceLog(LOG_WARNING, "Could not create mirror texture"); - - glGenFramebuffers(1, &mirrorFbo); +#if defined(PLATFORM_OCULUS) + // Initialize Oculus Buffers + OculusLayer layer = InitOculusLayer(session); + OculusBuffer buffer = LoadOculusBuffer(session, layer.width, layer.height); + OculusMirror mirror = LoadOculusMirror(session, hmdDesc.Resolution.w/2, hmdDesc.Resolution.h/2); + layer.eyeLayer.ColorTexture[0] = buffer.textureChain; //SetOculusLayerTexture(eyeLayer, buffer.textureChain); // Recenter OVR tracking origin ovr_RecenterTrackingOrigin(session); - +#endif + // Initialize rlgl internal buffers and OpenGL state rlglInit(); - rlglInitGraphics(0, 0, mirrorSize.x, mirrorSize.y); - rlClearColor(245, 245, 245, 255); // Define clear color - glEnable(GL_DEPTH_TEST); + rlglInitGraphics(0, 0, screenWidth, screenHeight); + rlClearColor(245, 245, 245, 255); // Define clear color + rlEnableDepthTest(); // Enable DEPTH_TEST for 3D - Vector2 position = { mirrorSize.x/2 - 100, mirrorSize.y/2 - 100 }; Vector2 size = { 200, 200 }; - Color color = { 180, 20, 20, 255 }; Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; + + Camera camera; + camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + //-------------------------------------------------------------------------------------- + // Main game loop while (!glfwWindowShouldClose(window)) { // Update //---------------------------------------------------------------------------------- - frame++; +#if defined(PLATFORM_OCULUS) + frameIndex++; ovrPosef eyePoses[2]; - ovr_GetEyePoses(session, frame, ovrTrue, viewScaleDesc.HmdToEyeOffset, eyePoses, &eyeLayer.SensorSampleTime); + ovr_GetEyePoses(session, frameIndex, ovrTrue, layer.viewScaleDesc.HmdToEyeOffset, eyePoses, &layer.eyeLayer.SensorSampleTime); + + layer.eyeLayer.RenderPose[0] = eyePoses[0]; + layer.eyeLayer.RenderPose[1] = eyePoses[1]; +#endif //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- - int curIndex; - ovr_GetTextureSwapChainCurrentIndex(session, eyeTexture, &curIndex); - GLuint curTexId; - ovr_GetTextureSwapChainBufferGL(session, eyeTexture, curIndex, &curTexId); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo); - glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, curTexId, 0); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - +#if defined(PLATFORM_OCULUS) + SetOculusBuffer(session, buffer); +#endif + + rlClearScreenBuffers(); // Clear current framebuffers + +#if defined(PLATFORM_OCULUS) for (int eye = 0; eye < 2; eye++) { - glViewport(eyeLayer.Viewport[eye].Pos.x, eyeLayer.Viewport[eye].Pos.y, - eyeLayer.Viewport[eye].Size.w, eyeLayer.Viewport[eye].Size.h); - eyeLayer.RenderPose[eye] = eyePoses[eye]; - - // Convert struct ovrPosef { ovrQuatf Orientation; ovrVector3f Position; } to Matrix - // TODO: Review maths! - Matrix eyeOrientation = QuaternionToMatrix((Quaternion){ -eyePoses[eye].Orientation.x, -eyePoses[eye].Orientation.y, -eyePoses[eye].Orientation.z, -eyePoses[eye].Orientation.w }); - Matrix eyePosition = MatrixTranslate(-eyePoses[eye].Position.x, -eyePoses[eye].Position.y, -eyePoses[eye].Position.z); - Matrix mvp = MatrixMultiply(eyeProjections[eye], MatrixMultiply(eyeOrientation, eyePosition)); + glViewport(layer.eyeLayer.Viewport[eye].Pos.x, layer.eyeLayer.Viewport[eye].Pos.y, layer.eyeLayer.Viewport[eye].Size.w, layer.eyeLayer.Viewport[eye].Size.h); - // NOTE: Nothing is drawn until rlglDraw() - DrawRectangleV(position, size, color); - //DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, color); - //DrawGrid(10, 1.0f); - - // NOTE: rlglDraw() must be modified to support an external modelview-projection matrix - // TODO: Still working on it (now uses internal mvp) + Quaternion eyeRPose = (Quaternion){ eyePoses[eye].Orientation.x, eyePoses[eye].Orientation.y, eyePoses[eye].Orientation.z, eyePoses[eye].Orientation.w }; + QuaternionInvert(&eyeRPose); + Matrix eyeOrientation = QuaternionToMatrix(eyeRPose); + Matrix eyeTranslation = MatrixTranslate(-eyePoses[eye].Position.x, -eyePoses[eye].Position.y, -eyePoses[eye].Position.z); + + Matrix eyeView = MatrixMultiply(eyeTranslation, eyeOrientation); + Matrix modelview = MatrixMultiply(matView, eyeView); + Matrix mvp = MatrixMultiply(modelview, layer.eyeProjections[eye]); +#else + // Calculate projection matrix (from perspective) and view matrix from camera look at + Matrix matProj = MatrixPerspective(camera.fovy, (double)screenWidth/(double)screenHeight, 0.01, 1000.0); + MatrixTranspose(&matProj); + Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); + Matrix mvp = MatrixMultiply(matView, matProj); +#endif + DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); + DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, RAYWHITE); + DrawGrid(10, 1.0f); + + // NOTE: Internal buffers drawing (3D data) rlglDraw(mvp); + + matProj = MatrixOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0); + MatrixTranspose(&matProj); + matView = MatrixIdentity(); + mvp = MatrixMultiply(matView, matProj); + + // TODO: 2D drawing on Oculus Rift: requires an ovrLayerQuad layer + DrawRectangleV((Vector2){ 10.0f, 10.0f }, (Vector2){ 300.0f, 20.0f }, DARKGRAY); + + // NOTE: Internal buffers drawing (2D data) + rlglDraw(mvp); + +#if defined(PLATFORM_OCULUS) } - glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - ovr_CommitTextureSwapChain(session, eyeTexture); - ovrLayerHeader *headerList = &eyeLayer.Header; - ovr_SubmitFrame(session, frame, &viewScaleDesc, &headerList, 1); + UnsetOculusBuffer(buffer); + + ovr_CommitTextureSwapChain(session, buffer.textureChain); + + ovrLayerHeader *layers = &layer.eyeLayer.Header; + ovr_SubmitFrame(session, frameIndex, &layer.viewScaleDesc, &layers, 1); // Blit mirror texture to back buffer - GLuint mirrorTextureId; - ovr_GetMirrorTextureBufferGL(session, mirrorTexture, &mirrorTextureId); - glBindFramebuffer(GL_READ_FRAMEBUFFER, mirrorFbo); - glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mirrorTextureId, 0); - glBlitFramebuffer(0, 0, mirrorSize.x, mirrorSize.y, 0, mirrorSize.y, mirrorSize.x, 0, GL_COLOR_BUFFER_BIT, GL_NEAREST); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); + BlitOculusMirror(session, mirror); + + // Get session status information + ovrSessionStatus sessionStatus; + ovr_GetSessionStatus(session, &sessionStatus); + if (sessionStatus.ShouldQuit) TraceLog(LOG_WARNING, "OVR: Session should quit..."); + if (sessionStatus.ShouldRecenter) ovr_RecenterTrackingOrigin(session); +#endif - glfwSwapBuffers(window); glfwPollEvents(); //---------------------------------------------------------------------------------- @@ -307,20 +297,20 @@ int main() // De-Initialization //-------------------------------------------------------------------------------------- - if (mirrorFbo) glDeleteFramebuffers(1, &mirrorFbo); - if (mirrorTexture) ovr_DestroyMirrorTexture(session, mirrorTexture); +#if defined(PLATFORM_OCULUS) + UnloadOculusMirror(session, mirror); // Unload Oculus mirror buffer + UnloadOculusBuffer(session, buffer); // Unload Oculus texture buffers +#endif - if (fbo) glDeleteFramebuffers(1, &fbo); - if (depthBuffer) glDeleteTextures(1, &depthBuffer); - if (eyeTexture) ovr_DestroyTextureSwapChain(session, eyeTexture); - - rlglClose(); + rlglClose(); // Unload rlgl internal buffers and default shader/texture glfwDestroyWindow(window); glfwTerminate(); +#if defined(PLATFORM_OCULUS) ovr_Destroy(session); // Must be called after glfwTerminate() ovr_Shutdown(); +#endif //-------------------------------------------------------------------------------------- return 0; @@ -330,24 +320,22 @@ int main() // Module specific Functions Definitions //---------------------------------------------------------------------------------- -// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) -static void DrawRectangleV(Vector2 position, Vector2 size, Color color) +// GLFW3: Error callback +static void ErrorCallback(int error, const char* description) { - rlBegin(RL_TRIANGLES); - rlColor4ub(color.r, color.g, color.b, color.a); + TraceLog(LOG_ERROR, description); +} - rlVertex2i(position.x, position.y); - rlVertex2i(position.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y + size.y); - - rlVertex2i(position.x, position.y); - rlVertex2i(position.x + size.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y); - rlEnd(); +// GLFW3: Keyboard callback +static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + { + glfwSetWindowShouldClose(window, GL_TRUE); + } } // Output a trace log message -// NOTE: Expected msgType: (0)Info, (1)Error, (2)Warning static void TraceLog(int msgType, const char *text, ...) { va_list args; @@ -370,30 +358,52 @@ static void TraceLog(int msgType, const char *text, ...) //if (msgType == LOG_ERROR) exit(1); } -static Matrix FromOvrMatrix(ovrMatrix4f ovrmat) +// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) +static void DrawRectangleV(Vector2 position, Vector2 size, Color color) { - Matrix rmat; - - rmat.m0 = ovrmat.M[0][0]; - rmat.m1 = ovrmat.M[1][0]; - rmat.m2 = ovrmat.M[2][0]; - rmat.m3 = ovrmat.M[3][0]; - rmat.m4 = ovrmat.M[0][1]; - rmat.m5 = ovrmat.M[1][1]; - rmat.m6 = ovrmat.M[2][1]; - rmat.m7 = ovrmat.M[3][1]; - rmat.m8 = ovrmat.M[0][2]; - rmat.m9 = ovrmat.M[1][2]; - rmat.m10 = ovrmat.M[2][2]; - rmat.m11 = ovrmat.M[3][2]; - rmat.m12 = ovrmat.M[0][3]; - rmat.m13 = ovrmat.M[1][3]; - rmat.m14 = ovrmat.M[2][3]; - rmat.m15 = ovrmat.M[3][3]; - - //MatrixTranspose(&rmat); - - return rmat; + rlBegin(RL_TRIANGLES); + rlColor4ub(color.r, color.g, color.b, color.a); + + rlVertex2i(position.x, position.y); + rlVertex2i(position.x, position.y + size.y); + rlVertex2i(position.x + size.x, position.y + size.y); + + rlVertex2i(position.x, position.y); + rlVertex2i(position.x + size.x, position.y + size.y); + rlVertex2i(position.x + size.x, position.y); + rlEnd(); +} + +// Draw a grid centered at (0, 0, 0) +static void DrawGrid(int slices, float spacing) +{ + int halfSlices = slices / 2; + + rlBegin(RL_LINES); + for(int i = -halfSlices; i <= halfSlices; i++) + { + if (i == 0) + { + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + } + else + { + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + } + + rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); + rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); + + rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); + rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); + } + rlEnd(); } // Draw cube @@ -471,34 +481,279 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c rlPopMatrix(); } -// Draw a grid centered at (0, 0, 0) -void DrawGrid(int slices, float spacing) +// Draw cube wires +void DrawCubeWires(Vector3 position, float width, float height, float length, Color color) { - int halfSlices = slices / 2; + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; - rlBegin(RL_LINES); - for(int i = -halfSlices; i <= halfSlices; i++) - { - if (i == 0) - { - rlColor3f(0.5f, 0.5f, 0.5f); - rlColor3f(0.5f, 0.5f, 0.5f); - rlColor3f(0.5f, 0.5f, 0.5f); - rlColor3f(0.5f, 0.5f, 0.5f); - } - else - { - rlColor3f(0.75f, 0.75f, 0.75f); - rlColor3f(0.75f, 0.75f, 0.75f); - rlColor3f(0.75f, 0.75f, 0.75f); - rlColor3f(0.75f, 0.75f, 0.75f); - } + rlPushMatrix(); - rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); - rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); + rlTranslatef(position.x, position.y, position.z); + //rlRotatef(45, 0, 1, 0); - rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); - rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); - } - rlEnd(); + rlBegin(RL_LINES); + rlColor4ub(color.r, color.g, color.b, color.a); + + // Front Face ----------------------------------------------------- + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + + // Back Face ------------------------------------------------------ + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + + // Top Face ------------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right Back + + // Bottom Face --------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right Back + rlEnd(); + rlPopMatrix(); } + +#if defined(PLATFORM_OCULUS) +// Convert from Oculus ovrMatrix4f struct to raymath Matrix struct +static Matrix FromOvrMatrix(ovrMatrix4f ovrmat) +{ + Matrix rmat; + + rmat.m0 = ovrmat.M[0][0]; + rmat.m1 = ovrmat.M[1][0]; + rmat.m2 = ovrmat.M[2][0]; + rmat.m3 = ovrmat.M[3][0]; + rmat.m4 = ovrmat.M[0][1]; + rmat.m5 = ovrmat.M[1][1]; + rmat.m6 = ovrmat.M[2][1]; + rmat.m7 = ovrmat.M[3][1]; + rmat.m8 = ovrmat.M[0][2]; + rmat.m9 = ovrmat.M[1][2]; + rmat.m10 = ovrmat.M[2][2]; + rmat.m11 = ovrmat.M[3][2]; + rmat.m12 = ovrmat.M[0][3]; + rmat.m13 = ovrmat.M[1][3]; + rmat.m14 = ovrmat.M[2][3]; + rmat.m15 = ovrmat.M[3][3]; + + MatrixTranspose(&rmat); + + return rmat; +} + +// Load Oculus required buffers: texture-swap-chain, fbo, texture-depth +static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height) +{ + OculusBuffer buffer; + buffer.width = width; + buffer.height = height; + + // Create OVR texture chain + ovrTextureSwapChainDesc desc = {}; + desc.Type = ovrTexture_2D; + desc.ArraySize = 1; + desc.Width = width; + desc.Height = height; + desc.MipLevels = 1; + desc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; + desc.SampleCount = 1; + desc.StaticImage = ovrFalse; + + ovrResult result = ovr_CreateTextureSwapChainGL(session, &desc, &buffer.textureChain); + + //eyeLayer.ColorTexture[0] = buffer.textureChain; // <------------------- ??? + + if (!OVR_SUCCESS(result)) TraceLog(LOG_WARNING, "OVR: Failed to create swap textures buffer"); + + int textureCount = 0; + ovr_GetTextureSwapChainLength(session, buffer.textureChain, &textureCount); + + if (!OVR_SUCCESS(result) || !textureCount) TraceLog(LOG_WARNING, "OVR: Unable to count swap chain textures"); + + for (int i = 0; i < textureCount; ++i) + { + GLuint chainTexId; + ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, i, &chainTexId); + glBindTexture(GL_TEXTURE_2D, chainTexId); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + } + + glBindTexture(GL_TEXTURE_2D, 0); + + /* + // Setup framebuffer object (using depth texture) + glGenFramebuffers(1, &buffer.fboId); + glGenTextures(1, &buffer.depthId); + glBindTexture(GL_TEXTURE_2D, buffer.depthId); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, buffer.width, buffer.height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); + */ + + // Setup framebuffer object (using depth renderbuffer) + glGenFramebuffers(1, &buffer.fboId); + glGenRenderbuffers(1, &buffer.depthId); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, buffer.fboId); + glBindRenderbuffer(GL_RENDERBUFFER, buffer.depthId); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, buffer.width, buffer.height); + glBindRenderbuffer(GL_RENDERBUFFER, 0); + glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, buffer.depthId); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + + return buffer; +} + +// Unload texture required buffers +static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer) +{ + if (buffer.textureChain) + { + ovr_DestroyTextureSwapChain(session, buffer.textureChain); + buffer.textureChain = NULL; + } + + if (buffer.depthId != 0) glDeleteTextures(1, &buffer.depthId); + if (buffer.fboId != 0) glDeleteFramebuffers(1, &buffer.fboId); +} + +// Set current Oculus buffer +static void SetOculusBuffer(ovrSession session, OculusBuffer buffer) +{ + GLuint currentTexId; + int currentIndex; + + ovr_GetTextureSwapChainCurrentIndex(session, buffer.textureChain, ¤tIndex); + ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, currentIndex, ¤tTexId); + + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, buffer.fboId); + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, currentTexId, 0); + //glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, buffer.depthId, 0); // Already binded + + //glViewport(0, 0, buffer.width, buffer.height); + //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + //glEnable(GL_FRAMEBUFFER_SRGB); +} + +// Unset Oculus buffer +static void UnsetOculusBuffer(OculusBuffer buffer) +{ + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); +} + +// Load Oculus mirror buffers +static OculusMirror LoadOculusMirror(ovrSession session, int width, int height) +{ + OculusMirror mirror; + mirror.width = width; + mirror.height = height; + + ovrMirrorTextureDesc mirrorDesc; + memset(&mirrorDesc, 0, sizeof(mirrorDesc)); + mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; + mirrorDesc.Width = mirror.width; + mirrorDesc.Height = mirror.height; + + if (!OVR_SUCCESS(ovr_CreateMirrorTextureGL(session, &mirrorDesc, &mirror.texture))) TraceLog(LOG_WARNING, "Could not create mirror texture"); + + glGenFramebuffers(1, &mirror.fboId); + + return mirror; +} + +// Unload Oculus mirror buffers +static void UnloadOculusMirror(ovrSession session, OculusMirror mirror) +{ + if (mirror.fboId != 0) glDeleteFramebuffers(1, &mirror.fboId); + if (mirror.texture) ovr_DestroyMirrorTexture(session, mirror.texture); +} + +static void BlitOculusMirror(ovrSession session, OculusMirror mirror) +{ + GLuint mirrorTextureId; + + ovr_GetMirrorTextureBufferGL(session, mirror.texture, &mirrorTextureId); + + glBindFramebuffer(GL_READ_FRAMEBUFFER, mirror.fboId); + glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mirrorTextureId, 0); + glBlitFramebuffer(0, 0, mirror.width, mirror.height, 0, mirror.height, mirror.width, 0, GL_COLOR_BUFFER_BIT, GL_NEAREST); + glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); +} + +// Requires: session, hmdDesc +static OculusLayer InitOculusLayer(ovrSession session) +{ + OculusLayer layer = { 0 }; + + layer.viewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f; + + memset(&layer.eyeLayer, 0, sizeof(ovrLayerEyeFov)); + layer.eyeLayer.Header.Type = ovrLayerType_EyeFov; + layer.eyeLayer.Header.Flags = ovrLayerFlag_TextureOriginAtBottomLeft; + + ovrEyeRenderDesc eyeRenderDescs[2]; + + for (int eye = 0; eye < 2; eye++) + { + eyeRenderDescs[eye] = ovr_GetRenderDesc(session, eye, hmdDesc.DefaultEyeFov[eye]); + ovrMatrix4f ovrPerspectiveProjection = ovrMatrix4f_Projection(eyeRenderDescs[eye].Fov, 0.01f, 10000.0f, ovrProjection_None); //ovrProjection_ClipRangeOpenGL); + layer.eyeProjections[eye] = FromOvrMatrix(ovrPerspectiveProjection); // NOTE: struct ovrMatrix4f { float M[4][4] } --> struct Matrix + + layer.viewScaleDesc.HmdToEyeOffset[eye] = eyeRenderDescs[eye].HmdToEyeOffset; + layer.eyeLayer.Fov[eye] = eyeRenderDescs[eye].Fov; + + ovrSizei eyeSize = ovr_GetFovTextureSize(session, eye, layer.eyeLayer.Fov[eye], 1.0f); + layer.eyeLayer.Viewport[eye].Size = eyeSize; + layer.eyeLayer.Viewport[eye].Pos.x = layer.width; + layer.eyeLayer.Viewport[eye].Pos.y = 0; + + layer.height = eyeSize.h; //std::max(renderTargetSize.y, (uint32_t)eyeSize.h); + layer.width += eyeSize.w; + } + + return layer; +} +#endif \ No newline at end of file diff --git a/examples/oculus_glfw_sample/oculus_glfw_sample.old.c b/examples/oculus_glfw_sample/oculus_glfw_sample.old.c deleted file mode 100644 index c4997eae5..000000000 --- a/examples/oculus_glfw_sample/oculus_glfw_sample.old.c +++ /dev/null @@ -1,498 +0,0 @@ -/******************************************************************************************* -* -* raylib Oculus minimum sample (OpenGL 3.3 Core) -* -* NOTE: This example requires raylib module [rlgl] -* -* Compile rlgl using: -* gcc -c rlgl.c -Wall -std=c99 -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33 -* -* Compile example using: -* gcc -o oculus_glfw_sample.exe oculus_glfw_sample.c rlgl.o glad.o -L. -lLibOVRRT32_1 -lglfw3 -lopengl32 -lgdi32 -std=c99 -* -* This example has been created using raylib 1.5 (www.raylib.com) -* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) -* -* Copyright (c) 2015 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#if defined(_WIN32) - #define GLFW_EXPOSE_NATIVE_WIN32 - #define GLFW_EXPOSE_NATIVE_WGL - #define OVR_OS_WIN32 -#elif defined(__APPLE__) - #define GLFW_EXPOSE_NATIVE_COCOA - #define GLFW_EXPOSE_NATIVE_NSGL - #define OVR_OS_MAC -#elif defined(__linux__) - #define GLFW_EXPOSE_NATIVE_X11 - #define GLFW_EXPOSE_NATIVE_GLX - #define OVR_OS_LINUX -#endif - -#include "glad.h" // Extensions loading library - -#include -#include - -#include "OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL - -//#include "GL/CAPI_GLE.h" // stripped-down GLEW/GLAD library to manage extensions (really required?) -//#include "Extras/OVR_Math.h" // math utilities C++ (really required?) - -#define RLGL_STANDALONE -#include "rlgl.h" - -#include -#include - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef struct OculusBuffer { - ovrTextureSwapChain textureChain; - GLuint depthId; - GLuint fboId; - int width; - int height; -} OculusBuffer; - -typedef enum { LOG_INFO = 0, LOG_ERROR, LOG_WARNING, LOG_DEBUG, LOG_OTHER } TraceLogType; - -//---------------------------------------------------------------------------------- -// Module specific Functions Declaration -//---------------------------------------------------------------------------------- -static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height); -static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer); -static void SetOculusBuffer(ovrSession session, OculusBuffer buffer); -static void UnsetOculusBuffer(OculusBuffer buffer); - -static void ErrorCallback(int error, const char* description) -{ - fputs(description, stderr); -} - -static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) -{ - if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) - { - glfwSetWindowShouldClose(window, GL_TRUE); - } -} - -static void DrawRectangleV(Vector2 position, Vector2 size, Color color); -static void TraceLog(int msgType, const char *text, ...); - -//---------------------------------------------------------------------------------- -// Main Entry point -//---------------------------------------------------------------------------------- -int main() -{ - // Initialization - //-------------------------------------------------------------------------------------- - ovrSession session; - ovrGraphicsLuid luid; // Useless for OpenGL since SDK 0.7 - ovrHmdDesc hmdDesc; - - ovrResult result = ovr_Initialize(NULL); - if (OVR_FAILURE(result)) TraceLog(LOG_ERROR, "OVR: Could not initialize Oculus device"); - - result = ovr_Create(&session, &luid); - if (OVR_FAILURE(result)) - { - TraceLog(LOG_WARNING, "OVR: Could not create Oculus session"); - ovr_Shutdown(); - } - - hmdDesc = ovr_GetHmdDesc(session); - - TraceLog(LOG_INFO, "OVR: Product Name: %s", hmdDesc.ProductName); - TraceLog(LOG_INFO, "OVR: Manufacturer: %s", hmdDesc.Manufacturer); - TraceLog(LOG_INFO, "OVR: Product ID: %i", hmdDesc.ProductId); - TraceLog(LOG_INFO, "OVR: Product Type: %i", hmdDesc.Type); - TraceLog(LOG_INFO, "OVR: Serian Number: %s", hmdDesc.SerialNumber); - TraceLog(LOG_INFO, "OVR: Resolution: %ix%i", hmdDesc.Resolution.w, hmdDesc.Resolution.h); - - int screenWidth = hmdDesc.Resolution.w/2 + 100; // Added 100 pixels for testing - int screenHeight = hmdDesc.Resolution.h/2 + 100; // Added 100 pixels for testing - - // GLFW3 Initialization + OpenGL 3.3 Context + Extensions - //-------------------------------------------------------- - GLFWwindow *window; - - glfwSetErrorCallback(ErrorCallback); - - if (!glfwInit()) - { - TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); - exit(EXIT_FAILURE); - } - else TraceLog(LOG_INFO, "GLFW3: GLFW initialized successfully"); - - glfwWindowHint(GLFW_DEPTH_BITS, 16); - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); - //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - glfwWindowHint(GLFW_DECORATED, GL_FALSE); // Mandatory on Oculus Rift to avoid program crash! - - window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); - - if (!window) - { - glfwTerminate(); - exit(EXIT_FAILURE); - } - else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); - - glfwSetKeyCallback(window, KeyCallback); - - glfwMakeContextCurrent(window); - glfwSwapInterval(0); - - if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) - { - TraceLog(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); - exit(1); - } - else TraceLog(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); - - rlglInit(); - rlglInitGraphics(0, 0, screenWidth, screenHeight); - rlClearColor(245, 245, 245, 255); // Define clear color - - Vector2 position = { screenWidth/2 - 100, screenHeight/2 - 100 }; - Vector2 size = { 200, 200 }; - Color color = { 180, 20, 20, 255 }; - //--------------------------------------------------------------------------- - - OculusBuffer eyeRenderBuffer[2]; - - GLuint mirrorFBO = 0; - ovrMirrorTexture mirrorTexture = NULL; - - bool isVisible = true; - long long frameIndex = 0; - - // Make eyes render buffers - ovrSizei recommendedTexSizeLeft = ovr_GetFovTextureSize(session, ovrEye_Left, hmdDesc.DefaultEyeFov[0], 1.0f); - eyeRenderBuffer[0] = LoadOculusBuffer(session, recommendedTexSizeLeft.w, recommendedTexSizeLeft.h); - ovrSizei recommendedTexSizeRight = ovr_GetFovTextureSize(session, ovrEye_Right, hmdDesc.DefaultEyeFov[1], 1.0f); - eyeRenderBuffer[1] = LoadOculusBuffer(session, recommendedTexSizeRight.w, recommendedTexSizeRight.h); - - // Note: the mirror window can be any size, for this sample we use 1/2 the HMD resolution - ovrSizei windowSize = { hmdDesc.Resolution.w/2, hmdDesc.Resolution.h/2 }; - - // Define mirror texture descriptor - ovrMirrorTextureDesc mirrorDesc; - memset(&mirrorDesc, 0, sizeof(mirrorDesc)); - mirrorDesc.Width = windowSize.w; - mirrorDesc.Height = windowSize.h; - mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - - // Create mirror texture and an FBO used to copy mirror texture to back buffer - result = ovr_CreateMirrorTextureGL(session, &mirrorDesc, &mirrorTexture); - if (!OVR_SUCCESS(result)) TraceLog(LOG_WARNING, "OVR: Failed to create mirror texture"); - - // Configure the mirror read buffer - GLuint texId; - ovr_GetMirrorTextureBufferGL(session, mirrorTexture, &texId); - - glGenFramebuffers(1, &mirrorFBO); - glBindFramebuffer(GL_READ_FRAMEBUFFER, mirrorFBO); - glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0); - glFramebufferRenderbuffer(GL_READ_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - { - glDeleteFramebuffers(1, &mirrorFBO); - TraceLog(LOG_WARNING, "OVR: Could not initialize mirror framebuffers"); - } - - glClearColor(1.0f, 0.1f, 0.1f, 0.0f); - glEnable(GL_DEPTH_TEST); - ovr_RecenterTrackingOrigin(session); - - // FloorLevel will give tracking poses where the floor height is 0 - ovr_SetTrackingOriginType(session, ovrTrackingOrigin_FloorLevel); - //-------------------------------------------------------------------------------------- - - // Main loop - while (!glfwWindowShouldClose(window)) - { - // Update - //---------------------------------------------------------------------------------- - frameIndex++; - - // TODO: Update game here! - - // Call ovr_GetRenderDesc each frame to get the ovrEyeRenderDesc, as the returned values (e.g. HmdToEyeOffset) may change at runtime. - ovrEyeRenderDesc eyeRenderDesc[2]; - eyeRenderDesc[0] = ovr_GetRenderDesc(session, ovrEye_Left, hmdDesc.DefaultEyeFov[0]); - eyeRenderDesc[1] = ovr_GetRenderDesc(session, ovrEye_Right, hmdDesc.DefaultEyeFov[1]); - - // Get eye poses, feeding in correct IPD offset - ovrPosef eyeRenderPose[2]; - ovrVector3f hmdToEyeOffset[2] = { eyeRenderDesc[0].HmdToEyeOffset, eyeRenderDesc[1].HmdToEyeOffset }; - - double sensorSampleTime; // sensorSampleTime is fed into the layer later - ovr_GetEyePoses(session, frameIndex, ovrTrue, hmdToEyeOffset, eyeRenderPose, &sensorSampleTime); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - - // Clear screen to red color - glClearColor(1.0f, 0.1f, 0.1f, 0.0f); - //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (isVisible) - { - for (int eye = 0; eye < 2; ++eye) - { - SetOculusBuffer(session, eyeRenderBuffer[eye]); - - // TODO: Get view and projection matrices for the eye - // Sample using Oculus OVR_Math.h (C++) - /* - Matrix4f projection[eye] = Matrix4f(ovrMatrix4f_Projection(eyeRenderDesc[eye].Fov, 0.01f, 10000.0f, ovrProjection_None)); - Matrix4f eyeOrientation[eye] = Matrix4f(Quatf(eyeRenderPose[eye].Orientation).Inverted()); - Matrix4f eyePose[eye] = Matrix4f::Translation(-Vector3f(eyeRenderPose[eye].Position)); - Matrix4f mvp = projection[eye]*eyeOrientation[eye]*eyePose[eye]; - */ - - // Sample using custom raymath.h (C) -INCOMPLETE- - /* - Matrix projection = MatrixPerspective(eyeRenderDesc[eye].Fov, ((double)screenWidth/(double)screenHeight), 0.01, 1000.0); - Matrix eyeOrientation = QuaternionToMatrix((Quaternion){ -eyeRenderPose[eye].Orientation.x, -eyeRenderPose[eye].Orientation.y, - -eyeRenderPose[eye].Orientation.z, -eyeRenderPose[eye].Orientation.w }); - Matrix eyePose = MatrixTranslate(-eyeRenderPose[eye].Position.x, -eyeRenderPose[eye].Position.y, -eyeRenderPose[eye].Position.z); - Matrix mvp = MatrixMultiply(projection, MatrixMultiply(eyeOrientation, eyePose)); - */ - - // Render everything - // TODO: Pass calculated mvp matrix to default shader to consider projection and orientation! - //DrawRectangleV(position, size, color); - //rlglDraw(); - - UnsetOculusBuffer(eyeRenderBuffer[eye]); - - // Commit changes to the textures so they get picked up frame - ovr_CommitTextureSwapChain(session, eyeRenderBuffer[eye].textureChain); - } - } - - // Set up positional data - ovrViewScaleDesc viewScaleDesc; - viewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f; - viewScaleDesc.HmdToEyeOffset[0] = hmdToEyeOffset[0]; - viewScaleDesc.HmdToEyeOffset[1] = hmdToEyeOffset[1]; - - // Create the main eye layer - ovrLayerEyeFov eyeLayer; - eyeLayer.Header.Type = ovrLayerType_EyeFov; - eyeLayer.Header.Flags = ovrLayerFlag_TextureOriginAtBottomLeft; // Because OpenGL - - for (int eye = 0; eye < 2; eye++) - { - eyeLayer.ColorTexture[eye] = eyeRenderBuffer[eye].textureChain; - eyeLayer.Viewport[eye] = (ovrRecti){ eyeRenderBuffer[eye].width, eyeRenderBuffer[eye].height }; - eyeLayer.Fov[eye] = hmdDesc.DefaultEyeFov[eye]; - eyeLayer.RenderPose[eye] = eyeRenderPose[eye]; - eyeLayer.SensorSampleTime = sensorSampleTime; - } - - // Append all the layers to global list - ovrLayerHeader *layerList = &eyeLayer.Header; - ovrResult result = ovr_SubmitFrame(session, frameIndex, NULL, &layerList, 1); - - // exit the rendering loop if submit returns an error, will retry on ovrError_DisplayLost - if (!OVR_SUCCESS(result)) return 1; - - isVisible = (result == ovrSuccess); - - // Get session status information - ovrSessionStatus sessionStatus; - ovr_GetSessionStatus(session, &sessionStatus); - if (sessionStatus.ShouldQuit) TraceLog(LOG_WARNING, "OVR: Session should quit."); - if (sessionStatus.ShouldRecenter) ovr_RecenterTrackingOrigin(session); - - // Blit mirror texture to back buffer - glBindFramebuffer(GL_READ_FRAMEBUFFER, mirrorFBO); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - GLint w = mirrorDesc.Width; - GLint h = mirrorDesc.Height; - glBlitFramebuffer(0, h, w, 0, 0, 0, w, h, GL_COLOR_BUFFER_BIT, GL_NEAREST); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - - glfwSwapBuffers(window); - glfwPollEvents(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - if (mirrorFBO) glDeleteFramebuffers(1, &mirrorFBO); - if (mirrorTexture) ovr_DestroyMirrorTexture(session, mirrorTexture); - for (int eye = 0; eye < 2; eye++) UnloadOculusBuffer(session, eyeRenderBuffer[eye]); - - rlglClose(); - - glfwDestroyWindow(window); - glfwTerminate(); - - ovr_Destroy(session); // Must be called after glfwTerminate() - ovr_Shutdown(); - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module specific Functions Definitions -//---------------------------------------------------------------------------------- - -// Load Oculus required buffers: texture-swap-chain, fbo, texture-depth -static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height) -{ - OculusBuffer buffer; - buffer.width = width; - buffer.height = height; - - // Create OVR texture chain - ovrTextureSwapChainDesc desc = {}; - desc.Type = ovrTexture_2D; - desc.ArraySize = 1; - desc.Width = width; - desc.Height = height; - desc.MipLevels = 1; - desc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - desc.SampleCount = 1; - desc.StaticImage = ovrFalse; - - ovrResult result = ovr_CreateTextureSwapChainGL(session, &desc, &buffer.textureChain); - - int textureCount = 0; - ovr_GetTextureSwapChainLength(session, buffer.textureChain, &textureCount); - - if (OVR_SUCCESS(result)) - { - for (int i = 0; i < textureCount; ++i) - { - GLuint chainTexId; - ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, i, &chainTexId); - glBindTexture(GL_TEXTURE_2D, chainTexId); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - } - } - - // Generate framebuffer - glGenFramebuffers(1, &buffer.fboId); - - // Create Depth texture - glGenTextures(1, &buffer.depthId); - glBindTexture(GL_TEXTURE_2D, buffer.depthId); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, buffer.width, buffer.height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); - - return buffer; -} - -// Unload texture required buffers -static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer) -{ - if (buffer.textureChain) - { - ovr_DestroyTextureSwapChain(session, buffer.textureChain); - buffer.textureChain = NULL; - } - - if (buffer.depthId) - { - glDeleteTextures(1, &buffer.depthId); - buffer.depthId = 0; - } - - if (buffer.fboId) - { - glDeleteFramebuffers(1, &buffer.fboId); - buffer.fboId = 0; - } -} - -// Set current Oculus buffer -static void SetOculusBuffer(ovrSession session, OculusBuffer buffer) -{ - GLuint currentTexId; - int currentIndex; - - ovr_GetTextureSwapChainCurrentIndex(session, buffer.textureChain, ¤tIndex); - ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, currentIndex, ¤tTexId); - - glBindFramebuffer(GL_FRAMEBUFFER, buffer.fboId); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, currentTexId, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, buffer.depthId, 0); - - glViewport(0, 0, buffer.width, buffer.height); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_FRAMEBUFFER_SRGB); -} - -// Unset Oculus buffer -static void UnsetOculusBuffer(OculusBuffer buffer) -{ - glBindFramebuffer(GL_FRAMEBUFFER, buffer.fboId); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, 0, 0); -} - -// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) -static void DrawRectangleV(Vector2 position, Vector2 size, Color color) -{ - rlBegin(RL_TRIANGLES); - rlColor4ub(color.r, color.g, color.b, color.a); - - rlVertex2i(position.x, position.y); - rlVertex2i(position.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y + size.y); - - rlVertex2i(position.x, position.y); - rlVertex2i(position.x + size.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y); - rlEnd(); -} - -// Output a trace log message -// NOTE: Expected msgType: (0)Info, (1)Error, (2)Warning -static void TraceLog(int msgType, const char *text, ...) -{ - va_list args; - va_start(args, text); - - switch(msgType) - { - case LOG_INFO: fprintf(stdout, "INFO: "); break; - case LOG_ERROR: fprintf(stdout, "ERROR: "); break; - case LOG_WARNING: fprintf(stdout, "WARNING: "); break; - case LOG_DEBUG: fprintf(stdout, "DEBUG: "); break; - default: break; - } - - vfprintf(stdout, text, args); - fprintf(stdout, "\n"); - - va_end(args); - - //if (msgType == LOG_ERROR) exit(1); -} \ No newline at end of file diff --git a/examples/oculus_glfw_sample/raylib_OculusRiftCV1.png b/examples/oculus_glfw_sample/raylib_OculusRiftCV1_test01.png similarity index 100% rename from examples/oculus_glfw_sample/raylib_OculusRiftCV1.png rename to examples/oculus_glfw_sample/raylib_OculusRiftCV1_test01.png diff --git a/examples/oculus_glfw_sample/raylib_OculusRiftCV1_test02.png b/examples/oculus_glfw_sample/raylib_OculusRiftCV1_test02.png new file mode 100644 index 0000000000000000000000000000000000000000..b683bf86509ce17d2f49fc2b6f1f778ff5b64dae GIT binary patch literal 348126 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 z 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

lheR^7UUF=ZKFQ1DJ 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

1J5WpmZQ+Bd7-v$Zf>9QK3^{ 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 uB(N}x!8if}0s$(+oG +#define GLAD_IMPLEMENTATION +#include "glad.h" // Extensions loading library +#include // Windows/Context and inputs management #define RLGL_STANDALONE #include "rlgl.h" #include #include +#include + +#define RED (Color){ 230, 41, 55, 255 } // Red +#define MAROON (Color){ 190, 33, 55, 255 } // Maroon +#define RAYWHITE (Color){ 245, 245, 245, 255 } // My own White (raylib logo) +#define DARKGRAY (Color){ 80, 80, 80, 255 } // Dark Gray +//---------------------------------------------------------------------------------- +typedef enum { LOG_INFO = 0, LOG_ERROR, LOG_WARNING, LOG_DEBUG, LOG_OTHER } TraceLogType; //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- -static void ErrorCallback(int error, const char* description) +static void ErrorCallback(int error, const char* description); +static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); +static void TraceLog(int msgType, const char *text, ...); + +// Drawing functions (uses rlgl functionality) +static void DrawGrid(int slices, float spacing); +static void DrawCube(Vector3 position, float width, float height, float length, Color color); +static void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); +static void DrawRectangleV(Vector2 position, Vector2 size, Color color); + +//---------------------------------------------------------------------------------- +// Main Entry point +//---------------------------------------------------------------------------------- +int main(void) { - fputs(description, stderr); + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + + // GLFW3 Initialization + OpenGL 3.3 Context + Extensions + //-------------------------------------------------------- + glfwSetErrorCallback(ErrorCallback); + + if (!glfwInit()) + { + TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); + exit(EXIT_FAILURE); + } + else TraceLog(LOG_INFO, "GLFW3: GLFW initialized successfully"); + + glfwWindowHint(GLFW_SAMPLES, 4); + glfwWindowHint(GLFW_DEPTH_BITS, 16); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); + + GLFWwindow *window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); + + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); + + glfwSetKeyCallback(window, KeyCallback); + + glfwMakeContextCurrent(window); + glfwSwapInterval(1); + + // Load OpenGL 3.3 extensions + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + { + TraceLog(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); + exit(1); + } + else TraceLog(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); + //-------------------------------------------------------- + + // Initialize rlgl internal buffers and OpenGL state + rlglInit(); + rlglInitGraphics(0, 0, screenWidth, screenHeight); + rlClearColor(245, 245, 245, 255); // Define clear color + rlEnableDepthTest(); // Enable DEPTH_TEST for 3D + + Vector2 size = { 200, 200 }; + Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; + + Camera camera; + camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!glfwWindowShouldClose(window)) + { + // Update + //---------------------------------------------------------------------------------- + // ... + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + rlClearScreenBuffers(); // Clear current framebuffer + // Calculate projection matrix (from perspective) and view matrix from camera look at + Matrix matProj = MatrixPerspective(camera.fovy, (double)screenWidth/(double)screenHeight, 0.01, 1000.0); + MatrixTranspose(&matProj); + Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); + Matrix mvp = MatrixMultiply(matView, matProj); + + DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); + DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, RAYWHITE); + DrawGrid(10, 1.0f); + + // NOTE: Internal buffers drawing (3D data) + rlglDraw(mvp); + + matProj = MatrixOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0); + MatrixTranspose(&matProj); + matView = MatrixIdentity(); + mvp = MatrixMultiply(matView, matProj); + + // TODO: 2D drawing on Oculus Rift: requires an ovrLayerQuad layer + DrawRectangleV((Vector2){ 10.0f, 10.0f }, (Vector2){ 300.0f, 20.0f }, DARKGRAY); + + // NOTE: Internal buffers drawing (2D data) + rlglDraw(mvp); + + glfwSwapBuffers(window); + glfwPollEvents(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + rlglClose(); // Unload rlgl internal buffers and default shader/texture + + glfwDestroyWindow(window); + glfwTerminate(); + + //-------------------------------------------------------------------------------------- + + return 0; } +//---------------------------------------------------------------------------------- +// Module specific Functions Definitions +//---------------------------------------------------------------------------------- + +// GLFW3: Error callback +static void ErrorCallback(int error, const char* description) +{ + TraceLog(LOG_ERROR, description); +} + +// GLFW3: Keyboard callback static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) @@ -43,79 +188,31 @@ static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, i } } -void DrawRectangleV(Vector2 position, Vector2 size, Color color); - -//---------------------------------------------------------------------------------- -// Main Entry point -//---------------------------------------------------------------------------------- -int main(void) +// Output a trace log message +static void TraceLog(int msgType, const char *text, ...) { - const int screenWidth = 800; - const int screenHeight = 450; - - GLFWwindow *window; - - glfwSetErrorCallback(ErrorCallback); - - if (!glfwInit()) exit(EXIT_FAILURE); - - glfwWindowHint(GLFW_SAMPLES, 4); - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - - window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); - - if (!window) - { - glfwTerminate(); - exit(EXIT_FAILURE); - } - - glfwSetKeyCallback(window, KeyCallback); - - glfwMakeContextCurrent(window); - glfwSwapInterval(1); + va_list args; + va_start(args, text); - if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + switch(msgType) { - printf("Cannot load GL extensions.\n"); - exit(1); + case LOG_INFO: fprintf(stdout, "INFO: "); break; + case LOG_ERROR: fprintf(stdout, "ERROR: "); break; + case LOG_WARNING: fprintf(stdout, "WARNING: "); break; + case LOG_DEBUG: fprintf(stdout, "DEBUG: "); break; + default: break; } - - rlglInit(); - rlglInitGraphics(0, 0, screenWidth, screenHeight); - rlClearColor(245, 245, 245, 255); // Define clear color - - Vector2 position = { screenWidth/2 - 100, screenHeight/2 - 100 }; - Vector2 size = { 200, 200 }; - Color color = { 180, 20, 20, 255 }; - - while (!glfwWindowShouldClose(window)) - { - rlClearScreenBuffers(); - - DrawRectangleV(position, size, color); - - rlglDraw(); - - glfwSwapBuffers(window); - glfwPollEvents(); - } - - rlglClose(); - - glfwDestroyWindow(window); - glfwTerminate(); - - return 0; + + vfprintf(stdout, text, args); + fprintf(stdout, "\n"); + + va_end(args); + + //if (msgType == LOG_ERROR) exit(1); } -//---------------------------------------------------------------------------------- -// Module specific Functions Definitions -//---------------------------------------------------------------------------------- -void DrawRectangleV(Vector2 position, Vector2 size, Color color) +// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) +static void DrawRectangleV(Vector2 position, Vector2 size, Color color) { rlBegin(RL_TRIANGLES); rlColor4ub(color.r, color.g, color.b, color.a); @@ -128,4 +225,181 @@ void DrawRectangleV(Vector2 position, Vector2 size, Color color) rlVertex2i(position.x + size.x, position.y + size.y); rlVertex2i(position.x + size.x, position.y); rlEnd(); -} \ No newline at end of file +} + +// Draw a grid centered at (0, 0, 0) +static void DrawGrid(int slices, float spacing) +{ + int halfSlices = slices / 2; + + rlBegin(RL_LINES); + for(int i = -halfSlices; i <= halfSlices; i++) + { + if (i == 0) + { + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + } + else + { + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + } + + rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); + rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); + + rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); + rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); + } + rlEnd(); +} + +// Draw cube +// NOTE: Cube position is the center position +void DrawCube(Vector3 position, float width, float height, float length, Color color) +{ + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; + + rlPushMatrix(); + + // NOTE: Be careful! Function order matters (rotate -> scale -> translate) + rlTranslatef(position.x, position.y, position.z); + //rlScalef(2.0f, 2.0f, 2.0f); + //rlRotatef(45, 0, 1, 0); + + rlBegin(RL_TRIANGLES); + rlColor4ub(color.r, color.g, color.b, color.a); + + // Front Face ----------------------------------------------------- + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + + // Back Face ------------------------------------------------------ + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + + // Top Face ------------------------------------------------------- + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x-width/2, y+height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right + + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right + + // Bottom Face ---------------------------------------------------- + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + + rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left + + // Right face ----------------------------------------------------- + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left + + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left + + // Left Face ------------------------------------------------------ + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Right + + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right + rlEnd(); + rlPopMatrix(); +} + +// Draw cube wires +void DrawCubeWires(Vector3 position, float width, float height, float length, Color color) +{ + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; + + rlPushMatrix(); + + rlTranslatef(position.x, position.y, position.z); + //rlRotatef(45, 0, 1, 0); + + rlBegin(RL_LINES); + rlColor4ub(color.r, color.g, color.b, color.a); + + // Front Face ----------------------------------------------------- + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + + // Back Face ------------------------------------------------------ + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + + // Top Face ------------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right Back + + // Bottom Face --------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right Back + rlEnd(); + rlPopMatrix(); +} diff --git a/examples/oculus_glfw_sample/raymath.h b/examples/oculus_glfw_sample/raymath.h index 52e92b50e..2e055e9ff 100644 --- a/examples/oculus_glfw_sample/raymath.h +++ b/examples/oculus_glfw_sample/raymath.h @@ -73,7 +73,7 @@ //---------------------------------------------------------------------------------- #if defined(RAYMATH_STANDALONE) - // Vector2 type + // Vector2 type typedef struct Vector2 { float x; float y; @@ -158,6 +158,7 @@ RMDEF void PrintMatrix(Matrix m); // Print matrix ut //------------------------------------------------------------------------------------ RMDEF float QuaternionLength(Quaternion quat); // Compute the length of a quaternion RMDEF void QuaternionNormalize(Quaternion *q); // Normalize provided quaternion +RMDEF void QuaternionInvert(Quaternion *quat); // Invert provided quaternion RMDEF Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2); // Calculate two quaternion multiplication RMDEF Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float slerp); // Calculates spherical linear interpolation between two quaternions RMDEF Quaternion QuaternionFromMatrix(Matrix matrix); // Returns a quaternion for a given rotation matrix @@ -908,6 +909,23 @@ RMDEF void QuaternionNormalize(Quaternion *q) q->w *= ilength; } +// Invert provided quaternion +RMDEF void QuaternionInvert(Quaternion *quat) +{ + float length = QuaternionLength(*quat); + float lengthSq = length*length; + + if (lengthSq != 0.0) + { + float i = 1.0f/lengthSq; + + quat->x *= -i; + quat->y *= -i; + quat->z *= -i; + quat->w *= i; + } +} + // Calculate two quaternion multiplication RMDEF Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2) { diff --git a/examples/oculus_glfw_sample/rlgl.c b/examples/oculus_glfw_sample/rlgl.c index 7129402d8..dcc84c2f7 100644 --- a/examples/oculus_glfw_sample/rlgl.c +++ b/examples/oculus_glfw_sample/rlgl.c @@ -71,6 +71,8 @@ #define MAX_DRAWS_BY_TEXTURE 256 // Draws are organized by texture changes #define TEMP_VERTEX_BUFFER_SIZE 4096 // Temporal Vertex Buffer (required for vertex-transformations) // NOTE: Every vertex are 3 floats (12 bytes) + +#define MAX_LIGHTS 8 // Max lights supported by standard shader #ifndef GL_SHADING_LANGUAGE_VERSION #define GL_SHADING_LANGUAGE_VERSION 0x8B8C @@ -115,58 +117,36 @@ #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 #endif + +// Default vertex attribute names on shader to set location points +#define DEFAULT_ATTRIB_POSITION_NAME "vertexPosition" // shader-location = 0 +#define DEFAULT_ATTRIB_TEXCOORD_NAME "vertexTexCoord" // shader-location = 1 +#define DEFAULT_ATTRIB_NORMAL_NAME "vertexNormal" // shader-location = 2 +#define DEFAULT_ATTRIB_COLOR_NAME "vertexColor" // shader-location = 3 +#define DEFAULT_ATTRIB_TANGENT_NAME "vertexTangent" // shader-location = 4 +#define DEFAULT_ATTRIB_TEXCOORD2_NAME "vertexTexCoord2" // shader-location = 5 + //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- -// Vertex buffer (position + color arrays) -// NOTE: Used for lines and triangles VAOs +// Dynamic vertex buffers (position + texcoords + colors + indices arrays) typedef struct { - int vCounter; - int cCounter; - float *vertices; // 3 components per vertex - unsigned char *colors; // 4 components per vertex -} VertexPositionColorBuffer; - -// Vertex buffer (position + texcoords + color arrays) -// NOTE: Not used -typedef struct { - int vCounter; - int tcCounter; - int cCounter; - float *vertices; // 3 components per vertex - float *texcoords; // 2 components per vertex - unsigned char *colors; // 4 components per vertex -} VertexPositionColorTextureBuffer; - -// Vertex buffer (position + texcoords + normals arrays) -// NOTE: Not used -typedef struct { - int vCounter; - int tcCounter; - int nCounter; - float *vertices; // 3 components per vertex - float *texcoords; // 2 components per vertex - float *normals; // 3 components per vertex - //short *normals; // NOTE: Less data load... but padding issues and normalizing required! -} VertexPositionTextureNormalBuffer; - -// Vertex buffer (position + texcoords + colors + indices arrays) -// NOTE: Used for quads VAO -typedef struct { - int vCounter; - int tcCounter; - int cCounter; - float *vertices; // 3 components per vertex - float *texcoords; // 2 components per vertex - unsigned char *colors; // 4 components per vertex + int vCounter; // vertex position counter to process (and draw) from full buffer + int tcCounter; // vertex texcoord counter to process (and draw) from full buffer + int cCounter; // vertex color counter to process (and draw) from full buffer + float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) - unsigned int *indices; // 6 indices per quad (could be int) + unsigned int *indices; // vertex indices (in case vertex data comes indexed) (6 indices per quad) #elif defined(GRAPHICS_API_OPENGL_ES2) - unsigned short *indices; // 6 indices per quad (must be short) + unsigned short *indices; // vertex indices (in case vertex data comes indexed) (6 indices per quad) // NOTE: 6*2 byte = 12 byte, not alignment problem! #endif -} VertexPositionColorTextureIndexBuffer; + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[4]; // OpenGL Vertex Buffer Objects id (4 types of vertex data) +} DynamicBuffer; // Draw call type // NOTE: Used to track required draw-calls, organized by texture @@ -191,23 +171,15 @@ static Matrix modelview; static Matrix projection; static Matrix *currentMatrix; static int currentMatrixMode; +static Matrix customMVP; static DrawMode currentDrawMode; static float currentDepth = -1.0f; -// Default vertex buffers for lines, triangles and quads -static VertexPositionColorBuffer lines; // No texture support -static VertexPositionColorBuffer triangles; // No texture support -static VertexPositionColorTextureIndexBuffer quads; - -// Default vertex buffers VAOs (if supported) -static GLuint vaoLines, vaoTriangles, vaoQuads; - -// Default vertex buffers VBOs -static GLuint linesBuffer[2]; // Lines buffers (position, color) -static GLuint trianglesBuffer[2]; // Triangles buffers (position, color) -static GLuint quadsBuffer[4]; // Quads buffers (position, texcoord, color, index) +static DynamicBuffer lines; +static DynamicBuffer triangles; +static DynamicBuffer quads; // Default buffers draw calls static DrawCall *draws; @@ -220,6 +192,7 @@ static bool useTempBuffer = false; // Shader Programs static Shader defaultShader; +static Shader standardShader; static Shader currentShader; // By default, defaultShader // Flags for supported extensions @@ -230,6 +203,10 @@ static bool texCompETC1Supported = false; // ETC1 texture compression support static bool texCompETC2Supported = false; // ETC2/EAC texture compression support static bool texCompPVRTSupported = false; // PVR texture compression support static bool texCompASTCSupported = false; // ASTC texture compression support + +// Lighting data +static Light lights[MAX_LIGHTS]; // Lights pool +static int lightsCount; // Counts current enabled physic objects #endif // Compressed textures support flags @@ -255,14 +232,20 @@ unsigned int whiteTexture; //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) static void LoadCompressedTexture(unsigned char *data, int width, int height, int mipmapCount, int compressedFormat); +static unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr); // Load custom shader strings and return program id -static Shader LoadDefaultShader(void); -static void LoadDefaultShaderLocations(Shader *shader); -static void UnloadDefaultShader(void); +static Shader LoadDefaultShader(void); // Load default shader (just vertex positioning and texture coloring) +static Shader LoadStandardShader(void); // Load standard shader (support materials and lighting) +static void LoadDefaultShaderLocations(Shader *shader); // Bind default shader locations (attributes and uniforms) +static void UnloadDefaultShader(void); // Unload default shader +static void UnloadStandardShader(void); // Unload standard shader -static void LoadDefaultBuffers(void); -static void UpdateDefaultBuffers(void); -static void UnloadDefaultBuffers(void); +static void LoadDefaultBuffers(void); // Load default internal buffers (lines, triangles, quads) +static void UpdateDefaultBuffers(void); // Update default internal buffers (VAOs/VBOs) with vertex data +static void DrawDefaultBuffers(void); // Draw default internal buffers vertex data +static void UnloadDefaultBuffers(void); // Unload default internal buffers vertex data from CPU and GPU + +static void SetShaderLights(Shader shader); // Sets shader uniform values for lights array static char *ReadTextFile(const char *fileName); #endif @@ -274,7 +257,7 @@ static Color *GenNextMipmap(Color *srcData, int srcWidth, int srcHeight); #if defined(RLGL_STANDALONE) static void TraceLog(int msgType, const char *text, ...); -float *MatrixToFloat(Matrix mat); // Converts Matrix to float array +float *MatrixToFloat(Matrix mat); // Converts Matrix to float array #endif //---------------------------------------------------------------------------------- @@ -422,6 +405,12 @@ void rlOrtho(double left, double right, double bottom, double top, double near, #endif +// Set the viewport area (trasnformation from normalized device coordinates to window coordinates) +void rlViewport(int x, int y, int width, int height) +{ + glViewport(x, y, width, height); +} + //---------------------------------------------------------------------------------- // Module Functions Definition - Vertex level operations //---------------------------------------------------------------------------------- @@ -743,17 +732,25 @@ void rlDisableTexture(void) #endif } +// Enable rendering to texture (fbo) void rlEnableRenderTexture(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindFramebuffer(GL_FRAMEBUFFER, id); + + //glDisable(GL_CULL_FACE); // Allow double side drawing for texture flipping + //glCullFace(GL_FRONT); #endif } +// Disable rendering to texture void rlDisableRenderTexture(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindFramebuffer(GL_FRAMEBUFFER, 0); + + //glEnable(GL_CULL_FACE); + //glCullFace(GL_BACK); #endif } @@ -769,19 +766,37 @@ void rlDisableDepthTest(void) glDisable(GL_DEPTH_TEST); } +// Enable wire mode +void rlEnableWireMode(void) +{ +#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); +#endif +} + +// Disable wire mode +void rlDisableWireMode(void) +{ +#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); +#endif +} + // Unload texture from GPU memory void rlDeleteTextures(unsigned int id) { - glDeleteTextures(1, &id); + if (id != 0) glDeleteTextures(1, &id); } // Unload render texture from GPU memory void rlDeleteRenderTextures(RenderTexture2D target) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glDeleteFramebuffers(1, &target.id); - glDeleteTextures(1, &target.texture.id); - glDeleteTextures(1, &target.depth.id); + if (target.id != 0) glDeleteFramebuffers(1, &target.id); + if (target.texture.id != 0) glDeleteTextures(1, &target.texture.id); + if (target.depth.id != 0) glDeleteTextures(1, &target.depth.id); #endif } @@ -789,7 +804,7 @@ void rlDeleteRenderTextures(RenderTexture2D target) void rlDeleteShader(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glDeleteProgram(id); + if (id != 0) glDeleteProgram(id); #endif } @@ -799,7 +814,7 @@ void rlDeleteVertexArrays(unsigned int id) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) if (vaoSupported) { - glDeleteVertexArrays(1, &id); + if (id != 0) glDeleteVertexArrays(1, &id); TraceLog(INFO, "[VAO ID %i] Unloaded model data from VRAM (GPU)", id); } #endif @@ -809,9 +824,11 @@ void rlDeleteVertexArrays(unsigned int id) void rlDeleteBuffers(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glDeleteBuffers(1, &id); - - if (!vaoSupported) TraceLog(INFO, "[VBO ID %i] Unloaded model vertex data from VRAM (GPU)", id); + if (id != 0) + { + glDeleteBuffers(1, &id); + if (!vaoSupported) TraceLog(INFO, "[VBO ID %i] Unloaded model vertex data from VRAM (GPU)", id); + } #endif } @@ -1018,6 +1035,7 @@ void rlglInit(void) // Init default Shader (customized for GL 3.3 and ES2) defaultShader = LoadDefaultShader(); + standardShader = LoadStandardShader(); currentShader = defaultShader; LoadDefaultBuffers(); // Initialize default vertex arrays buffers (lines, triangles, quads) @@ -1046,11 +1064,19 @@ void rlglClose(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) UnloadDefaultShader(); + UnloadStandardShader(); UnloadDefaultBuffers(); // Delete default white texture glDeleteTextures(1, &whiteTexture); TraceLog(INFO, "[TEX ID %i] Unloaded texture data (base white texture) from VRAM", whiteTexture); + + // Unload lights + if (lightsCount > 0) + { + for (int i = 0; i < lightsCount; i++) free(lights[i]); + lightsCount = 0; + } free(draws); #endif @@ -1059,316 +1085,18 @@ void rlglClose(void) // Drawing batches: triangles, quads, lines void rlglDraw(Matrix mvp) { + customMVP = mvp; + #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +/* + for (int i = 0; i < modelsCount; i++) + { + rlglDrawMesh(models[i]->mesh, models[i]->material, models[i]->transform); + } +*/ + // NOTE: Default buffers always drawn at the end UpdateDefaultBuffers(); - - if ((lines.vCounter > 0) || (triangles.vCounter > 0) || (quads.vCounter > 0)) - { - glUseProgram(currentShader.id); - - Matrix mvp2 = MatrixMultiply(modelview, projection); // Create modelview-projection matrix - - glUniformMatrix4fv(currentShader.mvpLoc, 1, false, MatrixToFloat(mvp2)); - glUniform1i(currentShader.mapDiffuseLoc, 0); - glUniform4f(currentShader.tintColorLoc, 1.0f, 1.0f, 1.0f, 1.0f); - } - - // NOTE: We draw in this order: lines, triangles, quads - - if (lines.vCounter > 0) - { - glBindTexture(GL_TEXTURE_2D, whiteTexture); - - if (vaoSupported) - { - glBindVertexArray(vaoLines); - } - else - { - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[0]); - glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.vertexLoc); - - if (currentShader.colorLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); - glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(currentShader.colorLoc); - } - } - - glDrawArrays(GL_LINES, 0, lines.vCounter); - - if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (triangles.vCounter > 0) - { - glBindTexture(GL_TEXTURE_2D, whiteTexture); - - if (vaoSupported) - { - glBindVertexArray(vaoTriangles); - } - else - { - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[0]); - glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.vertexLoc); - - if (currentShader.colorLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); - glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(currentShader.colorLoc); - } - } - - glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter); - - if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (quads.vCounter > 0) - { - int quadsCount = 0; - int numIndicesToProcess = 0; - int indicesOffset = 0; - - if (vaoSupported) - { - glBindVertexArray(vaoQuads); - } - else - { - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); - glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.vertexLoc); - - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); - glVertexAttribPointer(currentShader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.texcoordLoc); - - if (currentShader.colorLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); - glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(currentShader.colorLoc); - } - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quadsBuffer[3]); - } - - //TraceLog(DEBUG, "Draws required per frame: %i", drawsCounter); - - for (int i = 0; i < drawsCounter; i++) - { - quadsCount = draws[i].vertexCount/4; - numIndicesToProcess = quadsCount*6; // Get number of Quads * 6 index by Quad - - //TraceLog(DEBUG, "Quads to render: %i - Vertex Count: %i", quadsCount, draws[i].vertexCount); - - glBindTexture(GL_TEXTURE_2D, draws[i].textureId); - - // NOTE: The final parameter tells the GPU the offset in bytes from the start of the index buffer to the location of the first index to process -#if defined(GRAPHICS_API_OPENGL_33) - glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_INT, (GLvoid*) (sizeof(GLuint) * indicesOffset)); -#elif defined(GRAPHICS_API_OPENGL_ES2) - glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_SHORT, (GLvoid*) (sizeof(GLushort) * indicesOffset)); -#endif - //GLenum err; - //if ((err = glGetError()) != GL_NO_ERROR) TraceLog(INFO, "OpenGL error: %i", (int)err); //GL_INVALID_ENUM! - - indicesOffset += draws[i].vertexCount/4*6; - } - - if (!vaoSupported) - { - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures - } - - if (vaoSupported) glBindVertexArray(0); // Unbind VAO - - glUseProgram(0); // Unbind shader program - - // Reset draws counter - drawsCounter = 1; - draws[0].textureId = whiteTexture; - draws[0].vertexCount = 0; - - // Reset vertex counters for next frame - lines.vCounter = 0; - lines.cCounter = 0; - - triangles.vCounter = 0; - triangles.cCounter = 0; - - quads.vCounter = 0; - quads.tcCounter = 0; - quads.cCounter = 0; - - // Reset depth for next draw - currentDepth = -1.0f; -#endif -} - -// Draw a 3d model -// NOTE: Model transform can come within model struct -void rlglDrawModel(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color color, bool wires) -{ -#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) - // NOTE: glPolygonMode() not available on OpenGL ES - if (wires) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); -#endif - -#if defined(GRAPHICS_API_OPENGL_11) - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, model.material.texDiffuse.id); - - // NOTE: On OpenGL 1.1 we use Vertex Arrays to draw model - glEnableClientState(GL_VERTEX_ARRAY); // Enable vertex array - glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Enable texture coords array - glEnableClientState(GL_NORMAL_ARRAY); // Enable normals array - - glVertexPointer(3, GL_FLOAT, 0, model.mesh.vertices); // Pointer to vertex coords array - glTexCoordPointer(2, GL_FLOAT, 0, model.mesh.texcoords); // Pointer to texture coords array - glNormalPointer(GL_FLOAT, 0, model.mesh.normals); // Pointer to normals array - //glColorPointer(4, GL_UNSIGNED_BYTE, 0, model.mesh.colors); // Pointer to colors array (NOT USED) - - rlPushMatrix(); - rlTranslatef(position.x, position.y, position.z); - rlScalef(scale.x, scale.y, scale.z); - rlRotatef(rotationAngle, rotationAxis.x, rotationAxis.y, rotationAxis.z); - - rlColor4ub(color.r, color.g, color.b, color.a); - - glDrawArrays(GL_TRIANGLES, 0, model.mesh.vertexCount); - rlPopMatrix(); - - glDisableClientState(GL_VERTEX_ARRAY); // Disable vertex array - glDisableClientState(GL_TEXTURE_COORD_ARRAY); // Disable texture coords array - glDisableClientState(GL_NORMAL_ARRAY); // Disable normals array - - glDisable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, 0); -#endif - -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(model.material.shader.id); - - // At this point the modelview matrix just contains the view matrix (camera) - // That's because Begin3dMode() sets it an no model-drawing function modifies it, all use rlPushMatrix() and rlPopMatrix() - Matrix matView = modelview; // View matrix (camera) - Matrix matProjection = projection; // Projection matrix (perspective) - - // Calculate transformation matrix from function parameters - // Get transform matrix (rotation -> scale -> translation) - Matrix matRotation = MatrixRotate(rotationAxis, rotationAngle*DEG2RAD); - Matrix matScale = MatrixScale(scale.x, scale.y, scale.z); - Matrix matTranslation = MatrixTranslate(position.x, position.y, position.z); - Matrix matTransform = MatrixMultiply(MatrixMultiply(matScale, matRotation), matTranslation); - - // Combine model internal transformation matrix (model.transform) with matrix generated by function parameters (matTransform) - Matrix matModel = MatrixMultiply(model.transform, matTransform); // Transform to world-space coordinates - - // Calculate model-view matrix combining matModel and matView - Matrix matModelView = MatrixMultiply(matModel, matView); // Transform to camera-space coordinates - - // Calculate model-view-projection matrix (MVP) - Matrix matMVP = MatrixMultiply(matModelView, matProjection); // Transform to screen-space coordinates - - // Send combined model-view-projection matrix to shader - glUniformMatrix4fv(model.material.shader.mvpLoc, 1, false, MatrixToFloat(matMVP)); - - // Apply color tinting to model - // NOTE: Just update one uniform on fragment shader - float vColor[4] = { (float)color.r/255, (float)color.g/255, (float)color.b/255, (float)color.a/255 }; - glUniform4fv(model.material.shader.tintColorLoc, 1, vColor); - - // Set shader textures (diffuse, normal, specular) - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, model.material.texDiffuse.id); - glUniform1i(model.material.shader.mapDiffuseLoc, 0); // Texture fits in active texture unit 0 - - if ((model.material.texNormal.id != 0) && (model.material.shader.mapNormalLoc != -1)) - { - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, model.material.texNormal.id); - glUniform1i(model.material.shader.mapNormalLoc, 1); // Texture fits in active texture unit 1 - } - - if ((model.material.texSpecular.id != 0) && (model.material.shader.mapSpecularLoc != -1)) - { - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, model.material.texSpecular.id); - glUniform1i(model.material.shader.mapSpecularLoc, 2); // Texture fits in active texture unit 2 - } - - if (vaoSupported) - { - glBindVertexArray(model.mesh.vaoId); - } - else - { - // Bind model VBO data: vertex position - glBindBuffer(GL_ARRAY_BUFFER, model.mesh.vboId[0]); - glVertexAttribPointer(model.material.shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.vertexLoc); - - // Bind model VBO data: vertex texcoords - glBindBuffer(GL_ARRAY_BUFFER, model.mesh.vboId[1]); - glVertexAttribPointer(model.material.shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.texcoordLoc); - - // Bind model VBO data: vertex normals (if available) - if (model.material.shader.normalLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, model.mesh.vboId[2]); - glVertexAttribPointer(model.material.shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.normalLoc); - } - - // TODO: Bind model VBO data: colors, tangents, texcoords2 (if available) - } - - // Draw call! - glDrawArrays(GL_TRIANGLES, 0, model.mesh.vertexCount); - - //glDisableVertexAttribArray(model.shader.vertexLoc); - //glDisableVertexAttribArray(model.shader.texcoordLoc); - //if (model.shader.normalLoc != -1) glDisableVertexAttribArray(model.shader.normalLoc); - - if (model.material.texNormal.id != 0) - { - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (model.material.texSpecular.id != 0) - { - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, 0); - } - - glActiveTexture(GL_TEXTURE0); // Set shader active texture to default 0 - glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures - - if (vaoSupported) glBindVertexArray(0); // Unbind VAO - else glBindBuffer(GL_ARRAY_BUFFER, 0); // Unbind VBOs - - glUseProgram(0); // Unbind shader program -#endif - -#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) - // NOTE: glPolygonMode() not available on OpenGL ES - if (wires) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + DrawDefaultBuffers(); #endif } @@ -1693,7 +1421,7 @@ RenderTexture2D rlglLoadRenderTexture(int width, int height) { TraceLog(WARNING, "Framebuffer object could not be created..."); - switch(status) + switch (status) { case GL_FRAMEBUFFER_UNSUPPORTED: TraceLog(WARNING, "Framebuffer is unsupported"); break; case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: TraceLog(WARNING, "Framebuffer incomplete attachment"); break; @@ -1808,95 +1536,409 @@ void rlglGenerateMipmaps(Texture2D texture) glBindTexture(GL_TEXTURE_2D, 0); } -// Load vertex data into a VAO (if supported) and VBO -Model rlglLoadModel(Mesh mesh) +// Upload vertex data into a VAO (if supported) and VBO +void rlglLoadMesh(Mesh *mesh, bool dynamic) { - Model model; + mesh->vaoId = 0; // Vertex Array Object + mesh->vboId[0] = 0; // Vertex positions VBO + mesh->vboId[1] = 0; // Vertex texcoords VBO + mesh->vboId[2] = 0; // Vertex normals VBO + mesh->vboId[3] = 0; // Vertex colors VBO + mesh->vboId[4] = 0; // Vertex tangents VBO + mesh->vboId[5] = 0; // Vertex texcoords2 VBO + mesh->vboId[6] = 0; // Vertex indices VBO + + int drawHint = GL_STATIC_DRAW; + if (dynamic) drawHint = GL_DYNAMIC_DRAW; - model.mesh = mesh; - model.mesh.vaoId = 0; // Vertex Array Object - model.mesh.vboId[0] = 0; // Vertex positions VBO - model.mesh.vboId[1] = 0; // Vertex texcoords VBO - model.mesh.vboId[2] = 0; // Vertex normals VBO - - // TODO: Consider attributes: color, texcoords2, tangents (if available) - - model.transform = MatrixIdentity(); - -#if defined(GRAPHICS_API_OPENGL_11) - model.material.texDiffuse.id = 0; // No texture required - model.material.shader.id = 0; // No shader used - -#elif defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - model.material.shader = defaultShader; // Default model shader - - model.material.texDiffuse.id = whiteTexture; // Default whiteTexture - model.material.texDiffuse.width = 1; // Default whiteTexture width - model.material.texDiffuse.height = 1; // Default whiteTexture height - model.material.texDiffuse.format = UNCOMPRESSED_R8G8B8A8; // Default whiteTexture format - - model.material.texNormal.id = 0; // By default, no normal texture - model.material.texSpecular.id = 0; // By default, no specular texture - - // TODO: Fill default material properties (color, glossiness...) - - GLuint vaoModel = 0; // Vertex Array Objects (VAO) - GLuint vertexBuffer[3]; // Vertex Buffer Objects (VBO) +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + GLuint vaoId = 0; // Vertex Array Objects (VAO) + GLuint vboId[7]; // Vertex Buffer Objects (VBOs) if (vaoSupported) { // Initialize Quads VAO (Buffer A) - glGenVertexArrays(1, &vaoModel); - glBindVertexArray(vaoModel); + glGenVertexArrays(1, &vaoId); + glBindVertexArray(vaoId); } - // Create buffers for our vertex data (positions, texcoords, normals) - glGenBuffers(3, vertexBuffer); + // NOTE: Attributes must be uploaded considering default locations points - // NOTE: Default shader is assigned to model, so vbo buffers are properly linked to vertex attribs - // If model shader is changed, vbo buffers must be re-assigned to new location points (previously loaded) + // Enable vertex attributes: position (shader-location = 0) + glGenBuffers(1, &vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[0]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh->vertexCount, mesh->vertices, drawHint); + glVertexAttribPointer(0, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(0); - // Enable vertex attributes: position - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[0]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh.vertexCount, mesh.vertices, GL_STATIC_DRAW); - glVertexAttribPointer(model.material.shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.vertexLoc); + // Enable vertex attributes: texcoords (shader-location = 1) + glGenBuffers(1, &vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[1]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh->vertexCount, mesh->texcoords, drawHint); + glVertexAttribPointer(1, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(1); - // Enable vertex attributes: texcoords - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[1]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh.vertexCount, mesh.texcoords, GL_STATIC_DRAW); - glVertexAttribPointer(model.material.shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.texcoordLoc); - - // Enable vertex attributes: normals - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[2]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh.vertexCount, mesh.normals, GL_STATIC_DRAW); - glVertexAttribPointer(model.material.shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.normalLoc); - - glVertexAttrib4f(model.material.shader.colorLoc, 1.0f, 1.0f, 1.0f, 1.0f); // Color vertex attribute set to default: WHITE - glDisableVertexAttribArray(model.material.shader.colorLoc); - - model.mesh.vboId[0] = vertexBuffer[0]; // Vertex position VBO - model.mesh.vboId[1] = vertexBuffer[1]; // Texcoords VBO - model.mesh.vboId[2] = vertexBuffer[2]; // Normals VBO - - if (vaoSupported) + // Enable vertex attributes: normals (shader-location = 2) + if (mesh->normals != NULL) { - if (vaoModel > 0) - { - model.mesh.vaoId = vaoModel; - TraceLog(INFO, "[VAO ID %i] Model uploaded successfully to VRAM (GPU)", vaoModel); - } - else TraceLog(WARNING, "Model could not be uploaded to VRAM (GPU)"); + glGenBuffers(1, &vboId[2]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[2]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh->vertexCount, mesh->normals, drawHint); + glVertexAttribPointer(2, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(2); } else { - TraceLog(INFO, "[VBO ID %i][VBO ID %i][VBO ID %i] Model uploaded successfully to VRAM (GPU)", model.mesh.vboId[0], model.mesh.vboId[1], model.mesh.vboId[2]); + // Default color vertex attribute set to WHITE + glVertexAttrib3f(2, 1.0f, 1.0f, 1.0f); + glDisableVertexAttribArray(2); + } + + // Default color vertex attribute (shader-location = 3) + if (mesh->colors != NULL) + { + glGenBuffers(1, &vboId[3]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[3]); + glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*mesh->vertexCount, mesh->colors, drawHint); + glVertexAttribPointer(3, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(3); + } + else + { + // Default color vertex attribute set to WHITE + glVertexAttrib4f(3, 1.0f, 1.0f, 1.0f, 1.0f); + glDisableVertexAttribArray(3); + } + + // Default tangent vertex attribute (shader-location = 4) + if (mesh->tangents != NULL) + { + glGenBuffers(1, &vboId[4]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[4]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh->vertexCount, mesh->tangents, drawHint); + glVertexAttribPointer(4, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(4); + } + else + { + // Default tangents vertex attribute + glVertexAttrib3f(4, 0.0f, 0.0f, 0.0f); + glDisableVertexAttribArray(4); + } + + // Default texcoord2 vertex attribute (shader-location = 5) + if (mesh->texcoords2 != NULL) + { + glGenBuffers(1, &vboId[5]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[5]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh->vertexCount, mesh->texcoords2, drawHint); + glVertexAttribPointer(5, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(5); + } + else + { + // Default tangents vertex attribute + glVertexAttrib2f(5, 0.0f, 0.0f); + glDisableVertexAttribArray(5); + } + + if (mesh->indices != NULL) + { + glGenBuffers(1, &vboId[6]); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboId[6]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned short)*mesh->triangleCount*3, mesh->indices, GL_STATIC_DRAW); + } + + + mesh->vboId[0] = vboId[0]; // Vertex position VBO + mesh->vboId[1] = vboId[1]; // Texcoords VBO + mesh->vboId[2] = vboId[2]; // Normals VBO + mesh->vboId[3] = vboId[3]; // Colors VBO + mesh->vboId[4] = vboId[4]; // Tangents VBO + mesh->vboId[5] = vboId[5]; // Texcoords2 VBO + mesh->vboId[6] = vboId[6]; // Indices VBO + + if (vaoSupported) + { + if (vaoId > 0) + { + mesh->vaoId = vaoId; + TraceLog(INFO, "[VAO ID %i] Mesh uploaded successfully to VRAM (GPU)", mesh->vaoId); + } + else TraceLog(WARNING, "Mesh could not be uploaded to VRAM (GPU)"); + } + else + { + TraceLog(INFO, "[VBOs] Mesh uploaded successfully to VRAM (GPU)"); } #endif +} - return model; +// Update vertex data on GPU (upload new data to one buffer) +void rlglUpdateMesh(Mesh mesh, int buffer, int numVertex) +{ + // Activate mesh VAO + if (vaoSupported) glBindVertexArray(mesh.vaoId); + + switch (buffer) + { + case 0: // Update vertices (vertex position) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*numVertex, mesh.vertices, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*numVertex, mesh.vertices); + + } break; + case 1: // Update texcoords (vertex texture coordinates) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*numVertex, mesh.texcoords, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*numVertex, mesh.texcoords); + + } break; + case 2: // Update normals (vertex normals) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*numVertex, mesh.normals, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*numVertex, mesh.normals); + + } break; + case 3: // Update colors (vertex colors) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[2]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*numVertex, mesh.colors, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*numVertex, mesh.colors); + + } break; + case 4: // Update tangents (vertex tangents) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*numVertex, mesh.tangents, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*numVertex, mesh.tangents); + } break; + case 5: // Update texcoords2 (vertex second texture coordinates) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*numVertex, mesh.texcoords2, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*numVertex, mesh.texcoords2); + } break; + default: break; + } + + // Unbind the current VAO + if (vaoSupported) glBindVertexArray(0); + + // Another option would be using buffer mapping... + //mesh.vertices = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); + // Now we can modify vertices + //glUnmapBuffer(GL_ARRAY_BUFFER); +} + +// Draw a 3d mesh with material and transform +void rlglDrawMesh(Mesh mesh, Material material, Matrix transform) +{ +#if defined(GRAPHICS_API_OPENGL_11) + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, material.texDiffuse.id); + + // NOTE: On OpenGL 1.1 we use Vertex Arrays to draw model + glEnableClientState(GL_VERTEX_ARRAY); // Enable vertex array + glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Enable texture coords array + if (mesh.normals != NULL) glEnableClientState(GL_NORMAL_ARRAY); // Enable normals array + if (mesh.colors != NULL) glEnableClientState(GL_COLOR_ARRAY); // Enable colors array + + glVertexPointer(3, GL_FLOAT, 0, mesh.vertices); // Pointer to vertex coords array + glTexCoordPointer(2, GL_FLOAT, 0, mesh.texcoords); // Pointer to texture coords array + if (mesh.normals != NULL) glNormalPointer(GL_FLOAT, 0, mesh.normals); // Pointer to normals array + if (mesh.colors != NULL) glColorPointer(4, GL_UNSIGNED_BYTE, 0, mesh.colors); // Pointer to colors array + + rlPushMatrix(); + rlMultMatrixf(MatrixToFloat(transform)); + rlColor4ub(material.colDiffuse.r, material.colDiffuse.g, material.colDiffuse.b, material.colDiffuse.a); + + if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, mesh.indices); + else glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount); + rlPopMatrix(); + + glDisableClientState(GL_VERTEX_ARRAY); // Disable vertex array + glDisableClientState(GL_TEXTURE_COORD_ARRAY); // Disable texture coords array + if (mesh.normals != NULL) glDisableClientState(GL_NORMAL_ARRAY); // Disable normals array + if (mesh.colors != NULL) glDisableClientState(GL_NORMAL_ARRAY); // Disable colors array + + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, 0); +#endif + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(material.shader.id); + + // At this point the modelview matrix just contains the view matrix (camera) + // That's because Begin3dMode() sets it an no model-drawing function modifies it, all use rlPushMatrix() and rlPopMatrix() + Matrix matView = modelview; // View matrix (camera) + Matrix matProjection = projection; // Projection matrix (perspective) + + // Calculate model-view matrix combining matModel and matView + Matrix matModelView = MatrixMultiply(transform, matView); // Transform to camera-space coordinates + + // Calculate model-view-projection matrix (MVP) + Matrix matMVP = MatrixMultiply(matModelView, matProjection); // Transform to screen-space coordinates + + // Send combined model-view-projection matrix to shader + glUniformMatrix4fv(material.shader.mvpLoc, 1, false, MatrixToFloat(matMVP)); + + // Upload to shader material.colDiffuse + float vColorDiffuse[4] = { (float)material.colDiffuse.r/255, (float)material.colDiffuse.g/255, (float)material.colDiffuse.b/255, (float)material.colDiffuse.a/255 }; + glUniform4fv(material.shader.tintColorLoc, 1, vColorDiffuse); + + // Check if using standard shader to get location points + // NOTE: standard shader specific locations are got at render time to keep Shader struct as simple as possible (with just default shader locations) + if (material.shader.id == standardShader.id) + { + // Send model transformations matrix to shader + glUniformMatrix4fv(glGetUniformLocation(material.shader.id, "modelMatrix"), 1, false, MatrixToFloat(transform)); + + // Send view transformation matrix to shader. View matrix 8, 9 and 10 are view direction vector axis values (target - position) + glUniform3f(glGetUniformLocation(material.shader.id, "viewDir"), matView.m8, matView.m9, matView.m10); + + // Setup shader uniforms for lights + SetShaderLights(material.shader); + + // Upload to shader material.colAmbient + glUniform4f(glGetUniformLocation(material.shader.id, "colAmbient"), (float)material.colAmbient.r/255, (float)material.colAmbient.g/255, (float)material.colAmbient.b/255, (float)material.colAmbient.a/255); + + // Upload to shader material.colSpecular + glUniform4f(glGetUniformLocation(material.shader.id, "colSpecular"), (float)material.colSpecular.r/255, (float)material.colSpecular.g/255, (float)material.colSpecular.b/255, (float)material.colSpecular.a/255); + + // Upload to shader glossiness + glUniform1f(glGetUniformLocation(material.shader.id, "glossiness"), material.glossiness); + } + + // Set shader textures (diffuse, normal, specular) + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, material.texDiffuse.id); + glUniform1i(material.shader.mapTexture0Loc, 0); // Diffuse texture fits in active texture unit 0 + + if ((material.texNormal.id != 0) && (material.shader.mapTexture1Loc != -1)) + { + // Upload to shader specular map flag + glUniform1i(glGetUniformLocation(material.shader.id, "useNormal"), 1); + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, material.texNormal.id); + glUniform1i(material.shader.mapTexture1Loc, 1); // Normal texture fits in active texture unit 1 + } + + if ((material.texSpecular.id != 0) && (material.shader.mapTexture2Loc != -1)) + { + // Upload to shader specular map flag + glUniform1i(glGetUniformLocation(material.shader.id, "useSpecular"), 1); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, material.texSpecular.id); + glUniform1i(material.shader.mapTexture2Loc, 2); // Specular texture fits in active texture unit 2 + } + + if (vaoSupported) + { + glBindVertexArray(mesh.vaoId); + } + else + { + // Bind mesh VBO data: vertex position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + glVertexAttribPointer(material.shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.vertexLoc); + + // Bind mesh VBO data: vertex texcoords (shader-location = 1) + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); + glVertexAttribPointer(material.shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.texcoordLoc); + + // Bind mesh VBO data: vertex normals (shader-location = 2, if available) + if (material.shader.normalLoc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[2]); + glVertexAttribPointer(material.shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.normalLoc); + } + + // Bind mesh VBO data: vertex colors (shader-location = 3, if available) , tangents, texcoords2 (if available) + if (material.shader.colorLoc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[3]); + glVertexAttribPointer(material.shader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(material.shader.colorLoc); + } + + // Bind mesh VBO data: vertex tangents (shader-location = 4, if available) + if (material.shader.tangentLoc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[4]); + glVertexAttribPointer(material.shader.tangentLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.tangentLoc); + } + + // Bind mesh VBO data: vertex texcoords2 (shader-location = 5, if available) + if (material.shader.texcoord2Loc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[5]); + glVertexAttribPointer(material.shader.texcoord2Loc, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.texcoord2Loc); + } + + if (mesh.indices != NULL) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quads.vboId[3]); + } + + // Draw call! + if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, 0); // Indexed vertices draw + else glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount); + + if (material.texNormal.id != 0) + { + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, 0); + } + + if (material.texSpecular.id != 0) + { + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, 0); + } + + glActiveTexture(GL_TEXTURE0); // Set shader active texture to default 0 + glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures + + if (vaoSupported) glBindVertexArray(0); // Unbind VAO + else + { + glBindBuffer(GL_ARRAY_BUFFER, 0); // Unbind VBOs + if (mesh.indices != NULL) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + + glUseProgram(0); // Unbind shader program +#endif +} + +// Unload mesh data from CPU and GPU +void rlglUnloadMesh(Mesh *mesh) +{ + if (mesh->vertices != NULL) free(mesh->vertices); + if (mesh->texcoords != NULL) free(mesh->texcoords); + if (mesh->normals != NULL) free(mesh->normals); + if (mesh->colors != NULL) free(mesh->colors); + if (mesh->tangents != NULL) free(mesh->tangents); + if (mesh->texcoords2 != NULL) free(mesh->texcoords2); + if (mesh->indices != NULL) free(mesh->indices); + + rlDeleteBuffers(mesh->vboId[0]); // vertex + rlDeleteBuffers(mesh->vboId[1]); // texcoords + rlDeleteBuffers(mesh->vboId[2]); // normals + rlDeleteBuffers(mesh->vboId[3]); // colors + rlDeleteBuffers(mesh->vboId[4]); // tangents + rlDeleteBuffers(mesh->vboId[5]); // texcoords2 + rlDeleteBuffers(mesh->vboId[6]); // indices + + rlDeleteVertexArrays(mesh->vaoId); } // Read screen pixel data (color buffer) @@ -2058,6 +2100,20 @@ void *rlglReadTexturePixels(Texture2D texture) // NOTE: Those functions are exposed directly to the user in raylib.h //---------------------------------------------------------------------------------- +// Get default internal texture (white texture) +Texture2D GetDefaultTexture(void) +{ + Texture2D texture; + + texture.id = whiteTexture; + texture.width = 1; + texture.height = 1; + texture.mipmaps = 1; + texture.format = UNCOMPRESSED_R8G8B8A8; + + return texture; +} + // Load a custom shader and bind default locations Shader LoadShader(char *vsFileName, char *fsFileName) { @@ -2090,11 +2146,233 @@ Shader LoadShader(char *vsFileName, char *fsFileName) return shader; } +// Unload a custom shader from memory +void UnloadShader(Shader shader) +{ + if (shader.id != 0) + { + rlDeleteShader(shader.id); + TraceLog(INFO, "[SHDR ID %i] Unloaded shader program data", shader.id); + } +} + +// Set custom shader to be used on batch draw +void BeginShaderMode(Shader shader) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (currentShader.id != shader.id) + { + //rlglDraw(); + currentShader = shader; + } +#endif +} + +// Set default shader to be used in batch draw +void EndShaderMode(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + BeginShaderMode(defaultShader); +#endif +} + +// Get default shader +Shader GetDefaultShader(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + return defaultShader; +#else + Shader shader = { 0 }; + return shader; +#endif +} + +// Get default shader +Shader GetStandardShader(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + return standardShader; +#else + Shader shader = { 0 }; + return shader; +#endif +} + +// Get shader uniform location +int GetShaderLocation(Shader shader, const char *uniformName) +{ + int location = -1; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + location = glGetUniformLocation(shader.id, uniformName); + + if (location == -1) TraceLog(WARNING, "[SHDR ID %i] Shader location for %s could not be found", shader.id, uniformName); +#endif + return location; +} + +// Set shader uniform value (float) +void SetShaderValue(Shader shader, int uniformLoc, float *value, int size) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(shader.id); + + if (size == 1) glUniform1fv(uniformLoc, 1, value); // Shader uniform type: float + else if (size == 2) glUniform2fv(uniformLoc, 1, value); // Shader uniform type: vec2 + else if (size == 3) glUniform3fv(uniformLoc, 1, value); // Shader uniform type: vec3 + else if (size == 4) glUniform4fv(uniformLoc, 1, value); // Shader uniform type: vec4 + else TraceLog(WARNING, "Shader value float array size not supported"); + + glUseProgram(0); +#endif +} + +// Set shader uniform value (int) +void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(shader.id); + + if (size == 1) glUniform1iv(uniformLoc, 1, value); // Shader uniform type: int + else if (size == 2) glUniform2iv(uniformLoc, 1, value); // Shader uniform type: ivec2 + else if (size == 3) glUniform3iv(uniformLoc, 1, value); // Shader uniform type: ivec3 + else if (size == 4) glUniform4iv(uniformLoc, 1, value); // Shader uniform type: ivec4 + else TraceLog(WARNING, "Shader value int array size not supported"); + + glUseProgram(0); +#endif +} + +// Set shader uniform value (matrix 4x4) +void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(shader.id); + + glUniformMatrix4fv(uniformLoc, 1, false, MatrixToFloat(mat)); + + glUseProgram(0); +#endif +} + +// Begin blending mode (alpha, additive, multiplied) +// NOTE: Only 3 blending modes supported, default blend mode is alpha +void BeginBlendMode(int mode) +{ + if ((blendMode != mode) && (mode < 3)) + { + //rlglDraw(); + + switch (mode) + { + case BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); break; + case BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); break; // Alternative: glBlendFunc(GL_ONE, GL_ONE); + case BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); break; + default: break; + } + + blendMode = mode; + } +} + +// End blending mode (reset to default: alpha blending) +void EndBlendMode(void) +{ + BeginBlendMode(BLEND_ALPHA); +} + +// Create a new light, initialize it and add to pool +Light CreateLight(int type, Vector3 position, Color diffuse) +{ + // Allocate dynamic memory + Light light = (Light)malloc(sizeof(LightData)); + + // Initialize light values with generic values + light->id = lightsCount; + light->type = type; + light->enabled = true; + + light->position = position; + light->target = (Vector3){ 0.0f, 0.0f, 0.0f }; + light->intensity = 1.0f; + light->diffuse = diffuse; + + // Add new light to the array + lights[lightsCount] = light; + + // Increase enabled lights count + lightsCount++; + + return light; +} + +// Destroy a light and take it out of the list +void DestroyLight(Light light) +{ + // Free dynamic memory allocation + free(lights[light->id]); + + // Remove *obj from the pointers array + for (int i = light->id; i < lightsCount; i++) + { + // Resort all the following pointers of the array + if ((i + 1) < lightsCount) + { + lights[i] = lights[i + 1]; + lights[i]->id = lights[i + 1]->id; + } + else free(lights[i]); + } + + // Decrease enabled physic objects count + lightsCount--; +} + +//---------------------------------------------------------------------------------- +// Module specific Functions Definition +//---------------------------------------------------------------------------------- + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +// Convert image data to OpenGL texture (returns OpenGL valid Id) +// NOTE: Expected compressed image data and POT image +static void LoadCompressedTexture(unsigned char *data, int width, int height, int mipmapCount, int compressedFormat) +{ + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + int blockSize = 0; // Bytes every block + int offset = 0; + + if ((compressedFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT) || + (compressedFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) || +#if defined(GRAPHICS_API_OPENGL_ES2) + (compressedFormat == GL_ETC1_RGB8_OES) || +#endif + (compressedFormat == GL_COMPRESSED_RGB8_ETC2)) blockSize = 8; + else blockSize = 16; + + // Load the mipmap levels + for (int level = 0; level < mipmapCount && (width || height); level++) + { + unsigned int size = 0; + + size = ((width + 3)/4)*((height + 3)/4)*blockSize; + + glCompressedTexImage2D(GL_TEXTURE_2D, level, compressedFormat, width, height, 0, size, data + offset); + + offset += size; + width /= 2; + height /= 2; + + // Security check for NPOT textures + if (width < 1) width = 1; + if (height < 1) height = 1; + } +} + // Load custom shader strings and return program id -unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) +static unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) { unsigned int program = 0; - + #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) GLuint vertexShader; GLuint fragmentShader; @@ -2156,7 +2434,17 @@ unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) glAttachShader(program, vertexShader); glAttachShader(program, fragmentShader); - + + // NOTE: Default attribute shader locations must be binded before linking + glBindAttribLocation(program, 0, DEFAULT_ATTRIB_POSITION_NAME); + glBindAttribLocation(program, 1, DEFAULT_ATTRIB_TEXCOORD_NAME); + glBindAttribLocation(program, 2, DEFAULT_ATTRIB_NORMAL_NAME); + glBindAttribLocation(program, 3, DEFAULT_ATTRIB_COLOR_NAME); + glBindAttribLocation(program, 4, DEFAULT_ATTRIB_TANGENT_NAME); + glBindAttribLocation(program, 5, DEFAULT_ATTRIB_TEXCOORD2_NAME); + + // NOTE: If some attrib name is no found on the shader, it locations becomes -1 + glLinkProgram(program); // NOTE: All uniform variables are intitialised to 0 when a program links @@ -2190,184 +2478,8 @@ unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) return program; } -// Unload a custom shader from memory -void UnloadShader(Shader shader) -{ - if (shader.id != 0) - { - rlDeleteShader(shader.id); - TraceLog(INFO, "[SHDR ID %i] Unloaded shader program data", shader.id); - } -} -// Set custom shader to be used on batch draw -void SetCustomShader(Shader shader) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (currentShader.id != shader.id) - { - //rlglDraw(); - currentShader = shader; - } -#endif -} - -// Set default shader to be used in batch draw -void SetDefaultShader(void) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - SetCustomShader(defaultShader); -#endif -} - -// Link shader to model -void SetModelShader(Model *model, Shader shader) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - model->material.shader = shader; - - if (vaoSupported) glBindVertexArray(model->mesh.vaoId); - - // Enable vertex attributes: position - glBindBuffer(GL_ARRAY_BUFFER, model->mesh.vboId[0]); - glEnableVertexAttribArray(shader.vertexLoc); - glVertexAttribPointer(shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - - // Enable vertex attributes: texcoords - glBindBuffer(GL_ARRAY_BUFFER, model->mesh.vboId[1]); - glEnableVertexAttribArray(shader.texcoordLoc); - glVertexAttribPointer(shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - - // Enable vertex attributes: normals - glBindBuffer(GL_ARRAY_BUFFER, model->mesh.vboId[2]); - glEnableVertexAttribArray(shader.normalLoc); - glVertexAttribPointer(shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); - - if (vaoSupported) glBindVertexArray(0); // Unbind VAO - -#elif (GRAPHICS_API_OPENGL_11) - TraceLog(WARNING, "Shaders not supported on OpenGL 1.1"); -#endif -} - -// Get shader uniform location -int GetShaderLocation(Shader shader, const char *uniformName) -{ - int location = -1; -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - location = glGetUniformLocation(shader.id, uniformName); - - if (location == -1) TraceLog(WARNING, "[SHDR ID %i] Shader location for %s could not be found", shader.id, uniformName); -#endif - return location; -} - -// Set shader uniform value (float) -void SetShaderValue(Shader shader, int uniformLoc, float *value, int size) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(shader.id); - - if (size == 1) glUniform1fv(uniformLoc, 1, value); // Shader uniform type: float - else if (size == 2) glUniform2fv(uniformLoc, 1, value); // Shader uniform type: vec2 - else if (size == 3) glUniform3fv(uniformLoc, 1, value); // Shader uniform type: vec3 - else if (size == 4) glUniform4fv(uniformLoc, 1, value); // Shader uniform type: vec4 - else TraceLog(WARNING, "Shader value float array size not supported"); - - glUseProgram(0); -#endif -} - -// Set shader uniform value (int) -void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(shader.id); - - if (size == 1) glUniform1iv(uniformLoc, 1, value); // Shader uniform type: int - else if (size == 2) glUniform2iv(uniformLoc, 1, value); // Shader uniform type: ivec2 - else if (size == 3) glUniform3iv(uniformLoc, 1, value); // Shader uniform type: ivec3 - else if (size == 4) glUniform4iv(uniformLoc, 1, value); // Shader uniform type: ivec4 - else TraceLog(WARNING, "Shader value int array size not supported"); - - glUseProgram(0); -#endif -} - -// Set shader uniform value (matrix 4x4) -void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(shader.id); - - glUniformMatrix4fv(uniformLoc, 1, false, MatrixToFloat(mat)); - - glUseProgram(0); -#endif -} - -// Set blending mode (alpha, additive, multiplied) -// NOTE: Only 3 blending modes predefined -void SetBlendMode(int mode) -{ - if ((blendMode != mode) && (mode < 3)) - { - //rlglDraw(); - - switch (mode) - { - case BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); break; - case BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); break; // Alternative: glBlendFunc(GL_ONE, GL_ONE); - case BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); break; - default: break; - } - - blendMode = mode; - } -} - -//---------------------------------------------------------------------------------- -// Module specific Functions Definition -//---------------------------------------------------------------------------------- - -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) -// Convert image data to OpenGL texture (returns OpenGL valid Id) -// NOTE: Expected compressed image data and POT image -static void LoadCompressedTexture(unsigned char *data, int width, int height, int mipmapCount, int compressedFormat) -{ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - int blockSize = 0; // Bytes every block - int offset = 0; - - if ((compressedFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT) || - (compressedFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) || -#if defined(GRAPHICS_API_OPENGL_ES2) - (compressedFormat == GL_ETC1_RGB8_OES) || -#endif - (compressedFormat == GL_COMPRESSED_RGB8_ETC2)) blockSize = 8; - else blockSize = 16; - - // Load the mipmap levels - for (int level = 0; level < mipmapCount && (width || height); level++) - { - unsigned int size = 0; - - size = ((width + 3)/4)*((height + 3)/4)*blockSize; - - glCompressedTexImage2D(GL_TEXTURE_2D, level, compressedFormat, width, height, 0, size, data + offset); - - offset += size; - width /= 2; - height /= 2; - - // Security check for NPOT textures - if (width < 1) width = 1; - if (height < 1) height = 1; - } -} - -// Load default shader (Vertex and Fragment) +// Load default shader (just vertex positioning and texture coloring) // NOTE: This shader program is used for batch buffers (lines, triangles, quads) static Shader LoadDefaultShader(void) { @@ -2410,15 +2522,15 @@ static Shader LoadDefaultShader(void) "varying vec4 fragColor; \n" #endif "uniform sampler2D texture0; \n" - "uniform vec4 fragTintColor; \n" + "uniform vec4 colDiffuse; \n" "void main() \n" "{ \n" #if defined(GRAPHICS_API_OPENGL_33) " vec4 texelColor = texture(texture0, fragTexCoord); \n" - " finalColor = texelColor*fragTintColor*fragColor; \n" + " finalColor = texelColor*colDiffuse*fragColor; \n" #elif defined(GRAPHICS_API_OPENGL_ES2) " vec4 texelColor = texture2D(texture0, fragTexCoord); \n" // NOTE: texture2D() is deprecated on OpenGL 3.3 and ES 3.0 - " gl_FragColor = texelColor*fragTintColor*fragColor; \n" + " gl_FragColor = texelColor*colDiffuse*fragColor; \n" #endif "} \n"; @@ -2432,24 +2544,52 @@ static Shader LoadDefaultShader(void) return shader; } +// Load standard shader +// NOTE: This shader supports: +// - Up to 3 different maps: diffuse, normal, specular +// - Material properties: colAmbient, colDiffuse, colSpecular, glossiness +// - Up to 8 lights: Point, Directional or Spot +static Shader LoadStandardShader(void) +{ + // Load standard shader (TODO: rewrite as char pointers) + Shader shader = { 0 }; //LoadShader("resources/shaders/standard.vs", "resources/shaders/standard.fs"); + + if (shader.id != 0) TraceLog(INFO, "[SHDR ID %i] Standard shader loaded successfully", shader.id); + else TraceLog(WARNING, "[SHDR ID %i] Standard shader could not be loaded", shader.id); + + if (shader.id != 0) LoadDefaultShaderLocations(&shader); + + return shader; +} + // Get location handlers to for shader attributes and uniforms // NOTE: If any location is not found, loc point becomes -1 static void LoadDefaultShaderLocations(Shader *shader) { + // NOTE: Default shader attrib locations have been fixed before linking: + // vertex position location = 0 + // vertex texcoord location = 1 + // vertex normal location = 2 + // vertex color location = 3 + // vertex tangent location = 4 + // vertex texcoord2 location = 5 + // Get handles to GLSL input attibute locations - shader->vertexLoc = glGetAttribLocation(shader->id, "vertexPosition"); - shader->texcoordLoc = glGetAttribLocation(shader->id, "vertexTexCoord"); - shader->normalLoc = glGetAttribLocation(shader->id, "vertexNormal"); - shader->colorLoc = glGetAttribLocation(shader->id, "vertexColor"); + shader->vertexLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_POSITION_NAME); + shader->texcoordLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_TEXCOORD_NAME); + shader->texcoord2Loc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_TEXCOORD2_NAME); + shader->normalLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_NORMAL_NAME); + shader->tangentLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_TANGENT_NAME); + shader->colorLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_COLOR_NAME); // Get handles to GLSL uniform locations (vertex shader) shader->mvpLoc = glGetUniformLocation(shader->id, "mvpMatrix"); // Get handles to GLSL uniform locations (fragment shader) - shader->tintColorLoc = glGetUniformLocation(shader->id, "fragTintColor"); - shader->mapDiffuseLoc = glGetUniformLocation(shader->id, "texture0"); - shader->mapNormalLoc = glGetUniformLocation(shader->id, "texture1"); - shader->mapSpecularLoc = glGetUniformLocation(shader->id, "texture2"); + shader->tintColorLoc = glGetUniformLocation(shader->id, "colDiffuse"); + shader->mapTexture0Loc = glGetUniformLocation(shader->id, "texture0"); + shader->mapTexture1Loc = glGetUniformLocation(shader->id, "texture1"); + shader->mapTexture2Loc = glGetUniformLocation(shader->id, "texture2"); } // Unload default shader @@ -2457,40 +2597,59 @@ static void UnloadDefaultShader(void) { glUseProgram(0); - //glDetachShader(defaultShaderProgram, vertexShader); - //glDetachShader(defaultShaderProgram, fragmentShader); + //glDetachShader(defaultShader, vertexShader); + //glDetachShader(defaultShader, fragmentShader); //glDeleteShader(vertexShader); // Already deleted on shader compilation - //glDeleteShader(fragmentShader); // Already deleted on sahder compilation + //glDeleteShader(fragmentShader); // Already deleted on shader compilation glDeleteProgram(defaultShader.id); } +// Unload standard shader +static void UnloadStandardShader(void) +{ + glUseProgram(0); + + //glDetachShader(defaultShader, vertexShader); + //glDetachShader(defaultShader, fragmentShader); + //glDeleteShader(vertexShader); // Already deleted on shader compilation + //glDeleteShader(fragmentShader); // Already deleted on shader compilation + glDeleteProgram(standardShader.id); +} + + // Load default internal buffers (lines, triangles, quads) static void LoadDefaultBuffers(void) { // [CPU] Allocate and initialize float array buffers to store vertex data (lines, triangles, quads) //-------------------------------------------------------------------------------------------- - // Initialize lines arrays (vertex position and color data) + // Lines - Initialize arrays (vertex position and color data) lines.vertices = (float *)malloc(sizeof(float)*3*2*MAX_LINES_BATCH); // 3 float by vertex, 2 vertex by line lines.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*2*MAX_LINES_BATCH); // 4 float by color, 2 colors by line + lines.texcoords = NULL; + lines.indices = NULL; for (int i = 0; i < (3*2*MAX_LINES_BATCH); i++) lines.vertices[i] = 0.0f; for (int i = 0; i < (4*2*MAX_LINES_BATCH); i++) lines.colors[i] = 0; lines.vCounter = 0; lines.cCounter = 0; + lines.tcCounter = 0; - // Initialize triangles arrays (vertex position and color data) + // Triangles - Initialize arrays (vertex position and color data) triangles.vertices = (float *)malloc(sizeof(float)*3*3*MAX_TRIANGLES_BATCH); // 3 float by vertex, 3 vertex by triangle triangles.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*3*MAX_TRIANGLES_BATCH); // 4 float by color, 3 colors by triangle + triangles.texcoords = NULL; + triangles.indices = NULL; for (int i = 0; i < (3*3*MAX_TRIANGLES_BATCH); i++) triangles.vertices[i] = 0.0f; for (int i = 0; i < (4*3*MAX_TRIANGLES_BATCH); i++) triangles.colors[i] = 0; triangles.vCounter = 0; triangles.cCounter = 0; + triangles.tcCounter = 0; - // Initialize quads arrays (vertex position, texcoord and color data... and indexes) + // Quads - Initialize arrays (vertex position, texcoord, color data and indexes) quads.vertices = (float *)malloc(sizeof(float)*3*4*MAX_QUADS_BATCH); // 3 float by vertex, 4 vertex by quad quads.texcoords = (float *)malloc(sizeof(float)*2*4*MAX_QUADS_BATCH); // 2 float by texcoord, 4 texcoord by quad quads.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*4*MAX_QUADS_BATCH); // 4 float by color, 4 colors by quad @@ -2523,7 +2682,7 @@ static void LoadDefaultBuffers(void) quads.tcCounter = 0; quads.cCounter = 0; - TraceLog(INFO, "Default buffers initialized successfully in CPU (lines, triangles, quads)"); + TraceLog(INFO, "[CPU] Default buffers initialized successfully (lines, triangles, quads)"); //-------------------------------------------------------------------------------------------- // [GPU] Upload vertex data and initialize VAOs/VBOs (lines, triangles, quads) @@ -2534,97 +2693,102 @@ static void LoadDefaultBuffers(void) if (vaoSupported) { // Initialize Lines VAO - glGenVertexArrays(1, &vaoLines); - glBindVertexArray(vaoLines); + glGenVertexArrays(1, &lines.vaoId); + glBindVertexArray(lines.vaoId); } - // Create buffers for our vertex data - glGenBuffers(2, linesBuffer); - - // Lines - Vertex positions buffer binding and attributes enable - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[0]); + // Lines - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(2, &lines.vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*2*MAX_LINES_BATCH, lines.vertices, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.vertexLoc); glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - // Lines - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); + // Vertex color buffer (shader-location = 3) + glGenBuffers(2, &lines.vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.colorLoc); glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers (lines) VAO initialized successfully", vaoLines); - else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers (lines) VBOs initialized successfully", linesBuffer[0], linesBuffer[1]); + if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers VAO initialized successfully (lines)", lines.vaoId); + else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers VBOs initialized successfully (lines)", lines.vboId[0], lines.vboId[1]); // Upload and link triangles vertex buffers if (vaoSupported) { // Initialize Triangles VAO - glGenVertexArrays(1, &vaoTriangles); - glBindVertexArray(vaoTriangles); + glGenVertexArrays(1, &triangles.vaoId); + glBindVertexArray(triangles.vaoId); } - // Create buffers for our vertex data - glGenBuffers(2, trianglesBuffer); - - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[0]); + // Triangles - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(1, &triangles.vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*3*MAX_TRIANGLES_BATCH, triangles.vertices, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.vertexLoc); glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); + // Vertex color buffer (shader-location = 3) + glGenBuffers(1, &triangles.vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.colorLoc); glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers (triangles) VAO initialized successfully", vaoTriangles); - else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers (triangles) VBOs initialized successfully", trianglesBuffer[0], trianglesBuffer[1]); + if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers VAO initialized successfully (triangles)", triangles.vaoId); + else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers VBOs initialized successfully(triangles)", triangles.vboId[0], triangles.vboId[1]); // Upload and link quads vertex buffers if (vaoSupported) { // Initialize Quads VAO - glGenVertexArrays(1, &vaoQuads); - glBindVertexArray(vaoQuads); + glGenVertexArrays(1, &quads.vaoId); + glBindVertexArray(quads.vaoId); } - // Create buffers for our vertex data - glGenBuffers(4, quadsBuffer); - - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); + // Quads - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(1, &quads.vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.vertexLoc); glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); + // Vertex texcoord buffer (shader-location = 1) + glGenBuffers(1, &quads.vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.texcoordLoc); glVertexAttribPointer(currentShader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); + // Vertex color buffer (shader-location = 3) + glGenBuffers(1, &quads.vboId[2]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[2]); glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.colorLoc); glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); // Fill index buffer - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quadsBuffer[3]); + glGenBuffers(1, &quads.vboId[3]); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quads.vboId[3]); #if defined(GRAPHICS_API_OPENGL_33) glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*6*MAX_QUADS_BATCH, quads.indices, GL_STATIC_DRAW); #elif defined(GRAPHICS_API_OPENGL_ES2) glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(short)*6*MAX_QUADS_BATCH, quads.indices, GL_STATIC_DRAW); #endif - if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers (quads) VAO initialized successfully", vaoQuads); - else TraceLog(INFO, "[VBO ID %i][VBO ID %i][VBO ID %i][VBO ID %i] Default buffers (quads) VBOs initialized successfully", quadsBuffer[0], quadsBuffer[1], quadsBuffer[2], quadsBuffer[3]); + if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers VAO initialized successfully (quads)", quads.vaoId); + else TraceLog(INFO, "[VBO ID %i][VBO ID %i][VBO ID %i][VBO ID %i] Default buffers VBOs initialized successfully (quads)", quads.vboId[0], quads.vboId[1], quads.vboId[2], quads.vboId[3]); // Unbind the current VAO if (vaoSupported) glBindVertexArray(0); //-------------------------------------------------------------------------------------------- } -// Update default buffers (VAOs/VBOs) with vertex array data +// Update default internal buffers (VAOs/VBOs) with vertex array data // NOTE: If there is not vertex data, buffers doesn't need to be updated (vertexCount > 0) // TODO: If no data changed on the CPU arrays --> No need to re-update GPU arrays (change flag required) static void UpdateDefaultBuffers(void) @@ -2633,15 +2797,15 @@ static void UpdateDefaultBuffers(void) if (lines.vCounter > 0) { // Activate Lines VAO - if (vaoSupported) glBindVertexArray(vaoLines); + if (vaoSupported) glBindVertexArray(lines.vaoId); // Lines - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[0]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[0]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*2*MAX_LINES_BATCH, lines.vertices, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*lines.vCounter, lines.vertices); // target - offset (in bytes) - size (in bytes) - data pointer // Lines - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*lines.cCounter, lines.colors); } @@ -2650,15 +2814,15 @@ static void UpdateDefaultBuffers(void) if (triangles.vCounter > 0) { // Activate Triangles VAO - if (vaoSupported) glBindVertexArray(vaoTriangles); + if (vaoSupported) glBindVertexArray(triangles.vaoId); // Triangles - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[0]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[0]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*3*MAX_TRIANGLES_BATCH, triangles.vertices, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*triangles.vCounter, triangles.vertices); // Triangles - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*triangles.cCounter, triangles.colors); } @@ -2667,20 +2831,20 @@ static void UpdateDefaultBuffers(void) if (quads.vCounter > 0) { // Activate Quads VAO - if (vaoSupported) glBindVertexArray(vaoQuads); + if (vaoSupported) glBindVertexArray(quads.vaoId); // Quads - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[0]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*quads.vCounter, quads.vertices); // Quads - texture coordinates buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*quads.vCounter, quads.texcoords); // Quads - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[2]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*quads.vCounter, quads.colors); @@ -2695,7 +2859,167 @@ static void UpdateDefaultBuffers(void) if (vaoSupported) glBindVertexArray(0); } -// Unload default buffers vertex data from CPU and GPU +// Draw default internal buffers vertex data +// NOTE: We draw in this order: lines, triangles, quads +static void DrawDefaultBuffers(void) +{ + // Set current shader and upload current MVP matrix + if ((lines.vCounter > 0) || (triangles.vCounter > 0) || (quads.vCounter > 0)) + { + glUseProgram(currentShader.id); + + // Create modelview-projection matrix + //Matrix matMVP = MatrixMultiply(modelview, projection); + + glUniformMatrix4fv(currentShader.mvpLoc, 1, false, MatrixToFloat(customMVP)); //customMVP + glUniform4f(currentShader.tintColorLoc, 1.0f, 1.0f, 1.0f, 1.0f); + glUniform1i(currentShader.mapTexture0Loc, 0); + + // NOTE: Additional map textures not considered for default buffers drawing + } + + // Draw lines buffers + if (lines.vCounter > 0) + { + glBindTexture(GL_TEXTURE_2D, whiteTexture); + + if (vaoSupported) + { + glBindVertexArray(lines.vaoId); + } + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[0]); + glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.vertexLoc); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[1]); + glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(currentShader.colorLoc); + } + + glDrawArrays(GL_LINES, 0, lines.vCounter); + + if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindTexture(GL_TEXTURE_2D, 0); + } + + // Draw triangles buffers + if (triangles.vCounter > 0) + { + glBindTexture(GL_TEXTURE_2D, whiteTexture); + + if (vaoSupported) + { + glBindVertexArray(triangles.vaoId); + } + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[0]); + glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.vertexLoc); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[1]); + glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(currentShader.colorLoc); + } + + glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter); + + if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindTexture(GL_TEXTURE_2D, 0); + } + + // Draw quads buffers + if (quads.vCounter > 0) + { + int quadsCount = 0; + int numIndicesToProcess = 0; + int indicesOffset = 0; + + if (vaoSupported) + { + glBindVertexArray(quads.vaoId); + } + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[0]); + glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.vertexLoc); + + // Bind vertex attrib: texcoord (shader-location = 1) + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[1]); + glVertexAttribPointer(currentShader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.texcoordLoc); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[2]); + glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(currentShader.colorLoc); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quads.vboId[3]); + } + + //TraceLog(DEBUG, "Draws required per frame: %i", drawsCounter); + + for (int i = 0; i < drawsCounter; i++) + { + quadsCount = draws[i].vertexCount/4; + numIndicesToProcess = quadsCount*6; // Get number of Quads * 6 index by Quad + + //TraceLog(DEBUG, "Quads to render: %i - Vertex Count: %i", quadsCount, draws[i].vertexCount); + + glBindTexture(GL_TEXTURE_2D, draws[i].textureId); + + // NOTE: The final parameter tells the GPU the offset in bytes from the start of the index buffer to the location of the first index to process +#if defined(GRAPHICS_API_OPENGL_33) + glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_INT, (GLvoid *)(sizeof(GLuint)*indicesOffset)); +#elif defined(GRAPHICS_API_OPENGL_ES2) + glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_SHORT, (GLvoid *)(sizeof(GLushort)*indicesOffset)); +#endif + //GLenum err; + //if ((err = glGetError()) != GL_NO_ERROR) TraceLog(INFO, "OpenGL error: %i", (int)err); //GL_INVALID_ENUM! + + indicesOffset += draws[i].vertexCount/4*6; + } + + if (!vaoSupported) + { + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + + glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures + } + + if (vaoSupported) glBindVertexArray(0); // Unbind VAO + + glUseProgram(0); // Unbind shader program + + // Reset draws counter + drawsCounter = 1; + draws[0].textureId = whiteTexture; + draws[0].vertexCount = 0; + + // Reset vertex counters for next frame + lines.vCounter = 0; + lines.cCounter = 0; + triangles.vCounter = 0; + triangles.cCounter = 0; + quads.vCounter = 0; + quads.tcCounter = 0; + quads.cCounter = 0; + + // Reset depth for next draw + currentDepth = -1.0f; +} + +// Unload default internal buffers vertex data from CPU and GPU static void UnloadDefaultBuffers(void) { // Unbind everything @@ -2708,21 +3032,21 @@ static void UnloadDefaultBuffers(void) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); // Delete VBOs from GPU (VRAM) - glDeleteBuffers(1, &linesBuffer[0]); - glDeleteBuffers(1, &linesBuffer[1]); - glDeleteBuffers(1, &trianglesBuffer[0]); - glDeleteBuffers(1, &trianglesBuffer[1]); - glDeleteBuffers(1, &quadsBuffer[0]); - glDeleteBuffers(1, &quadsBuffer[1]); - glDeleteBuffers(1, &quadsBuffer[2]); - glDeleteBuffers(1, &quadsBuffer[3]); + glDeleteBuffers(1, &lines.vboId[0]); + glDeleteBuffers(1, &lines.vboId[1]); + glDeleteBuffers(1, &triangles.vboId[0]); + glDeleteBuffers(1, &triangles.vboId[1]); + glDeleteBuffers(1, &quads.vboId[0]); + glDeleteBuffers(1, &quads.vboId[1]); + glDeleteBuffers(1, &quads.vboId[2]); + glDeleteBuffers(1, &quads.vboId[3]); if (vaoSupported) { // Delete VAOs from GPU (VRAM) - glDeleteVertexArrays(1, &vaoLines); - glDeleteVertexArrays(1, &vaoTriangles); - glDeleteVertexArrays(1, &vaoQuads); + glDeleteVertexArrays(1, &lines.vaoId); + glDeleteVertexArrays(1, &triangles.vaoId); + glDeleteVertexArrays(1, &quads.vaoId); } // Free vertex arrays memory from CPU (RAM) @@ -2738,6 +3062,79 @@ static void UnloadDefaultBuffers(void) free(quads.indices); } +// Sets shader uniform values for lights array +// NOTE: It would be far easier with shader UBOs but are not supported on OpenGL ES 2.0f +static void SetShaderLights(Shader shader) +{ + int locPoint = glGetUniformLocation(shader.id, "lightsCount"); + glUniform1i(locPoint, lightsCount); + + char locName[32] = "lights[x].position\0"; + + for (int i = 0; i < lightsCount; i++) + { + locName[7] = '0' + i; + + memcpy(&locName[10], "enabled\0", strlen("enabled\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform1i(locPoint, lights[i]->enabled); + + memcpy(&locName[10], "type\0", strlen("type\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform1i(locPoint, lights[i]->type); + + memcpy(&locName[10], "diffuse\0", strlen("diffuse\0") + 2); + locPoint = glGetUniformLocation(shader.id, locName); + glUniform4f(locPoint, (float)lights[i]->diffuse.r/255, (float)lights[i]->diffuse.g/255, (float)lights[i]->diffuse.b/255, (float)lights[i]->diffuse.a/255); + + memcpy(&locName[10], "intensity\0", strlen("intensity\0")); + locPoint = glGetUniformLocation(shader.id, locName); + glUniform1f(locPoint, lights[i]->intensity); + + switch (lights[i]->type) + { + case LIGHT_POINT: + { + memcpy(&locName[10], "position\0", strlen("position\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform3f(locPoint, lights[i]->position.x, lights[i]->position.y, lights[i]->position.z); + + memcpy(&locName[10], "radius\0", strlen("radius\0") + 2); + locPoint = GetShaderLocation(shader, locName); + glUniform1f(locPoint, lights[i]->radius); + } break; + case LIGHT_DIRECTIONAL: + { + memcpy(&locName[10], "direction\0", strlen("direction\0") + 2); + locPoint = GetShaderLocation(shader, locName); + Vector3 direction = { lights[i]->target.x - lights[i]->position.x, lights[i]->target.y - lights[i]->position.y, lights[i]->target.z - lights[i]->position.z }; + VectorNormalize(&direction); + glUniform3f(locPoint, direction.x, direction.y, direction.z); + } break; + case LIGHT_SPOT: + { + memcpy(&locName[10], "position\0", strlen("position\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform3f(locPoint, lights[i]->position.x, lights[i]->position.y, lights[i]->position.z); + + memcpy(&locName[10], "direction\0", strlen("direction\0") + 2); + locPoint = GetShaderLocation(shader, locName); + + Vector3 direction = { lights[i]->target.x - lights[i]->position.x, lights[i]->target.y - lights[i]->position.y, lights[i]->target.z - lights[i]->position.z }; + VectorNormalize(&direction); + glUniform3f(locPoint, direction.x, direction.y, direction.z); + + memcpy(&locName[10], "coneAngle\0", strlen("coneAngle\0")); + locPoint = GetShaderLocation(shader, locName); + glUniform1f(locPoint, lights[i]->coneAngle); + } break; + default: break; + } + + // TODO: Pass to the shader any other required data from LightData struct + } +} + // Read text data from file // NOTE: text chars array should be freed manually static char *ReadTextFile(const char *fileName) @@ -2908,7 +3305,7 @@ static void TraceLog(int msgType, const char *text, ...) va_list args; va_start(args, text); - switch(msgType) + switch (msgType) { case INFO: fprintf(stdout, "INFO: "); break; case ERROR: fprintf(stdout, "ERROR: "); break; diff --git a/examples/oculus_glfw_sample/rlgl.h b/examples/oculus_glfw_sample/rlgl.h index 99427929a..e7e600369 100644 --- a/examples/oculus_glfw_sample/rlgl.h +++ b/examples/oculus_glfw_sample/rlgl.h @@ -130,47 +130,43 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; COMPRESSED_ASTC_4x4_RGBA, // 8 bpp COMPRESSED_ASTC_8x8_RGBA // 2 bpp } TextureFormat; - - // Bounding box type - typedef struct BoundingBox { - Vector3 min; - Vector3 max; - } BoundingBox; - // Mesh with vertex data type - // NOTE: If using OpenGL 1.1, data loaded in CPU; if OpenGL 3.3+ data loaded in GPU (vaoId) + // Vertex data definning a mesh typedef struct Mesh { - int vertexCount; // num vertices - float *vertices; // vertex position (XYZ - 3 components per vertex) - float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) - float *texcoords2; // vertex second texture coordinates (useful for lightmaps) - float *normals; // vertex normals (XYZ - 3 components per vertex) - float *tangents; // vertex tangents (XYZ - 3 components per vertex) - unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) - - BoundingBox bounds; // mesh limits defined by min and max points - - unsigned int vaoId; // OpenGL Vertex Array Object id - unsigned int vboId[6]; // OpenGL Vertex Buffer Objects id (6 types of vertex data) + int vertexCount; // number of vertices stored in arrays + int triangleCount; // number of triangles stored (indexed or not) + float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5) + float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4) + unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices;// vertex indices (in case vertex data comes indexed) + + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data) } Mesh; - // Shader type + // Shader type (generic shader) typedef struct Shader { - unsigned int id; // Shader program id - - // Variable attributes - int vertexLoc; // Vertex attribute location point (vertex shader) - int texcoordLoc; // Texcoord attribute location point (vertex shader) - int normalLoc; // Normal attribute location point (vertex shader) - int colorLoc; // Color attibute location point (vertex shader) - - // Uniforms - int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) - int tintColorLoc; // Color uniform location point (fragment shader) + unsigned int id; // Shader program id - int mapDiffuseLoc; // Diffuse map texture uniform location point (fragment shader) - int mapNormalLoc; // Normal map texture uniform location point (fragment shader) - int mapSpecularLoc; // Specular map texture uniform location point (fragment shader) + // Vertex attributes locations (default locations) + int vertexLoc; // Vertex attribute location point (default-location = 0) + int texcoordLoc; // Texcoord attribute location point (default-location = 1) + int normalLoc; // Normal attribute location point (default-location = 2) + int colorLoc; // Color attibute location point (default-location = 3) + int tangentLoc; // Tangent attribute location point (default-location = 4) + int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5) + + // Uniform locations + int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) + int tintColorLoc; // Color uniform location point (fragment shader) + + // Texture map locations (generic for any kind of map) + int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0) + int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1) + int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) } Shader; // Texture2D type @@ -192,27 +188,46 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; // Material type typedef struct Material { - Shader shader; + Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular) - Texture2D texDiffuse; // Diffuse texture - Texture2D texNormal; // Normal texture - Texture2D texSpecular; // Specular texture + Texture2D texDiffuse; // Diffuse texture + Texture2D texNormal; // Normal texture + Texture2D texSpecular; // Specular texture + + Color colDiffuse; // Diffuse color + Color colAmbient; // Ambient color + Color colSpecular; // Specular color - Color colDiffuse; - Color colAmbient; - Color colSpecular; - - float glossiness; - float normalDepth; + float glossiness; // Glossiness level (Ranges from 0 to 1000) } Material; + + // Camera type, defines a camera position/orientation in 3d space + typedef struct Camera { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view apperture in Y (degrees) + } Camera; + + // Light type + typedef struct LightData { + unsigned int id; // Light unique id + int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT + bool enabled; // Light enabled + + Vector3 position; // Light position + Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) + float radius; // Light attenuation radius light intensity reduced with distance (world distance) + + Color diffuse; // Light diffuse color + float intensity; // Light intensity level + + float coneAngle; // Light cone max angle: LIGHT_SPOT + } LightData, *Light; + + // Light types + typedef enum { LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT } LightType; - // 3d Model type - typedef struct Model { - Mesh mesh; - Matrix transform; - Material material; - } Model; - // Color blending modes (pre-defined) typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode; #endif @@ -234,6 +249,7 @@ void rlScalef(float x, float y, float z); // Multiply the current matrix b void rlMultMatrixf(float *mat); // Multiply the current matrix by another matrix void rlFrustum(double left, double right, double bottom, double top, double near, double far); void rlOrtho(double left, double right, double bottom, double top, double near, double far); +void rlViewport(int x, int y, int width, int height); // Set the viewport area //------------------------------------------------------------------------------------ // Functions Declaration - Vertex level operations @@ -259,6 +275,8 @@ void rlEnableRenderTexture(unsigned int id); // Enable render texture (fbo) void rlDisableRenderTexture(void); // Disable render texture (fbo), return to default framebuffer void rlEnableDepthTest(void); // Enable depth test void rlDisableDepthTest(void); // Disable depth test +void rlEnableWireMode(void); // Enable wire mode +void rlDisableWireMode(void); // Disable wire mode void rlDeleteTextures(unsigned int id); // Delete OpenGL texture from GPU void rlDeleteRenderTextures(RenderTexture2D target); // Delete render textures (fbo) from GPU void rlDeleteShader(unsigned int id); // Delete OpenGL shader program from GPU @@ -273,7 +291,7 @@ int rlGetVersion(void); // Returns current OpenGL versio //------------------------------------------------------------------------------------ void rlglInit(void); // Initialize rlgl (shaders, VAO, VBO...) void rlglClose(void); // De-init rlgl -void rlglDraw(Matrix mvp); // Draw VAO/VBO +void rlglDraw(Matrix mvp); // Draw VAO/VBO void rlglInitGraphics(int offsetX, int offsetY, int width, int height); // Initialize Graphics (OpenGL stuff) unsigned int rlglLoadTexture(void *data, int width, int height, int textureFormat, int mipmapCount); // Load texture in GPU @@ -281,35 +299,43 @@ RenderTexture2D rlglLoadRenderTexture(int width, int height); // Load a textur void rlglUpdateTexture(unsigned int id, int width, int height, int format, void *data); // Update GPU texture with new data void rlglGenerateMipmaps(Texture2D texture); // Generate mipmap data for selected texture -// NOTE: There is a set of shader related functions that are available to end user, -// to avoid creating function wrappers through core module, they have been directly declared in raylib.h - -Model rlglLoadModel(Mesh mesh); // Upload vertex data into GPU and provided VAO/VBO ids -void rlglDrawModel(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color color, bool wires); +void rlglLoadMesh(Mesh *mesh, bool dynamic); // Upload vertex data into GPU and provided VAO/VBO ids +void rlglUpdateMesh(Mesh mesh, int buffer, int numVertex); // Update vertex data on GPU (upload new data to one buffer) +void rlglDrawMesh(Mesh mesh, Material material, Matrix transform); // Draw a 3d mesh with material and transform +void rlglUnloadMesh(Mesh *mesh); // Unload mesh data from CPU and GPU Vector3 rlglUnproject(Vector3 source, Matrix proj, Matrix view); // Get world coordinates from screen coordinates unsigned char *rlglReadScreenPixels(int width, int height); // Read screen pixel data (color buffer) void *rlglReadTexturePixels(Texture2D texture); // Read texture pixel data +// NOTE: There is a set of shader related functions that are available to end user, +// to avoid creating function wrappers through core module, they have been directly declared in raylib.h + #if defined(RLGL_STANDALONE) //------------------------------------------------------------------------------------ // Shaders System Functions (Module: rlgl) // NOTE: This functions are useless when using OpenGL 1.1 //------------------------------------------------------------------------------------ Shader LoadShader(char *vsFileName, char *fsFileName); // Load a custom shader and bind default locations -unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr); // Load custom shader strings and return program id void UnloadShader(Shader shader); // Unload a custom shader from memory -void SetCustomShader(Shader shader); // Set custom shader to be used in batch draw -void SetDefaultShader(void); // Set default shader to be used in batch draw -void SetModelShader(Model *model, Shader shader); // Link a shader to a model + +Shader GetDefaultShader(void); // Get default shader +Shader GetStandardShader(void); // Get default shader +Texture2D GetDefaultTexture(void); // Get default texture int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location void SetShaderValue(Shader shader, int uniformLoc, float *value, int size); // Set shader uniform value (float) void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size); // Set shader uniform value (int) void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat); // Set shader uniform value (matrix 4x4) -void SetBlendMode(int mode); // Set blending mode (alpha, additive, multiplied) +void BeginShaderMode(Shader shader); // Begin custom shader drawing +void EndShaderMode(void); // End custom shader drawing (use default shader) +void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied) +void EndBlendMode(void); // End blending mode (reset to default: alpha blending) + +Light CreateLight(int type, Vector3 position, Color diffuse); // Create a new light, initialize it and add to pool +void DestroyLight(Light light); // Destroy a light and take it out of the list #endif #ifdef __cplusplus From 897179a06c3e62d11fec98d3f7fed3c1fa6d167a Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 1 Jun 2016 12:37:51 +0200 Subject: [PATCH 5/9] Corrected some issues on OpenGL 1.1 --- src/rlgl.c | 21 ++++++++++++++----- src/textures.c | 56 +++++++++++++++++++++++++++----------------------- 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/src/rlgl.c b/src/rlgl.c index 89361f462..aa536e2a2 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -237,7 +237,7 @@ static Shader LoadDefaultShader(void); // Load default shader (just vertex static Shader LoadStandardShader(void); // Load standard shader (support materials and lighting) static void LoadDefaultShaderLocations(Shader *shader); // Bind default shader locations (attributes and uniforms) static void UnloadDefaultShader(void); // Unload default shader -static void UnloadStandardShader(void); // Unload standard shader +static void UnloadStandardShader(void); // Unload standard shader static void LoadDefaultBuffers(void); // Load default internal buffers (lines, triangles, quads) static void UpdateDefaultBuffers(void); // Update default internal buffers (VAOs/VBOs) with vertex data @@ -256,7 +256,7 @@ static Color *GenNextMipmap(Color *srcData, int srcWidth, int srcHeight); #if defined(RLGL_STANDALONE) static void TraceLog(int msgType, const char *text, ...); -float *MatrixToFloat(Matrix mat); // Converts Matrix to float array +float *MatrixToFloat(Matrix mat); // Converts Matrix to float array #endif //---------------------------------------------------------------------------------- @@ -1545,10 +1545,10 @@ void rlglLoadMesh(Mesh *mesh, bool dynamic) mesh->vboId[5] = 0; // Vertex texcoords2 VBO mesh->vboId[6] = 0; // Vertex indices VBO +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) int drawHint = GL_STATIC_DRAW; if (dynamic) drawHint = GL_DYNAMIC_DRAW; -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) GLuint vaoId = 0; // Vertex Array Objects (VAO) GLuint vboId[7]; // Vertex Buffer Objects (VBOs) @@ -1674,6 +1674,7 @@ void rlglLoadMesh(Mesh *mesh, bool dynamic) // Update vertex data on GPU (upload new data to one buffer) void rlglUpdateMesh(Mesh mesh, int buffer, int numVertex) { +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Activate mesh VAO if (vaoSupported) glBindVertexArray(mesh.vaoId); @@ -1729,6 +1730,7 @@ void rlglUpdateMesh(Mesh mesh, int buffer, int numVertex) //mesh.vertices = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); // Now we can modify vertices //glUnmapBuffer(GL_ARRAY_BUFFER); +#endif } // Draw a 3d mesh with material and transform @@ -2280,8 +2282,11 @@ void EndBlendMode(void) // Create a new light, initialize it and add to pool Light CreateLight(int type, Vector3 position, Color diffuse) { + Light light = NULL; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Allocate dynamic memory - Light light = (Light)malloc(sizeof(LightData)); + light = (Light)malloc(sizeof(LightData)); // Initialize light values with generic values light->id = lightsCount; @@ -2298,13 +2303,18 @@ Light CreateLight(int type, Vector3 position, Color diffuse) // Increase enabled lights count lightsCount++; - +#else + // TODO: Support OpenGL 1.1 lighting system + TraceLog(WARNING, "Lighting currently not supported on OpenGL 1.1"); +#endif + return light; } // Destroy a light and take it out of the list void DestroyLight(Light light) { +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) // Free dynamic memory allocation free(lights[light->id]); @@ -2322,6 +2332,7 @@ void DestroyLight(Light light) // Decrease enabled physic objects count lightsCount--; +#endif } //---------------------------------------------------------------------------------- diff --git a/src/textures.c b/src/textures.c index 439311f6b..8c59f3f24 100644 --- a/src/textures.c +++ b/src/textures.c @@ -1394,39 +1394,43 @@ void DrawTextureRec(Texture2D texture, Rectangle sourceRec, Vector2 position, Co // NOTE: origin is relative to destination rectangle size void DrawTexturePro(Texture2D texture, Rectangle sourceRec, Rectangle destRec, Vector2 origin, float rotation, Color tint) { - if (sourceRec.width < 0) sourceRec.x -= sourceRec.width; - if (sourceRec.height < 0) sourceRec.y -= sourceRec.height; - - rlEnableTexture(texture.id); + // Check if texture is valid + if (texture.id != 0) + { + if (sourceRec.width < 0) sourceRec.x -= sourceRec.width; + if (sourceRec.height < 0) sourceRec.y -= sourceRec.height; + + rlEnableTexture(texture.id); - rlPushMatrix(); - rlTranslatef(destRec.x, destRec.y, 0); - rlRotatef(rotation, 0, 0, 1); - rlTranslatef(-origin.x, -origin.y, 0); + rlPushMatrix(); + rlTranslatef(destRec.x, destRec.y, 0); + rlRotatef(rotation, 0, 0, 1); + rlTranslatef(-origin.x, -origin.y, 0); - rlBegin(RL_QUADS); - rlColor4ub(tint.r, tint.g, tint.b, tint.a); - rlNormal3f(0.0f, 0.0f, 1.0f); // Normal vector pointing towards viewer + rlBegin(RL_QUADS); + rlColor4ub(tint.r, tint.g, tint.b, tint.a); + rlNormal3f(0.0f, 0.0f, 1.0f); // Normal vector pointing towards viewer - // Bottom-left corner for texture and quad - rlTexCoord2f((float)sourceRec.x / texture.width, (float)sourceRec.y / texture.height); - rlVertex2f(0.0f, 0.0f); + // Bottom-left corner for texture and quad + rlTexCoord2f((float)sourceRec.x / texture.width, (float)sourceRec.y / texture.height); + rlVertex2f(0.0f, 0.0f); - // Bottom-right corner for texture and quad - rlTexCoord2f((float)sourceRec.x / texture.width, (float)(sourceRec.y + sourceRec.height) / texture.height); - rlVertex2f(0.0f, destRec.height); + // Bottom-right corner for texture and quad + rlTexCoord2f((float)sourceRec.x / texture.width, (float)(sourceRec.y + sourceRec.height) / texture.height); + rlVertex2f(0.0f, destRec.height); - // Top-right corner for texture and quad - rlTexCoord2f((float)(sourceRec.x + sourceRec.width) / texture.width, (float)(sourceRec.y + sourceRec.height) / texture.height); - rlVertex2f(destRec.width, destRec.height); + // Top-right corner for texture and quad + rlTexCoord2f((float)(sourceRec.x + sourceRec.width) / texture.width, (float)(sourceRec.y + sourceRec.height) / texture.height); + rlVertex2f(destRec.width, destRec.height); - // Top-left corner for texture and quad - rlTexCoord2f((float)(sourceRec.x + sourceRec.width) / texture.width, (float)sourceRec.y / texture.height); - rlVertex2f(destRec.width, 0.0f); - rlEnd(); - rlPopMatrix(); + // Top-left corner for texture and quad + rlTexCoord2f((float)(sourceRec.x + sourceRec.width) / texture.width, (float)sourceRec.y / texture.height); + rlVertex2f(destRec.width, 0.0f); + rlEnd(); + rlPopMatrix(); - rlDisableTexture(); + rlDisableTexture(); + } } //---------------------------------------------------------------------------------- From 3e88156817d5de5cc413acf67f0fd0a39a69acb2 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 1 Jun 2016 12:38:06 +0200 Subject: [PATCH 6/9] Ignore invalid warning --- src/Makefile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Makefile b/src/Makefile index 12f4609b9..244675e2f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -69,12 +69,13 @@ else endif # define compiler flags: -# -O1 defines optimization level -# -Wall turns on most, but not all, compiler warnings -# -std=c99 defines C language mode (standard C from 1999 revision) -# -std=gnu99 defines C language mode (GNU C from 1999 revision) -# -fgnu89-inline declaring inline functions support (GCC optimized, faster) -CFLAGS = -O1 -Wall -std=gnu99 -fgnu89-inline +# -O1 defines optimization level +# -Wall turns on most, but not all, compiler warnings +# -std=c99 defines C language mode (standard C from 1999 revision) +# -std=gnu99 defines C language mode (GNU C from 1999 revision) +# -fgnu89-inline declaring inline functions support (GCC optimized, faster) +# -Wno-missing-braces ignore invalid warning (GCC bug 53119) +CFLAGS = -O1 -Wall -std=gnu99 -fgnu89-inline -Wno-missing-braces #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes From 0a27525a4ba2ca9f8f6c4e723b50411549d6c558 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 1 Jun 2016 14:01:35 +0200 Subject: [PATCH 7/9] Dependencies review Checking some files to be converted to header-only --- src/camera.c | 2 +- src/gestures.c | 10 +++--- src/physac.c | 4 +-- src/raygui.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++---- src/raygui.h | 43 ++++++++++++++++++++++-- 5 files changed, 130 insertions(+), 17 deletions(-) diff --git a/src/camera.c b/src/camera.c index 8e5c527e1..11571ccad 100644 --- a/src/camera.c +++ b/src/camera.c @@ -30,7 +30,7 @@ #include "raylib.h" #endif -#include +#include // Required for: sqrt(), sin(), cos() //---------------------------------------------------------------------------------- // Defines and Macros diff --git a/src/gestures.c b/src/gestures.c index d72aaf4e9..d3b85d124 100644 --- a/src/gestures.c +++ b/src/gestures.c @@ -28,19 +28,19 @@ #if defined(GESTURES_STANDALONE) #include "gestures.h" #else - #include "raylib.h" // Required for typedef(s): Vector2, Gestures + #include "raylib.h" // Required for: Vector2, Gestures #endif -#include // Used for: atan2(), sqrt() -#include // Defines int32_t, int64_t +#include // Required for: atan2(), sqrt() +#include // Required for: uint64_t #if defined(_WIN32) // Functions required to query time on Windows int __stdcall QueryPerformanceCounter(unsigned long long int *lpPerformanceCount); int __stdcall QueryPerformanceFrequency(unsigned long long int *lpFrequency); #elif defined(__linux) - #include // Declares storage size of ‘now’ - #include // Used for clock functions + #include // Required for: timespec + #include // Required for: clock_gettime() #endif //---------------------------------------------------------------------------------- diff --git a/src/physac.c b/src/physac.c index 181488ac7..eed2f26e2 100644 --- a/src/physac.c +++ b/src/physac.c @@ -29,8 +29,8 @@ #include "raylib.h" #endif -#include // Declares malloc() and free() for memory management -#include // Declares cos(), sin(), abs() and fminf() for math operations +#include // Required for: malloc(), free() +#include // Required for: cos(), sin(), abs(), fminf() //---------------------------------------------------------------------------------- // Defines and Macros diff --git a/src/raygui.c b/src/raygui.c index 95cea0b66..40d7b265d 100644 --- a/src/raygui.c +++ b/src/raygui.c @@ -5,6 +5,13 @@ * Initial design by Kevin Gato and Daniel Nicolás * Reviewed by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria (@raysan5) * +* The following functions from raylib are required for drawing and input reading: + GetColor(), GetHexValue() --> Used on SetStyleProperty() + MeasureText(), GetDefaultFont() + DrawRectangleRec(), DrawRectangle(), DrawText(), DrawLine() + GetMousePosition(), (), IsMouseButtonDown(), IsMouseButtonReleased() + 'FormatText(), IsKeyDown(), 'IsMouseButtonUp() +* * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. * @@ -22,12 +29,20 @@ * **********************************************************************************************/ -#include "raygui.h" +#define RAYGUI_STANDALONE // NOTE: To use the raygui module as standalone lib, just uncomment this line + // NOTE: Some external funtions are required for drawing and input management -#include -#include -#include // Required for malloc(), free() -#include // Required for strcmp() +#if defined(RAYGUI_STANDALONE) + #include "raygui.h" +#else + #include "raylib.h" +#endif + +#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf() + // NOTE: Those functions are only used in SaveGuiStyle() and LoadGuiStyle() + +#include // Required for: malloc(), free() +#include // Required for: strcmp() //---------------------------------------------------------------------------------- // Defines and Macros @@ -157,6 +172,21 @@ static int style[NUM_PROPERTIES] = { //---------------------------------------------------------------------------------- static Color ColorMultiply(Color baseColor, float value); +#if defined RAYGUI_STANDALONE +static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value +static int GetHexValue(Color color); // Returns hexadecimal value for a Color +static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle + +// NOTE: raygui depend on some raylib input and drawing functions +// TODO: Set your own input functions (used in ProcessCamera()) +static Vector2 GetMousePosition() { return (Vector2){ 0.0f, 0.0f }; } +static int IsMouseButtonDown(int button) { return 0; } +static int IsMouseButtonPressed(int button) { return 0; } +static int IsMouseButtonReleased(int button) { return 0; } +static int IsMouseButtonUp(int button) { return 0; } +static int IsKeyDown(int key) { return 0; } +#endif + //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- @@ -164,7 +194,7 @@ static Color ColorMultiply(Color baseColor, float value); // Label element, show text void GuiLabel(Rectangle bounds, const char *text) { - GuiLabelEx(bounds,text, GetColor(style[LABEL_TEXT_COLOR]), BLANK, BLANK); + GuiLabelEx(bounds, text, GetColor(style[LABEL_TEXT_COLOR]), BLANK, BLANK); } // Label element extended, configurable colors @@ -1051,4 +1081,48 @@ static Color ColorMultiply(Color baseColor, float value) multColor.b += (255 - multColor.b)*value; return multColor; -} \ No newline at end of file +} + +#if defined (RAYGUI_STANDALONE) +// Returns a Color struct from hexadecimal value +static Color GetColor(int hexValue) +{ + Color color; + + color.r = (unsigned char)(hexValue >> 24) & 0xFF; + color.g = (unsigned char)(hexValue >> 16) & 0xFF; + color.b = (unsigned char)(hexValue >> 8) & 0xFF; + color.a = (unsigned char)hexValue & 0xFF; + + return color; +} + +// Returns hexadecimal value for a Color +static int GetHexValue(Color color) +{ + return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); +} + +// Check if point is inside rectangle +static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) +{ + bool collision = false; + + if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; + + return collision; +} + +// Formatting of text with variables to 'embed' +static const char *FormatText(const char *text, ...) +{ + static char buffer[MAX_FORMATTEXT_LENGTH]; + + va_list args; + va_start(args, text); + vsprintf(buffer, text, args); + va_end(args); + + return buffer; +} +#endif \ No newline at end of file diff --git a/src/raygui.h b/src/raygui.h index 6906eca71..3951e087c 100644 --- a/src/raygui.h +++ b/src/raygui.h @@ -23,16 +23,55 @@ #ifndef RAYGUI_H #define RAYGUI_H -#include "raylib.h" +//#include "raylib.h" //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- -#define NUM_PROPERTIES 98 +#define NUM_PROPERTIES 98 + +#define BLANK (Color){ 0, 0, 0, 0 } // Blank (Transparent) + +#define KEY_LEFT 263 +#define KEY_RIGHT 262 + +#define MOUSE_LEFT_BUTTON 0 + //---------------------------------------------------------------------------------- // Types and Structures Definition +// NOTE: Some types are required for RAYGUI_STANDALONE usage //---------------------------------------------------------------------------------- +#ifndef __cplusplus +// Boolean type + #ifndef true + typedef enum { false, true } bool; + #endif +#endif + +// Vector2 type +typedef struct Vector2 { + float x; + float y; +} Vector2; + +// Color type, RGBA (32bit) +typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; +} Color; + +// Rectangle type +typedef struct Rectangle { + int x; + int y; + int width; + int height; +} Rectangle; + +// Gui properties enumeration typedef enum GuiProperty { GLOBAL_BASE_COLOR = 0, GLOBAL_BORDER_COLOR, From 7afa0b09ab00b610ad084026022df788fb787229 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 2 Jun 2016 01:24:27 +0200 Subject: [PATCH 8/9] Support raygui as standalone library --- src/raygui.c | 57 ++++++++++++++++++++++++++++------------------- src/raygui.h | 62 ++++++++++++++++++++++++---------------------------- 2 files changed, 62 insertions(+), 57 deletions(-) diff --git a/src/raygui.c b/src/raygui.c index 40d7b265d..266ecc6a5 100644 --- a/src/raygui.c +++ b/src/raygui.c @@ -5,13 +5,6 @@ * Initial design by Kevin Gato and Daniel Nicolás * Reviewed by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria (@raysan5) * -* The following functions from raylib are required for drawing and input reading: - GetColor(), GetHexValue() --> Used on SetStyleProperty() - MeasureText(), GetDefaultFont() - DrawRectangleRec(), DrawRectangle(), DrawText(), DrawLine() - GetMousePosition(), (), IsMouseButtonDown(), IsMouseButtonReleased() - 'FormatText(), IsKeyDown(), 'IsMouseButtonUp() -* * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. * @@ -29,25 +22,30 @@ * **********************************************************************************************/ -#define RAYGUI_STANDALONE // NOTE: To use the raygui module as standalone lib, just uncomment this line +//#define RAYGUI_STANDALONE // To use the raygui module as standalone lib, just uncomment this line // NOTE: Some external funtions are required for drawing and input management -#if defined(RAYGUI_STANDALONE) - #include "raygui.h" -#else +#if !defined(RAYGUI_STANDALONE) #include "raylib.h" #endif +#include "raygui.h" + #include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf() // NOTE: Those functions are only used in SaveGuiStyle() and LoadGuiStyle() #include // Required for: malloc(), free() #include // Required for: strcmp() +#include // Required for: va_list, va_start(), vfprintf(), va_end() //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- -//... +#if defined(RAYGUI_STANDALONE) + #define KEY_LEFT 263 + #define KEY_RIGHT 262 + #define MOUSE_LEFT_BUTTON 0 +#endif //---------------------------------------------------------------------------------- // Types and Structures Definition @@ -65,7 +63,7 @@ typedef enum { SLIDER_DEFAULT, SLIDER_HOVER, SLIDER_ACTIVE } SliderState; // Global Variables Definition //---------------------------------------------------------------------------------- -//Current GUI style (default light) +// Current GUI style (default light) static int style[NUM_PROPERTIES] = { 0xf5f5f5ff, // GLOBAL_BASE_COLOR, 0xf5f5f5ff, // GLOBAL_BORDER_COLOR, @@ -176,15 +174,24 @@ static Color ColorMultiply(Color baseColor, float value); static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value static int GetHexValue(Color color); // Returns hexadecimal value for a Color static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +static const char *FormatText(const char *text, ...); // Formatting of text with variables to 'embed' // NOTE: raygui depend on some raylib input and drawing functions -// TODO: Set your own input functions (used in ProcessCamera()) +// TODO: Set your own functions static Vector2 GetMousePosition() { return (Vector2){ 0.0f, 0.0f }; } static int IsMouseButtonDown(int button) { return 0; } static int IsMouseButtonPressed(int button) { return 0; } static int IsMouseButtonReleased(int button) { return 0; } static int IsMouseButtonUp(int button) { return 0; } -static int IsKeyDown(int key) { return 0; } + +static int GetKeyPressed(void) { return 0; } // NOTE: Only used by GuiTextBox() +static int IsKeyDown(int key) { return 0; } // NOTE: Only used by GuiSpinner() + +static int MeasureText(const char *text, int fontSize) { return 0; } +static void DrawText(const char *text, int posX, int posY, int fontSize, Color color) { } +static void DrawRectangleRec(Rectangle rec, Color color) { } +static void DrawRectangle(int posX, int posY, int width, int height, Color color) { DrawRectangleRec((Rectangle){ posX, posY, width, height }, color); } + #endif //---------------------------------------------------------------------------------- @@ -194,6 +201,8 @@ static int IsKeyDown(int key) { return 0; } // Label element, show text void GuiLabel(Rectangle bounds, const char *text) { + #define BLANK (Color){ 0, 0, 0, 0 } // Blank (Transparent) + GuiLabelEx(bounds, text, GetColor(style[LABEL_TEXT_COLOR]), BLANK, BLANK); } @@ -203,7 +212,7 @@ void GuiLabelEx(Rectangle bounds, const char *text, Color textColor, Color borde // Update control //-------------------------------------------------------------------- int textWidth = MeasureText(text, style[GLOBAL_TEXT_FONTSIZE]); - int textHeight = GetDefaultFont().size; + int textHeight = style[GLOBAL_TEXT_FONTSIZE]; if (bounds.width < textWidth) bounds.width = textWidth + style[LABEL_TEXT_PADDING]; if (bounds.height < textHeight) bounds.height = textHeight + style[LABEL_TEXT_PADDING]/2; @@ -224,7 +233,7 @@ bool GuiButton(Rectangle bounds, const char *text) Vector2 mousePoint = GetMousePosition(); int textWidth = MeasureText(text, style[GLOBAL_TEXT_FONTSIZE]); - int textHeight = GetDefaultFont().size; + int textHeight = style[GLOBAL_TEXT_FONTSIZE]; // Update control //-------------------------------------------------------------------- @@ -282,7 +291,7 @@ bool GuiToggleButton(Rectangle bounds, const char *text, bool toggle) Vector2 mousePoint = GetMousePosition(); int textWidth = MeasureText(text, style[GLOBAL_TEXT_FONTSIZE]); - int textHeight = GetDefaultFont().size; + int textHeight = style[GLOBAL_TEXT_FONTSIZE]; // Update control //-------------------------------------------------------------------- @@ -367,7 +376,7 @@ int GuiComboBox(Rectangle bounds, int comboNum, char **comboText, int comboActiv Rectangle click = { bounds.x + bounds.width + style[COMBOBOX_PADDING], bounds.y, style[COMBOBOX_BUTTON_WIDTH], style[COMBOBOX_BUTTON_HEIGHT] }; Vector2 mousePoint = GetMousePosition(); - int textHeight = GetDefaultFont().size; + int textHeight = style[GLOBAL_TEXT_FONTSIZE]; for (int i = 0; i < comboNum; i++) { @@ -657,9 +666,8 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue) Rectangle rightButtonBound = { bounds.x + bounds.width - bounds.width/4 + 1, bounds.y, bounds.width/4, bounds.height }; Vector2 mousePoint = GetMousePosition(); - int textHeight = GetDefaultFont().size; - int textWidth = MeasureText(FormatText("%i", value), style[GLOBAL_TEXT_FONTSIZE]); + int textHeight = style[GLOBAL_TEXT_FONTSIZE]; int buttonSide = 0; @@ -894,10 +902,11 @@ char *GuiTextBox(Rectangle bounds, char *text) DrawText(FormatText("%c", text[i]), initPos, bounds.y + style[TEXTBOX_TEXT_FONTSIZE], style[TEXTBOX_TEXT_FONTSIZE], GetColor(style[TEXTBOX_TEXT_COLOR])); - initPos += ((GetDefaultFont().charRecs[(int)text[i] - 32].width + 2)); + initPos += (MeasureText(FormatText("%c", text[i]), style[GLOBAL_TEXT_FONTSIZE]) + 2); + //initPos += ((GetDefaultFont().charRecs[(int)text[i] - 32].width + 2)); } - if ((framesCounter/20)%2 && CheckCollisionPointRec(mousePoint, bounds)) DrawLine(initPos + 2, bounds.y + 5, initPos + 2, bounds.y + 10 + 15, GetColor(style[TEXTBOX_LINE_COLOR])); + if ((framesCounter/20)%2 && CheckCollisionPointRec(mousePoint, bounds)) DrawRectangle(initPos + 2, bounds.y + 5, 1, 20, GetColor(style[TEXTBOX_LINE_COLOR])); //-------------------------------------------------------------------- return text; @@ -1116,6 +1125,8 @@ static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) // Formatting of text with variables to 'embed' static const char *FormatText(const char *text, ...) { + #define MAX_FORMATTEXT_LENGTH 64 + static char buffer[MAX_FORMATTEXT_LENGTH]; va_list args; diff --git a/src/raygui.h b/src/raygui.h index 3951e087c..617412549 100644 --- a/src/raygui.h +++ b/src/raygui.h @@ -30,47 +30,41 @@ //---------------------------------------------------------------------------------- #define NUM_PROPERTIES 98 -#define BLANK (Color){ 0, 0, 0, 0 } // Blank (Transparent) - -#define KEY_LEFT 263 -#define KEY_RIGHT 262 - -#define MOUSE_LEFT_BUTTON 0 - - //---------------------------------------------------------------------------------- // Types and Structures Definition // NOTE: Some types are required for RAYGUI_STANDALONE usage //---------------------------------------------------------------------------------- -#ifndef __cplusplus -// Boolean type - #ifndef true - typedef enum { false, true } bool; +#if defined(RAYGUI_STANDALONE) + #ifndef __cplusplus + // Boolean type + #ifndef true + typedef enum { false, true } bool; + #endif #endif + + // Vector2 type + typedef struct Vector2 { + float x; + float y; + } Vector2; + + // Color type, RGBA (32bit) + typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; + } Color; + + // Rectangle type + typedef struct Rectangle { + int x; + int y; + int width; + int height; + } Rectangle; #endif -// Vector2 type -typedef struct Vector2 { - float x; - float y; -} Vector2; - -// Color type, RGBA (32bit) -typedef struct Color { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char a; -} Color; - -// Rectangle type -typedef struct Rectangle { - int x; - int y; - int width; - int height; -} Rectangle; - // Gui properties enumeration typedef enum GuiProperty { GLOBAL_BASE_COLOR = 0, From 17878550b1e2dde44fcd1e668c92ca2d96680a28 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 2 Jun 2016 01:26:44 +0200 Subject: [PATCH 9/9] Review heades usage This is a first step toward a bigger project. Some modules could be ported to header-only to be used as standalone. --- src/audio.c | 16 ++++++++-------- src/models.c | 18 +++++++++--------- src/rlgl.c | 30 +++++++++++++++--------------- src/rlgl.h | 6 +++--- src/text.c | 12 ++++++------ src/textures.c | 10 ++++++---- src/utils.c | 10 +++++----- src/utils.h | 4 ++-- 8 files changed, 54 insertions(+), 52 deletions(-) diff --git a/src/audio.c b/src/audio.c index 0c61c0fa8..a884303c0 100644 --- a/src/audio.c +++ b/src/audio.c @@ -37,24 +37,24 @@ #include "AL/al.h" // OpenAL basic header #include "AL/alc.h" // OpenAL context header (like OpenGL, OpenAL requires a context to work) -#include "AL/alext.h" // extensions for other format types +#include "AL/alext.h" // OpenAL extensions for other format types -#include // Declares malloc() and free() for memory management -#include // Required for strcmp() -#include // Used for .WAV loading +#include // Required for: malloc(), free() +#include // Required for: strcmp(), strncmp() +#include // Required for: FILE, fopen(), fclose(), fread() #if defined(AUDIO_STANDALONE) - #include // Used for functions with variable number of parameters (TraceLog()) + #include // Required for: va_list, va_start(), vfprintf(), va_end() #else - #include "utils.h" // rRES data decompression utility function - // NOTE: Includes Android fopen function map + #include "utils.h" // Required for: DecompressData() + // NOTE: Includes Android fopen() function map #endif //#define STB_VORBIS_HEADER_ONLY #include "stb_vorbis.h" // OGG loading functions #define JAR_XM_IMPLEMENTATION -#include "jar_xm.h" // For playing .xm files +#include "jar_xm.h" // XM loading functions //---------------------------------------------------------------------------------- // Defines and Macros diff --git a/src/models.c b/src/models.c index 962a64705..15565c98c 100644 --- a/src/models.c +++ b/src/models.c @@ -26,16 +26,16 @@ #include "raylib.h" #if defined(PLATFORM_ANDROID) - #include "utils.h" // Android fopen function map + #include "utils.h" // Android fopen function map #endif -#include // Standard input/output functions, used to read model files data -#include // Declares malloc() and free() for memory management -#include // Required for strcmp() -#include // Used for sin, cos, tan +#include // Required for: FILE, fopen(), fclose(), fscanf(), feof(), rewind(), fgets() +#include // Required for: malloc(), free() +#include // Required for: strcmp() +#include // Required for: sin(), cos() -#include "rlgl.h" // raylib OpenGL abstraction layer to OpenGL 1.1, 3.3+ or ES2 -#include "raymath.h" // Required for data type Matrix and Matrix functions +#include "rlgl.h" // raylib OpenGL abstraction layer to OpenGL 1.1, 3.3+ or ES2 +#include "raymath.h" // Matrix data type and Matrix functions //---------------------------------------------------------------------------------- // Defines and Macros @@ -605,7 +605,7 @@ Model LoadModel(const char *fileName) // TODO: Initialize default data for model in case loading fails, maybe a cube? - if (strcmp(GetExtension(fileName),"obj") == 0) model.mesh = LoadOBJ(fileName); + if (strcmp(GetExtension(fileName), "obj") == 0) model.mesh = LoadOBJ(fileName); else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName); if (model.mesh.vertexCount == 0) TraceLog(WARNING, "Model could not be loaded"); @@ -764,7 +764,7 @@ Material LoadMaterial(const char *fileName) { Material material = { 0 }; - if (strcmp(GetExtension(fileName),"mtl") == 0) material = LoadMTL(fileName); + if (strcmp(GetExtension(fileName), "mtl") == 0) material = LoadMTL(fileName); else TraceLog(WARNING, "[%s] Material extension not recognized, it can't be loaded", fileName); return material; diff --git a/src/rlgl.c b/src/rlgl.c index aa536e2a2..cca48ba27 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -28,41 +28,41 @@ #include "rlgl.h" -#include // Standard input / output lib -#include // Declares malloc() and free() for memory management, rand() -#include // Declares strcmp(), strlen(), strtok() +#include // Standard input / output lib +#include // Required for: malloc(), free(), rand() +#include // Required for: strcmp(), strlen(), strtok() #ifndef RLGL_STANDALONE - #include "raymath.h" // Required for Vector3 and Matrix functions + #include "raymath.h" // Required for Vector3 and Matrix functions #endif #if defined(GRAPHICS_API_OPENGL_11) - #ifdef __APPLE__ // OpenGL include for OSX - #include + #ifdef __APPLE__ + #include // OpenGL 1.1 library for OSX #else - #include // Basic OpenGL include + #include // OpenGL 1.1 library #endif #endif #if defined(GRAPHICS_API_OPENGL_33) - #ifdef __APPLE__ // OpenGL include for OSX - #include + #ifdef __APPLE__ + #include // OpenGL 3 library for OSX #else //#define GLEW_STATIC //#include // GLEW header, includes OpenGL headers - #include "glad.h" // glad header, includes OpenGL headers + #include "glad.h" // GLAD library, includes OpenGL headers #endif #endif #if defined(GRAPHICS_API_OPENGL_ES2) - #include - #include - #include + #include // EGL library + #include // OpenGL ES 2.0 library + #include // OpenGL ES 2.0 extensions library #endif #if defined(RLGL_STANDALONE) - #include // Used for functions with variable number of parameters (TraceLog()) -#endif + #include // Required for: va_list, va_start(), vfprintf(), va_end() +#endif // NOTE: Used on TraceLog() //---------------------------------------------------------------------------------- // Defines and Macros diff --git a/src/rlgl.h b/src/rlgl.h index e8e754b43..00482d2ed 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -32,15 +32,15 @@ //#define RLGL_STANDALONE // NOTE: To use rlgl as standalone lib, just uncomment this line #ifndef RLGL_STANDALONE - #include "raylib.h" // Required for typedef(s): Model, Shader, Texture2D - #include "utils.h" // Required for function TraceLog() + #include "raylib.h" // Required for: Model, Shader, Texture2D + #include "utils.h" // Required for: TraceLog() #endif #ifdef RLGL_STANDALONE #define RAYMATH_STANDALONE #endif -#include "raymath.h" // Required for types: Vector3, Matrix +#include "raymath.h" // Required for: Vector3, Matrix // Select desired OpenGL version // NOTE: Those preprocessor defines are only used on rlgl module, diff --git a/src/text.c b/src/text.c index 7bb06f442..cef0ebcbf 100644 --- a/src/text.c +++ b/src/text.c @@ -25,16 +25,16 @@ #include "raylib.h" -#include // Declares malloc() and free() for memory management -#include // String management functions (just strlen() is used) -#include // Used for functions with variable number of parameters (FormatText()) -#include // Standard input / output lib +#include // Required for: malloc(), free() +#include // Required for: strlen() +#include // Required for: va_list, va_start(), vfprintf(), va_end() +#include // Required for: FILE, fopen(), fclose(), fscanf(), feof(), rewind(), fgets() -#include "utils.h" // Required for function GetExtension() +#include "utils.h" // Required for: GetExtension() // Following libs are used on LoadTTF() #define STB_TRUETYPE_IMPLEMENTATION -#include "stb_truetype.h" +#include "stb_truetype.h" // Required for: stbtt_BakeFontBitmap() // Rectangle packing functions (not used at the moment) //#define STB_RECT_PACK_IMPLEMENTATION diff --git a/src/textures.c b/src/textures.c index 8c59f3f24..432d34266 100644 --- a/src/textures.c +++ b/src/textures.c @@ -29,8 +29,8 @@ #include "raylib.h" -#include // Declares malloc() and free() for memory management -#include // Required for strcmp(), strrchr(), strncmp() +#include // Required for: malloc(), free() +#include // Required for: strcmp(), strrchr(), strncmp() #include "rlgl.h" // raylib OpenGL abstraction layer to OpenGL 1.1, 3.3 or ES2 // Required: rlglLoadTexture() rlDeleteTextures(), @@ -40,10 +40,12 @@ // NOTE: Includes Android fopen function map #define STB_IMAGE_IMPLEMENTATION -#include "stb_image.h" // Used to read image data (multiple formats support) +#include "stb_image.h" // Required for: stbi_load() + // NOTE: Used to read image data (multiple formats support) #define STB_IMAGE_RESIZE_IMPLEMENTATION -#include "stb_image_resize.h" // Used on image scaling function: ImageResize() +#include "stb_image_resize.h" // Required for: stbir_resize_uint8() + // NOTE: Used for image scaling on ImageResize() //---------------------------------------------------------------------------------- // Defines and Macros diff --git a/src/utils.c b/src/utils.c index f0ccf3e2b..97561ee67 100644 --- a/src/utils.c +++ b/src/utils.c @@ -35,14 +35,14 @@ #include #endif -#include // malloc(), free() -#include // printf(), fprintf() -#include // Used for functions with variable number of parameters (TraceLog()) -//#include // String management functions: strlen(), strrchr(), strcmp() +#include // Required for: malloc(), free() +#include // Required for: fopen(), fclose(), fputc(), fwrite(), printf(), fprintf(), funopen() +#include // Required for: va_list, va_start(), vfprintf(), va_end() +//#include // Required for: strlen(), strrchr(), strcmp() #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI) #define STB_IMAGE_WRITE_IMPLEMENTATION - #include "stb_image_write.h" // Create PNG file + #include "stb_image_write.h" // Required for: stbi_write_png() #endif #include "tinfl.c" diff --git a/src/utils.h b/src/utils.h index 77909ba6b..899cf5836 100644 --- a/src/utils.h +++ b/src/utils.h @@ -27,8 +27,8 @@ #define UTILS_H #if defined(PLATFORM_ANDROID) - #include // Defines FILE struct - #include // defines AAssetManager struct + #include // Required for: FILE + #include // Required for: AAssetManager #endif //----------------------------------------------------------------------------------