diff --git a/Extra2D/include/effects/custom_effect_manager.h b/Extra2D/include/effects/custom_effect_manager.h deleted file mode 100644 index 842e79c..0000000 --- a/Extra2D/include/effects/custom_effect_manager.h +++ /dev/null @@ -1,324 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace extra2d { - -// ============================================================================ -// 自定义特效类型 -// ============================================================================ -enum class CustomEffectType { - Particle, // 粒子特效 - PostProcess, // 后处理特效 - Shader, // Shader特效 - Combined // 组合特效 -}; - -// ============================================================================ -// 自定义特效配置 -// ============================================================================ -struct CustomEffectConfig { - std::string name; // 特效名称 - CustomEffectType type; // 特效类型 - std::string description; // 描述 - - // 粒子特效配置 - EmitterConfig emitterConfig; - - // 后处理特效配置 - std::string shaderVertPath; // 顶点着色器路径 - std::string shaderFragPath; // 片段着色器路径 - std::unordered_map shaderParams; // Shader参数 - - // 通用配置 - float duration; // 持续时间(-1表示无限) - bool loop; // 是否循环 - float delay; // 延迟启动时间 -}; - -// ============================================================================ -// 自定义特效基类 -// ============================================================================ -class CustomEffect { -public: - explicit CustomEffect(const CustomEffectConfig &config); - virtual ~CustomEffect() = default; - - // ------------------------------------------------------------------------ - // 生命周期 - // ------------------------------------------------------------------------ - virtual bool init(); - virtual void update(float dt); - virtual void render(RenderBackend &renderer); - virtual void shutdown(); - - // ------------------------------------------------------------------------ - // 控制 - // ------------------------------------------------------------------------ - void play(); - void pause(); - void stop(); - void reset(); - - bool isPlaying() const { return playing_; } - bool isFinished() const { return finished_; } - float getElapsedTime() const { return elapsedTime_; } - - // ------------------------------------------------------------------------ - // 配置 - // ------------------------------------------------------------------------ - const std::string &getName() const { return config_.name; } - const CustomEffectConfig &getConfig() const { return config_; } - - void setPosition(const Vec2 &pos) { position_ = pos; } - void setRotation(float rot) { rotation_ = rot; } - void setScale(float scale) { scale_ = scale; } - - Vec2 getPosition() const { return position_; } - float getRotation() const { return rotation_; } - float getScale() const { return scale_; } - -protected: - CustomEffectConfig config_; - Vec2 position_ = Vec2::Zero(); - float rotation_ = 0.0f; - float scale_ = 1.0f; - - bool playing_ = false; - bool paused_ = false; - bool finished_ = false; - float elapsedTime_ = 0.0f; - float delayTimer_ = 0.0f; -}; - -// ============================================================================ -// 自定义粒子特效 -// ============================================================================ -class CustomParticleEffect : public CustomEffect { -public: - explicit CustomParticleEffect(const CustomEffectConfig &config); - - bool init() override; - void update(float dt) override; - void render(RenderBackend &renderer) override; - void shutdown() override; - - void play(); - void stop(); - - Ptr getEmitter() { return emitter_; } - -private: - Ptr particleSystem_; - Ptr emitter_; -}; - -// ============================================================================ -// 自定义后处理特效 -// ============================================================================ -class CustomPostProcessEffect : public CustomEffect, public PostProcessEffect { -public: - explicit CustomPostProcessEffect(const CustomEffectConfig &config); - - bool init() override; - void update(float dt) override; - void shutdown() override; - - void onShaderBind(GLShader &shader) override; - - void setParam(const std::string &name, float value); - float getParam(const std::string &name) const; - -private: - std::unordered_map runtimeParams_; -}; - -// ============================================================================ -// 自定义特效工厂 -// ============================================================================ -class CustomEffectFactory { -public: - using EffectCreator = - std::function(const CustomEffectConfig &)>; - - static CustomEffectFactory &getInstance(); - - // 注册自定义特效创建器 - void registerEffect(const std::string &typeName, EffectCreator creator); - - // 创建特效 - Ptr create(const std::string &typeName, - const CustomEffectConfig &config); - - // 检查是否已注册 - bool isRegistered(const std::string &typeName) const; - - // 获取所有已注册的类型 - std::vector getRegisteredTypes() const; - -private: - CustomEffectFactory() = default; - ~CustomEffectFactory() = default; - CustomEffectFactory(const CustomEffectFactory &) = delete; - CustomEffectFactory &operator=(const CustomEffectFactory &) = delete; - - std::unordered_map creators_; -}; - -// ============================================================================ -// 自定义特效管理器 -// ============================================================================ -class CustomEffectManager { -public: - static CustomEffectManager &getInstance(); - - // ------------------------------------------------------------------------ - // 初始化和关闭 - // ------------------------------------------------------------------------ - bool init(); - void shutdown(); - - // ------------------------------------------------------------------------ - // 特效管理 - // ------------------------------------------------------------------------ - - /** - * @brief 从文件加载特效配置(支持JSON和文本格式) - * 自动检测格式:JSON格式优先,失败则回退到文本格式 - */ - bool loadFromFile(const std::string &filepath); - - /** - * @brief 从文本文件加载特效配置(简化格式) - * 格式:每行一个参数,如 EMISSION 100 - */ - bool loadFromTextFile(const std::string &filepath); - - /** - * @brief 保存特效配置到文件 - * @param useJson true=JSON格式, false=文本格式 - */ - bool saveToFile(const std::string &name, const std::string &filepath, - bool useJson = true); - - /** - * @brief 保存所有特效配置到一个JSON文件 - */ - bool saveAllToFile(const std::string &filepath); - - /** - * @brief 注册特效配置 - */ - void registerConfig(const std::string &name, - const CustomEffectConfig &config); - - /** - * @brief 获取特效配置 - */ - CustomEffectConfig *getConfig(const std::string &name); - - /** - * @brief 移除特效配置 - */ - void removeConfig(const std::string &name); - - /** - * @brief 获取所有配置名称 - */ - std::vector getConfigNames() const; - - // ------------------------------------------------------------------------ - // 特效实例管理 - // ------------------------------------------------------------------------ - - /** - * @brief 创建特效实例 - */ - Ptr createEffect(const std::string &name); - - /** - * @brief 从配置直接创建特效 - */ - Ptr createEffectFromConfig(const CustomEffectConfig &config); - - /** - * @brief 销毁特效实例 - */ - void destroyEffect(Ptr effect); - - /** - * @brief 更新所有特效 - */ - void update(float dt); - - /** - * @brief 渲染所有特效 - */ - void render(RenderBackend &renderer); - - /** - * @brief 停止所有特效 - */ - void stopAll(); - - // ------------------------------------------------------------------------ - // 便捷方法 - // ------------------------------------------------------------------------ - - /** - * @brief 播放特效(简写) - */ - Ptr play(const std::string &name, const Vec2 &position); - - /** - * @brief 播放特效并自动销毁 - */ - void playOneShot(const std::string &name, const Vec2 &position); - -private: - CustomEffectManager() = default; - ~CustomEffectManager() = default; - CustomEffectManager(const CustomEffectManager &) = delete; - CustomEffectManager &operator=(const CustomEffectManager &) = delete; - - std::unordered_map configs_; - std::vector> activeEffects_; -}; - -// ============================================================================ -// 便捷宏 -// ============================================================================ -#define E2D_CUSTOM_EFFECT_MANAGER() \ - ::extra2d::CustomEffectManager::getInstance() -#define E2D_CUSTOM_EFFECT_FACTORY() \ - ::extra2d::CustomEffectFactory::getInstance() - -// ============================================================================ -// 预设特效快速创建 -// ============================================================================ -class EffectBuilder { -public: - // 粒子特效 - static CustomEffectConfig Particle(const std::string &name); - static CustomEffectConfig Fire(const std::string &name); - static CustomEffectConfig Smoke(const std::string &name); - static CustomEffectConfig Explosion(const std::string &name); - static CustomEffectConfig Magic(const std::string &name); - static CustomEffectConfig Sparkle(const std::string &name); - - // 后处理特效 - static CustomEffectConfig Bloom(const std::string &name); - static CustomEffectConfig Blur(const std::string &name); - static CustomEffectConfig Vignette(const std::string &name); - static CustomEffectConfig ColorGrading(const std::string &name); -}; - -} // namespace extra2d diff --git a/Extra2D/include/effects/particle_system.h b/Extra2D/include/effects/particle_system.h deleted file mode 100644 index cfdd285..0000000 --- a/Extra2D/include/effects/particle_system.h +++ /dev/null @@ -1,300 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace extra2d { - -// ============================================================================ -// 快速随机数生成器 - 使用 xorshift 算法,比 std::mt19937 更快 -// ============================================================================ -class FastRNG { -public: - explicit FastRNG(uint32_t seed = 0) : state_(seed ? seed : 0x853c49e67) {} - - float nextFloat() { - return static_cast(next()) / static_cast(UINT32_MAX); - } - - float nextFloat(float min, float max) { - return min + (max - min) * nextFloat(); - } - -private: - uint32_t state_; - - uint32_t next() { - uint32_t x = state_; - x ^= x << 13; - x ^= x >> 17; - x ^= x << 5; - state_ = x; - return x; - } -}; - -// ============================================================================ -// 粒子数据 -// ============================================================================ -struct Particle { - Vec2 position; - Vec2 velocity; - Vec2 acceleration; - float rotation; - float angularVelocity; - float size; - float sizeDelta; - Color color; - Color colorDelta; - float life; - float maxLife; - bool active; - - Particle() - : position(Vec2::Zero()), velocity(Vec2::Zero()), - acceleration(Vec2::Zero()), rotation(0.0f), angularVelocity(0.0f), - size(1.0f), sizeDelta(0.0f), color(Colors::White), - colorDelta(Colors::Transparent), life(0.0f), maxLife(1.0f), - active(false) {} -}; - -// ============================================================================ -// 发射器配置 -// ============================================================================ -struct EmitterConfig { - // 发射速率 - float emissionRate = 100.0f; // 每秒发射粒子数 - float emissionDuration = -1.0f; // 发射持续时间(-1表示无限) - - // 粒子生命周期 - float minLife = 1.0f; - float maxLife = 2.0f; - - // 粒子大小 - float minStartSize = 10.0f; - float maxStartSize = 20.0f; - float minEndSize = 0.0f; - float maxEndSize = 5.0f; - - // 粒子速度 - Vec2 minVelocity = Vec2(-50.0f, -50.0f); - Vec2 maxVelocity = Vec2(50.0f, 50.0f); - - // 粒子加速度 - Vec2 acceleration = Vec2(0.0f, -100.0f); // 重力 - - // 粒子旋转 - float minRotation = 0.0f; - float maxRotation = 360.0f; - float minAngularVelocity = -90.0f; - float maxAngularVelocity = 90.0f; - - // 颜色 - Color startColor = Colors::White; - Color endColor = Colors::Transparent; - - // 发射形状 - enum class Shape { - Point, // 点发射 - Circle, // 圆形区域 - Rectangle, // 矩形区域 - Cone // 锥形 - }; - Shape shape = Shape::Point; - float shapeRadius = 50.0f; // 圆形/锥形半径 - Vec2 shapeSize = Vec2(100.0f, 100.0f); // 矩形大小 - float coneAngle = 45.0f; // 锥形角度 - - // 纹理 - Ptr texture = nullptr; - - // 混合模式 - BlendMode blendMode = BlendMode::Additive; -}; - -// ============================================================================ -// 粒子发射器 -// ============================================================================ -class ParticleEmitter { -public: - ParticleEmitter(); - ~ParticleEmitter() = default; - - // 形状生成函数(公有,用于查找表) - Vec2 randomPointShape(); - Vec2 randomCircleShape(); - Vec2 randomRectangleShape(); - Vec2 randomConeShape(); - - // ------------------------------------------------------------------------ - // 初始化和关闭 - // ------------------------------------------------------------------------ - bool init(size_t maxParticles); - void shutdown(); - - // ------------------------------------------------------------------------ - // 配置 - // ------------------------------------------------------------------------ - void setConfig(const EmitterConfig &config) { config_ = config; } - const EmitterConfig &getConfig() const { return config_; } - - // 链式配置API - ParticleEmitter &withEmissionRate(float rate) { - config_.emissionRate = rate; - return *this; - } - ParticleEmitter &withLife(float minLife, float maxLife) { - config_.minLife = minLife; - config_.maxLife = maxLife; - return *this; - } - ParticleEmitter &withSize(float minStart, float maxStart, float minEnd = 0.0f, - float maxEnd = 0.0f) { - config_.minStartSize = minStart; - config_.maxStartSize = maxStart; - config_.minEndSize = minEnd; - config_.maxEndSize = maxEnd; - return *this; - } - ParticleEmitter &withVelocity(const Vec2 &minVel, const Vec2 &maxVel) { - config_.minVelocity = minVel; - config_.maxVelocity = maxVel; - return *this; - } - ParticleEmitter &withAcceleration(const Vec2 &accel) { - config_.acceleration = accel; - return *this; - } - ParticleEmitter &withColor(const Color &start, const Color &end) { - config_.startColor = start; - config_.endColor = end; - return *this; - } - ParticleEmitter &withTexture(Ptr texture) { - config_.texture = texture; - return *this; - } - ParticleEmitter &withBlendMode(BlendMode mode) { - config_.blendMode = mode; - return *this; - } - - // ------------------------------------------------------------------------ - // 发射控制 - // ------------------------------------------------------------------------ - void start(); - void stop(); - void burst(int count); // 爆发发射 - void reset(); - bool isEmitting() const { return emitting_; } - - // ------------------------------------------------------------------------ - // 更新和渲染 - // ------------------------------------------------------------------------ - void update(float dt); - void render(RenderBackend &renderer); - - // ------------------------------------------------------------------------ - // 状态查询 - // ------------------------------------------------------------------------ - size_t getActiveParticleCount() const { return activeCount_; } - size_t getMaxParticles() const { return particles_.size(); } - bool isActive() const { return activeCount_ > 0 || emitting_; } - - // ------------------------------------------------------------------------ - // 变换 - // ------------------------------------------------------------------------ - void setPosition(const Vec2 &pos) { position_ = pos; } - void setRotation(float rot) { rotation_ = rot; } - Vec2 getPosition() const { return position_; } - float getRotation() const { return rotation_; } - -private: - EmitterConfig config_; - std::vector particles_; - size_t activeCount_ = 0; - - Vec2 position_ = Vec2::Zero(); - float rotation_ = 0.0f; - - bool emitting_ = false; - float emissionTimer_ = 0.0f; - float emissionTime_ = 0.0f; - - FastRNG rng_; // 使用快速 RNG 替代 std::mt19937 - - void emitParticle(); - float randomFloat(float min, float max); - Vec2 randomPointInShape(); - Vec2 randomVelocity(); -}; - -// ============================================================================ -// 粒子系统 - 管理多个发射器 -// ============================================================================ -class ParticleSystem : public Node { -public: - ParticleSystem(); - ~ParticleSystem() override = default; - - // ------------------------------------------------------------------------ - // 静态创建方法 - // ------------------------------------------------------------------------ - static Ptr create(); - - // ------------------------------------------------------------------------ - // 发射器管理 - // ------------------------------------------------------------------------ - Ptr addEmitter(const EmitterConfig &config = {}); - void removeEmitter(Ptr emitter); - void removeAllEmitters(); - size_t getEmitterCount() const { return emitters_.size(); } - - // ------------------------------------------------------------------------ - // 全局控制 - // ------------------------------------------------------------------------ - void startAll(); - void stopAll(); - void resetAll(); - - // ------------------------------------------------------------------------ - // 预设 - // ------------------------------------------------------------------------ - static EmitterConfig PresetFire(); - static EmitterConfig PresetSmoke(); - static EmitterConfig PresetExplosion(); - static EmitterConfig PresetSparkle(); - static EmitterConfig PresetRain(); - static EmitterConfig PresetSnow(); - - // ------------------------------------------------------------------------ - // 重写Node方法 - // ------------------------------------------------------------------------ - void onUpdate(float dt) override; - void onDraw(RenderBackend &renderer) override; - -private: - std::vector> emitters_; -}; - -// ============================================================================ -// 粒子预设(便捷类) -// ============================================================================ -class ParticlePreset { -public: - static EmitterConfig Fire(); - static EmitterConfig Smoke(); - static EmitterConfig Explosion(); - static EmitterConfig Sparkle(); - static EmitterConfig Rain(); - static EmitterConfig Snow(); - static EmitterConfig Magic(); - static EmitterConfig Bubbles(); -}; - -} // namespace extra2d diff --git a/Extra2D/include/effects/post_process.h b/Extra2D/include/effects/post_process.h deleted file mode 100644 index 014f528..0000000 --- a/Extra2D/include/effects/post_process.h +++ /dev/null @@ -1,228 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace extra2d { - -// ============================================================================ -// 前向声明 -// ============================================================================ -class RenderTarget; -class RenderBackend; - -// ============================================================================ -// 后处理效果基类 -// ============================================================================ -class PostProcessEffect { -public: - PostProcessEffect(const std::string &name); - virtual ~PostProcessEffect() = default; - - // ------------------------------------------------------------------------ - // 生命周期 - // ------------------------------------------------------------------------ - - /** - * @brief 初始化效果 - */ - virtual bool init(); - - /** - * @brief 关闭效果 - */ - virtual void shutdown(); - - // ------------------------------------------------------------------------ - // 渲染 - // ------------------------------------------------------------------------ - - /** - * @brief 应用效果 - * @param source 输入纹理 - * @param target 输出渲染目标 - * @param renderer 渲染后端 - */ - virtual void apply(const Texture &source, RenderTarget &target, - RenderBackend &renderer); - - /** - * @brief 设置Shader参数(子类重写) - */ - virtual void onShaderBind(GLShader &shader) {} - - // ------------------------------------------------------------------------ - // 状态 - // ------------------------------------------------------------------------ - const std::string &getName() const { return name_; } - bool isEnabled() const { return enabled_; } - void setEnabled(bool enabled) { enabled_ = enabled; } - bool isValid() const { return valid_; } - - // ------------------------------------------------------------------------ - // 链式API - // ------------------------------------------------------------------------ - PostProcessEffect &withEnabled(bool enabled) { - enabled_ = enabled; - return *this; - } - -protected: - std::string name_; - bool enabled_ = true; - bool valid_ = false; - Ptr shader_; - - /** - * @brief 加载自定义Shader - */ - bool loadShader(const std::string &vertSource, const std::string &fragSource); - bool loadShaderFromFile(const std::string &vertPath, - const std::string &fragPath); - - /** - * @brief 渲染全屏四边形 - */ - void renderFullscreenQuad(); - -private: - static GLuint quadVao_; - static GLuint quadVbo_; - static bool quadInitialized_; - - void initQuad(); - void destroyQuad(); -}; - -// ============================================================================ -// 后处理栈 - 管理多个后处理效果 -// ============================================================================ -class PostProcessStack { -public: - PostProcessStack(); - ~PostProcessStack(); - - // ------------------------------------------------------------------------ - // 初始化和关闭 - // ------------------------------------------------------------------------ - bool init(int width, int height); - void shutdown(); - - // ------------------------------------------------------------------------ - // 效果管理 - // ------------------------------------------------------------------------ - - /** - * @brief 添加效果到栈 - */ - void addEffect(Ptr effect); - - /** - * @brief 插入效果到指定位置 - */ - void insertEffect(size_t index, Ptr effect); - - /** - * @brief 移除效果 - */ - void removeEffect(const std::string &name); - void removeEffect(size_t index); - - /** - * @brief 获取效果 - */ - Ptr getEffect(const std::string &name); - Ptr getEffect(size_t index); - - /** - * @brief 清空所有效果 - */ - void clearEffects(); - - /** - * @brief 获取效果数量 - */ - size_t getEffectCount() const { return effects_.size(); } - - // ------------------------------------------------------------------------ - // 渲染 - // ------------------------------------------------------------------------ - - /** - * @brief 开始捕获场景 - */ - void beginCapture(); - - /** - * @brief 结束捕获并应用所有效果 - */ - void endCapture(RenderBackend &renderer); - - /** - * @brief 直接应用效果到纹理 - */ - void process(const Texture &source, RenderTarget &target, - RenderBackend &renderer); - - // ------------------------------------------------------------------------ - // 配置 - // ------------------------------------------------------------------------ - void resize(int width, int height); - bool isValid() const { return valid_; } - - // ------------------------------------------------------------------------ - // 便捷方法 - 添加内置效果 - // ------------------------------------------------------------------------ - PostProcessStack &addBloom(float intensity = 1.0f, float threshold = 0.8f); - PostProcessStack &addBlur(float radius = 2.0f); - PostProcessStack &addColorGrading(const Color &tint); - PostProcessStack &addVignette(float intensity = 0.5f); - PostProcessStack &addChromaticAberration(float amount = 1.0f); - -private: - std::vector> effects_; - Ptr renderTargetA_; - Ptr renderTargetB_; - int width_ = 0; - int height_ = 0; - bool valid_ = false; - bool capturing_ = false; -}; - -// ============================================================================ -// 全局后处理管理 -// ============================================================================ -class PostProcessManager { -public: - static PostProcessManager &getInstance(); - - void init(int width, int height); - void shutdown(); - - PostProcessStack &getMainStack() { return mainStack_; } - - void resize(int width, int height); - void beginFrame(); - void endFrame(RenderBackend &renderer); - -private: - PostProcessManager() = default; - ~PostProcessManager() = default; - PostProcessManager(const PostProcessManager &) = delete; - PostProcessManager &operator=(const PostProcessManager &) = delete; - - PostProcessStack mainStack_; - bool initialized_ = false; -}; - -// ============================================================================ -// 便捷宏 -// ============================================================================ -#define E2D_POST_PROCESS() ::extra2d::PostProcessManager::getInstance() - -} // namespace extra2d diff --git a/Extra2D/include/extra2d.h b/Extra2D/include/extra2d.h index 33b1420..eca763c 100644 --- a/Extra2D/include/extra2d.h +++ b/Extra2D/include/extra2d.h @@ -101,11 +101,6 @@ #include #include -// Effects -#include -#include -#include - // Application #include diff --git a/Extra2D/src/effects/custom_effect_manager.cpp b/Extra2D/src/effects/custom_effect_manager.cpp deleted file mode 100644 index 4c97bfb..0000000 --- a/Extra2D/src/effects/custom_effect_manager.cpp +++ /dev/null @@ -1,918 +0,0 @@ -#include -#include -#include -#include -#include - -namespace extra2d { - -using json = nlohmann::json; - -// ============================================================================ -// JSON序列化辅助函数 -// ============================================================================ - -/** - * @brief 将Vec2转换为JSON数组 - */ -static json vec2ToJson(const Vec2 &v) { return json::array({v.x, v.y}); } - -/** - * @brief 从JSON数组解析Vec2 - */ -static Vec2 jsonToVec2(const json &j) { - if (j.is_array() && j.size() >= 2) { - return Vec2(j[0].get(), j[1].get()); - } - return Vec2(); -} - -/** - * @brief 将Color转换为JSON数组 - */ -static json colorToJson(const Color &c) { - return json::array({c.r, c.g, c.b, c.a}); -} - -/** - * @brief 从JSON数组解析Color - */ -static Color jsonToColor(const json &j) { - if (j.is_array() && j.size() >= 4) { - return Color(j[0].get(), j[1].get(), j[2].get(), - j[3].get()); - } - return Colors::White; -} - -/** - * @brief 将EmitterConfig转换为JSON - */ -static json emitterConfigToJson(const EmitterConfig &config) { - json j; - j["emissionRate"] = config.emissionRate; - j["life"] = json::array({config.minLife, config.maxLife}); - j["startSize"] = json::array({config.minStartSize, config.maxStartSize}); - j["endSize"] = json::array({config.minEndSize, config.maxEndSize}); - j["velocity"] = json::object({{"min", vec2ToJson(config.minVelocity)}, - {"max", vec2ToJson(config.maxVelocity)}}); - j["acceleration"] = vec2ToJson(config.acceleration); - j["startColor"] = colorToJson(config.startColor); - j["endColor"] = colorToJson(config.endColor); - j["blendMode"] = static_cast(config.blendMode); - j["shape"] = static_cast(config.shape); - j["shapeRadius"] = config.shapeRadius; - return j; -} - -/** - * @brief 从JSON解析EmitterConfig - */ -static EmitterConfig jsonToEmitterConfig(const json &j) { - EmitterConfig config; - - if (j.contains("emissionRate")) { - config.emissionRate = j["emissionRate"].get(); - } - if (j.contains("life") && j["life"].is_array() && j["life"].size() >= 2) { - config.minLife = j["life"][0].get(); - config.maxLife = j["life"][1].get(); - } - if (j.contains("startSize") && j["startSize"].is_array() && - j["startSize"].size() >= 2) { - config.minStartSize = j["startSize"][0].get(); - config.maxStartSize = j["startSize"][1].get(); - } - if (j.contains("endSize") && j["endSize"].is_array() && - j["endSize"].size() >= 2) { - config.minEndSize = j["endSize"][0].get(); - config.maxEndSize = j["endSize"][1].get(); - } - if (j.contains("velocity")) { - const auto &vel = j["velocity"]; - if (vel.contains("min")) { - config.minVelocity = jsonToVec2(vel["min"]); - } - if (vel.contains("max")) { - config.maxVelocity = jsonToVec2(vel["max"]); - } - } - if (j.contains("acceleration")) { - config.acceleration = jsonToVec2(j["acceleration"]); - } - if (j.contains("startColor")) { - config.startColor = jsonToColor(j["startColor"]); - } - if (j.contains("endColor")) { - config.endColor = jsonToColor(j["endColor"]); - } - if (j.contains("blendMode")) { - config.blendMode = static_cast(j["blendMode"].get()); - } - if (j.contains("shape")) { - config.shape = static_cast(j["shape"].get()); - } - if (j.contains("shapeRadius")) { - config.shapeRadius = j["shapeRadius"].get(); - } - - return config; -} - -/** - * @brief 将CustomEffectConfig转换为JSON - */ -static json effectConfigToJson(const CustomEffectConfig &config) { - json j; - j["name"] = config.name; - j["type"] = static_cast(config.type); - j["description"] = config.description; - j["duration"] = config.duration; - j["loop"] = config.loop; - j["delay"] = config.delay; - - if (config.type == CustomEffectType::Particle) { - j["emitter"] = emitterConfigToJson(config.emitterConfig); - } else if (config.type == CustomEffectType::PostProcess) { - j["shaderVert"] = config.shaderVertPath; - j["shaderFrag"] = config.shaderFragPath; - j["params"] = config.shaderParams; - } - - return j; -} - -/** - * @brief 从JSON解析CustomEffectConfig - */ -static CustomEffectConfig jsonToEffectConfig(const json &j) { - CustomEffectConfig config; - - if (j.contains("name")) { - config.name = j["name"].get(); - } - if (j.contains("type")) { - config.type = static_cast(j["type"].get()); - } - if (j.contains("description")) { - config.description = j["description"].get(); - } - if (j.contains("duration")) { - config.duration = j["duration"].get(); - } - if (j.contains("loop")) { - config.loop = j["loop"].get(); - } - if (j.contains("delay")) { - config.delay = j["delay"].get(); - } - if (j.contains("emitter")) { - config.emitterConfig = jsonToEmitterConfig(j["emitter"]); - } - if (j.contains("shaderVert")) { - config.shaderVertPath = j["shaderVert"].get(); - } - if (j.contains("shaderFrag")) { - config.shaderFragPath = j["shaderFrag"].get(); - } - if (j.contains("params")) { - for (auto &[key, value] : j["params"].items()) { - config.shaderParams[key] = value.get(); - } - } - - return config; -} - -// ============================================================================ -// CustomEffect实现 -// ============================================================================ - -CustomEffect::CustomEffect(const CustomEffectConfig &config) - : config_(config) {} - -bool CustomEffect::init() { return true; } - -void CustomEffect::update(float dt) { - if (!playing_ || paused_ || finished_) - return; - - // 处理延迟 - if (delayTimer_ < config_.delay) { - delayTimer_ += dt; - return; - } - - elapsedTime_ += dt; - - // 检查是否结束 - if (config_.duration > 0 && elapsedTime_ >= config_.duration) { - if (config_.loop) { - elapsedTime_ = 0.0f; - } else { - finished_ = true; - playing_ = false; - } - } -} - -void CustomEffect::render(RenderBackend &renderer) { - // 基类不渲染任何内容 -} - -void CustomEffect::shutdown() { - playing_ = false; - paused_ = false; - finished_ = true; -} - -void CustomEffect::play() { - if (finished_) { - reset(); - } - playing_ = true; - paused_ = false; -} - -void CustomEffect::pause() { paused_ = true; } - -void CustomEffect::stop() { - playing_ = false; - paused_ = false; -} - -void CustomEffect::reset() { - elapsedTime_ = 0.0f; - delayTimer_ = 0.0f; - finished_ = false; - playing_ = false; - paused_ = false; -} - -// ============================================================================ -// CustomParticleEffect实现 -// ============================================================================ - -CustomParticleEffect::CustomParticleEffect(const CustomEffectConfig &config) - : CustomEffect(config) {} - -bool CustomParticleEffect::init() { - particleSystem_ = ParticleSystem::create(); - if (!particleSystem_) { - E2D_ERROR("创建粒子系统失败"); - return false; - } - - emitter_ = particleSystem_->addEmitter(config_.emitterConfig); - if (!emitter_) { - E2D_ERROR("创建粒子发射器失败"); - return false; - } - - // 初始化时启动发射器 - emitter_->start(); - - return true; -} - -void CustomParticleEffect::play() { - CustomEffect::play(); - if (emitter_) { - emitter_->start(); - } -} - -void CustomParticleEffect::stop() { - CustomEffect::stop(); - if (emitter_) { - emitter_->stop(); - } -} - -void CustomParticleEffect::update(float dt) { - CustomEffect::update(dt); - - if (particleSystem_) { - particleSystem_->setPosition(position_); - particleSystem_->onUpdate(dt); - } -} - -void CustomParticleEffect::render(RenderBackend &renderer) { - if (particleSystem_) { - particleSystem_->onDraw(renderer); - } -} - -void CustomParticleEffect::shutdown() { - if (emitter_) { - emitter_->stop(); - emitter_.reset(); - } - if (particleSystem_) { - particleSystem_->removeAllEmitters(); - particleSystem_.reset(); - } - CustomEffect::shutdown(); -} - -// ============================================================================ -// CustomPostProcessEffect实现 -// ============================================================================ - -CustomPostProcessEffect::CustomPostProcessEffect( - const CustomEffectConfig &config) - : CustomEffect(config), PostProcessEffect(config.name) {} - -bool CustomPostProcessEffect::init() { - if (!config_.shaderVertPath.empty() && !config_.shaderFragPath.empty()) { - if (!loadShaderFromFile(config_.shaderVertPath, config_.shaderFragPath)) { - E2D_ERROR("加载后处理Shader失败"); - return false; - } - } - - runtimeParams_ = config_.shaderParams; - return true; -} - -void CustomPostProcessEffect::update(float dt) { CustomEffect::update(dt); } - -void CustomPostProcessEffect::shutdown() { - PostProcessEffect::shutdown(); - CustomEffect::shutdown(); -} - -void CustomPostProcessEffect::onShaderBind(GLShader &shader) { - for (const auto &[name, value] : runtimeParams_) { - shader.setFloat(name, value); - } -} - -void CustomPostProcessEffect::setParam(const std::string &name, float value) { - runtimeParams_[name] = value; -} - -float CustomPostProcessEffect::getParam(const std::string &name) const { - auto it = runtimeParams_.find(name); - if (it != runtimeParams_.end()) { - return it->second; - } - return 0.0f; -} - -// ============================================================================ -// CustomEffectFactory实现 -// ============================================================================ - -CustomEffectFactory &CustomEffectFactory::getInstance() { - static CustomEffectFactory instance; - return instance; -} - -void CustomEffectFactory::registerEffect(const std::string &typeName, - EffectCreator creator) { - creators_[typeName] = creator; - E2D_INFO("注册自定义特效类型: {}", typeName); -} - -Ptr -CustomEffectFactory::create(const std::string &typeName, - const CustomEffectConfig &config) { - auto it = creators_.find(typeName); - if (it != creators_.end()) { - return it->second(config); - } - - // 默认创建器 - if (typeName == "Particle") { - return std::make_shared(config); - } else if (typeName == "PostProcess") { - return std::make_shared(config); - } - - E2D_ERROR("未知的特效类型: {}", typeName); - return nullptr; -} - -bool CustomEffectFactory::isRegistered(const std::string &typeName) const { - return creators_.find(typeName) != creators_.end(); -} - -std::vector CustomEffectFactory::getRegisteredTypes() const { - std::vector types; - for (const auto &[name, _] : creators_) { - types.push_back(name); - } - return types; -} - -// ============================================================================ -// CustomEffectManager实现 -// ============================================================================ - -CustomEffectManager &CustomEffectManager::getInstance() { - static CustomEffectManager instance; - return instance; -} - -bool CustomEffectManager::init() { - E2D_INFO("初始化自定义特效管理器..."); - - // 注册默认特效类型 - auto &factory = E2D_CUSTOM_EFFECT_FACTORY(); - factory.registerEffect("Particle", [](const CustomEffectConfig &config) { - return std::make_shared(config); - }); - factory.registerEffect("PostProcess", [](const CustomEffectConfig &config) { - return std::make_shared(config); - }); - - E2D_INFO("自定义特效管理器初始化完成"); - return true; -} - -void CustomEffectManager::shutdown() { - E2D_INFO("关闭自定义特效管理器..."); - stopAll(); - activeEffects_.clear(); - configs_.clear(); -} - -bool CustomEffectManager::loadFromFile(const std::string &filepath) { - std::ifstream file(filepath); - if (!file.is_open()) { - E2D_ERROR("无法打开特效配置文件: {}", filepath); - return false; - } - - try { - // 尝试解析为JSON - json j; - file >> j; - file.close(); - - if (j.is_array()) { - // 多个特效配置数组 - for (const auto &effectJson : j) { - auto config = jsonToEffectConfig(effectJson); - if (!config.name.empty()) { - registerConfig(config.name, config); - } - } - } else if (j.is_object()) { - // 单个特效配置 - auto config = jsonToEffectConfig(j); - if (!config.name.empty()) { - registerConfig(config.name, config); - } - } - - E2D_INFO("从JSON文件加载特效配置: {}", filepath); - return true; - - } catch (const json::exception &e) { - // JSON解析失败,回退到文本格式 - file.close(); - return loadFromTextFile(filepath); - } -} - -bool CustomEffectManager::loadFromTextFile(const std::string &filepath) { - std::ifstream file(filepath); - if (!file.is_open()) { - E2D_ERROR("无法打开特效配置文件: {}", filepath); - return false; - } - - // 简化格式:每行一个特效配置 - // 格式: EFFECT name type - // PARAM key value - // END - - std::string line; - CustomEffectConfig currentConfig; - bool inEffect = false; - - while (std::getline(file, line)) { - // 跳过空行和注释 - if (line.empty() || line[0] == '#') - continue; - - std::istringstream iss(line); - std::string cmd; - iss >> cmd; - - if (cmd == "EFFECT") { - // 开始新特效 - if (inEffect) { - // 保存上一个特效 - registerConfig(currentConfig.name, currentConfig); - } - inEffect = true; - currentConfig = CustomEffectConfig(); - - std::string type; - iss >> currentConfig.name >> type; - - if (type == "Particle") { - currentConfig.type = CustomEffectType::Particle; - } else if (type == "PostProcess") { - currentConfig.type = CustomEffectType::PostProcess; - } else { - currentConfig.type = CustomEffectType::Particle; - } - } else if (cmd == "DESC") { - std::getline(iss, currentConfig.description); - // 去除前导空格 - if (!currentConfig.description.empty() && - currentConfig.description[0] == ' ') { - currentConfig.description = currentConfig.description.substr(1); - } - } else if (cmd == "DURATION") { - iss >> currentConfig.duration; - } else if (cmd == "LOOP") { - std::string val; - iss >> val; - currentConfig.loop = (val == "true" || val == "1"); - } else if (cmd == "EMISSION") { - iss >> currentConfig.emitterConfig.emissionRate; - } else if (cmd == "LIFE") { - iss >> currentConfig.emitterConfig.minLife >> - currentConfig.emitterConfig.maxLife; - } else if (cmd == "SIZE_START") { - iss >> currentConfig.emitterConfig.minStartSize >> - currentConfig.emitterConfig.maxStartSize; - } else if (cmd == "SIZE_END") { - iss >> currentConfig.emitterConfig.minEndSize >> - currentConfig.emitterConfig.maxEndSize; - } else if (cmd == "VELOCITY") { - iss >> currentConfig.emitterConfig.minVelocity.x >> - currentConfig.emitterConfig.minVelocity.y >> - currentConfig.emitterConfig.maxVelocity.x >> - currentConfig.emitterConfig.maxVelocity.y; - } else if (cmd == "ACCEL") { - iss >> currentConfig.emitterConfig.acceleration.x >> - currentConfig.emitterConfig.acceleration.y; - } else if (cmd == "COLOR_START") { - iss >> currentConfig.emitterConfig.startColor.r >> - currentConfig.emitterConfig.startColor.g >> - currentConfig.emitterConfig.startColor.b >> - currentConfig.emitterConfig.startColor.a; - } else if (cmd == "COLOR_END") { - iss >> currentConfig.emitterConfig.endColor.r >> - currentConfig.emitterConfig.endColor.g >> - currentConfig.emitterConfig.endColor.b >> - currentConfig.emitterConfig.endColor.a; - } else if (cmd == "BLEND") { - std::string mode; - iss >> mode; - if (mode == "Additive") { - currentConfig.emitterConfig.blendMode = BlendMode::Additive; - } else if (mode == "Alpha") { - currentConfig.emitterConfig.blendMode = BlendMode::Alpha; - } else { - currentConfig.emitterConfig.blendMode = BlendMode::None; - } - } else if (cmd == "END") { - // 结束当前特效 - if (inEffect) { - registerConfig(currentConfig.name, currentConfig); - inEffect = false; - } - } - } - - // 保存最后一个特效 - if (inEffect) { - registerConfig(currentConfig.name, currentConfig); - } - - file.close(); - E2D_INFO("从文本文件加载特效配置: {}", filepath); - return true; -} - -bool CustomEffectManager::saveToFile(const std::string &name, - const std::string &filepath, - bool useJson) { - auto it = configs_.find(name); - if (it == configs_.end()) { - E2D_ERROR("特效配置不存在: {}", name); - return false; - } - - std::ofstream file(filepath); - if (!file.is_open()) { - E2D_ERROR("无法创建文件: {}", filepath); - return false; - } - - if (useJson) { - // 保存为JSON格式 - json j = effectConfigToJson(it->second); - file << j.dump(2); // 缩进2个空格,更易读 - E2D_INFO("保存特效配置到JSON文件: {}", filepath); - } else { - // 保存为文本格式 - const auto &config = it->second; - - file << "# Easy2D Custom Effect Config\n"; - file << "# Generated automatically\n\n"; - - file << "EFFECT " << config.name << " "; - if (config.type == CustomEffectType::Particle) { - file << "Particle\n"; - } else if (config.type == CustomEffectType::PostProcess) { - file << "PostProcess\n"; - } else { - file << "Particle\n"; - } - - file << "DESC " << config.description << "\n"; - file << "DURATION " << config.duration << "\n"; - file << "LOOP " << (config.loop ? "true" : "false") << "\n"; - - if (config.type == CustomEffectType::Particle) { - const auto &ec = config.emitterConfig; - file << "EMISSION " << ec.emissionRate << "\n"; - file << "LIFE " << ec.minLife << " " << ec.maxLife << "\n"; - file << "SIZE_START " << ec.minStartSize << " " << ec.maxStartSize - << "\n"; - file << "SIZE_END " << ec.minEndSize << " " << ec.maxEndSize << "\n"; - file << "VELOCITY " << ec.minVelocity.x << " " << ec.minVelocity.y << " " - << ec.maxVelocity.x << " " << ec.maxVelocity.y << "\n"; - file << "ACCEL " << ec.acceleration.x << " " << ec.acceleration.y << "\n"; - file << "COLOR_START " << ec.startColor.r << " " << ec.startColor.g << " " - << ec.startColor.b << " " << ec.startColor.a << "\n"; - file << "COLOR_END " << ec.endColor.r << " " << ec.endColor.g << " " - << ec.endColor.b << " " << ec.endColor.a << "\n"; - - file << "BLEND "; - switch (ec.blendMode) { - case BlendMode::Additive: - file << "Additive\n"; - break; - case BlendMode::Alpha: - file << "Alpha\n"; - break; - default: - file << "None\n"; - break; - } - } - - file << "END\n"; - E2D_INFO("保存特效配置到文本文件: {}", filepath); - } - - file.close(); - return true; -} - -bool CustomEffectManager::saveAllToFile(const std::string &filepath) { - std::ofstream file(filepath); - if (!file.is_open()) { - E2D_ERROR("无法创建文件: {}", filepath); - return false; - } - - json effectsArray = json::array(); - for (const auto &[name, config] : configs_) { - effectsArray.push_back(effectConfigToJson(config)); - } - - file << effectsArray.dump(2); - file.close(); - - E2D_INFO("保存所有特效配置到: {}", filepath); - return true; -} - -void CustomEffectManager::registerConfig(const std::string &name, - const CustomEffectConfig &config) { - configs_[name] = config; - E2D_INFO("注册特效配置: {}", name); -} - -CustomEffectConfig *CustomEffectManager::getConfig(const std::string &name) { - auto it = configs_.find(name); - if (it != configs_.end()) { - return &it->second; - } - return nullptr; -} - -void CustomEffectManager::removeConfig(const std::string &name) { - configs_.erase(name); -} - -std::vector CustomEffectManager::getConfigNames() const { - std::vector names; - for (const auto &[name, _] : configs_) { - names.push_back(name); - } - return names; -} - -Ptr CustomEffectManager::createEffect(const std::string &name) { - auto config = getConfig(name); - if (!config) { - E2D_ERROR("特效配置不存在: {}", name); - return nullptr; - } - - return createEffectFromConfig(*config); -} - -Ptr -CustomEffectManager::createEffectFromConfig(const CustomEffectConfig &config) { - std::string typeName; - switch (config.type) { - case CustomEffectType::Particle: - typeName = "Particle"; - break; - case CustomEffectType::PostProcess: - typeName = "PostProcess"; - break; - default: - typeName = "Particle"; - break; - } - - auto effect = E2D_CUSTOM_EFFECT_FACTORY().create(typeName, config); - if (effect && effect->init()) { - activeEffects_.push_back(effect); - return effect; - } - - return nullptr; -} - -void CustomEffectManager::destroyEffect(Ptr effect) { - if (!effect) - return; - - effect->shutdown(); - - auto it = std::find(activeEffects_.begin(), activeEffects_.end(), effect); - if (it != activeEffects_.end()) { - activeEffects_.erase(it); - } -} - -void CustomEffectManager::update(float dt) { - for (auto &effect : activeEffects_) { - if (effect->isPlaying()) { - effect->update(dt); - } - } - - // 清理已完成的特效 - activeEffects_.erase(std::remove_if(activeEffects_.begin(), - activeEffects_.end(), - [](const Ptr &effect) { - return effect->isFinished(); - }), - activeEffects_.end()); -} - -void CustomEffectManager::render(RenderBackend &renderer) { - for (auto &effect : activeEffects_) { - if (effect->isPlaying()) { - effect->render(renderer); - } - } -} - -void CustomEffectManager::stopAll() { - for (auto &effect : activeEffects_) { - effect->stop(); - } -} - -Ptr CustomEffectManager::play(const std::string &name, - const Vec2 &position) { - auto effect = createEffect(name); - if (effect) { - effect->setPosition(position); - effect->play(); - } - return effect; -} - -void CustomEffectManager::playOneShot(const std::string &name, - const Vec2 &position) { - auto effect = play(name, position); - if (effect) { - // 设置非循环,播放一次后自动销毁 - effect->play(); - } -} - -// ============================================================================ -// EffectBuilder实现 -// ============================================================================ - -CustomEffectConfig EffectBuilder::Particle(const std::string &name) { - CustomEffectConfig config; - config.name = name; - config.type = CustomEffectType::Particle; - config.duration = -1.0f; - config.loop = true; - config.delay = 0.0f; - - // 默认粒子配置 - config.emitterConfig.emissionRate = 100.0f; - config.emitterConfig.minLife = 1.0f; - config.emitterConfig.maxLife = 2.0f; - config.emitterConfig.minStartSize = 10.0f; - config.emitterConfig.maxStartSize = 20.0f; - config.emitterConfig.minEndSize = 0.0f; - config.emitterConfig.maxEndSize = 5.0f; - config.emitterConfig.minVelocity = Vec2(-50.0f, -50.0f); - config.emitterConfig.maxVelocity = Vec2(50.0f, 50.0f); - config.emitterConfig.acceleration = Vec2(0.0f, 0.0f); - config.emitterConfig.startColor = Colors::White; - config.emitterConfig.endColor = Colors::Transparent; - config.emitterConfig.blendMode = BlendMode::Additive; - - return config; -} - -CustomEffectConfig EffectBuilder::Fire(const std::string &name) { - CustomEffectConfig config = Particle(name); - config.emitterConfig = ParticlePreset::Fire(); - return config; -} - -CustomEffectConfig EffectBuilder::Smoke(const std::string &name) { - CustomEffectConfig config = Particle(name); - config.emitterConfig = ParticlePreset::Smoke(); - return config; -} - -CustomEffectConfig EffectBuilder::Explosion(const std::string &name) { - CustomEffectConfig config = Particle(name); - config.emitterConfig = ParticlePreset::Explosion(); - config.duration = 2.0f; - config.loop = false; - return config; -} - -CustomEffectConfig EffectBuilder::Magic(const std::string &name) { - CustomEffectConfig config = Particle(name); - config.emitterConfig = ParticlePreset::Magic(); - return config; -} - -CustomEffectConfig EffectBuilder::Sparkle(const std::string &name) { - CustomEffectConfig config = Particle(name); - config.emitterConfig = ParticlePreset::Sparkle(); - return config; -} - -CustomEffectConfig EffectBuilder::Bloom(const std::string &name) { - CustomEffectConfig config; - config.name = name; - config.type = CustomEffectType::PostProcess; - config.duration = -1.0f; - config.loop = true; - config.shaderParams["intensity"] = 1.5f; - config.shaderParams["threshold"] = 0.8f; - return config; -} - -CustomEffectConfig EffectBuilder::Blur(const std::string &name) { - CustomEffectConfig config; - config.name = name; - config.type = CustomEffectType::PostProcess; - config.duration = -1.0f; - config.loop = true; - config.shaderParams["radius"] = 2.0f; - return config; -} - -CustomEffectConfig EffectBuilder::Vignette(const std::string &name) { - CustomEffectConfig config; - config.name = name; - config.type = CustomEffectType::PostProcess; - config.duration = -1.0f; - config.loop = true; - config.shaderParams["intensity"] = 0.5f; - return config; -} - -CustomEffectConfig EffectBuilder::ColorGrading(const std::string &name) { - CustomEffectConfig config; - config.name = name; - config.type = CustomEffectType::PostProcess; - config.duration = -1.0f; - config.loop = true; - config.shaderParams["brightness"] = 1.0f; - config.shaderParams["contrast"] = 1.0f; - config.shaderParams["saturation"] = 1.0f; - return config; -} - -} // namespace extra2d diff --git a/Extra2D/src/effects/particle_system.cpp b/Extra2D/src/effects/particle_system.cpp deleted file mode 100644 index 42a626d..0000000 --- a/Extra2D/src/effects/particle_system.cpp +++ /dev/null @@ -1,468 +0,0 @@ -#include -#include -#include -#include - -namespace extra2d { - -// ============================================================================ -// 形状生成函数类型和查找表 -// ============================================================================ -using ShapeGenerator = Vec2 (ParticleEmitter::*)(); - -// 形状生成函数指针数组,索引对应 EmitterConfig::Shape 枚举值 -static constexpr ShapeGenerator SHAPE_GENERATORS[] = { - &ParticleEmitter::randomPointShape, // Shape::Point = 0 - &ParticleEmitter::randomCircleShape, // Shape::Circle = 1 - &ParticleEmitter::randomRectangleShape, // Shape::Rectangle = 2 - &ParticleEmitter::randomConeShape // Shape::Cone = 3 -}; - -static constexpr size_t SHAPE_GENERATOR_COUNT = sizeof(SHAPE_GENERATORS) / sizeof(SHAPE_GENERATORS[0]); - -// ============================================================================ -// ParticleEmitter实现 -// ============================================================================ - -ParticleEmitter::ParticleEmitter() : rng_(static_cast(std::random_device{}())) {} - -bool ParticleEmitter::init(size_t maxParticles) { - particles_.resize(maxParticles); - activeCount_ = 0; - return true; -} - -void ParticleEmitter::shutdown() { - particles_.clear(); - activeCount_ = 0; -} - -void ParticleEmitter::start() { - emitting_ = true; - emissionTime_ = 0.0f; -} - -void ParticleEmitter::stop() { emitting_ = false; } - -void ParticleEmitter::burst(int count) { - for (int i = 0; i < count && activeCount_ < particles_.size(); ++i) { - emitParticle(); - } -} - -void ParticleEmitter::reset() { - for (auto &particle : particles_) { - particle.active = false; - } - activeCount_ = 0; - emissionTimer_ = 0.0f; - emissionTime_ = 0.0f; -} - -void ParticleEmitter::update(float dt) { - // 发射新粒子 - if (emitting_) { - emissionTime_ += dt; - - // 检查持续时间 - if (config_.emissionDuration > 0 && - emissionTime_ >= config_.emissionDuration) { - emitting_ = false; - } - - emissionTimer_ += dt; - float emissionInterval = 1.0f / config_.emissionRate; - - while (emissionTimer_ >= emissionInterval && - activeCount_ < particles_.size()) { - emitParticle(); - emissionTimer_ -= emissionInterval; - } - } - - // 更新活跃粒子 - size_t newActiveCount = 0; - for (size_t i = 0; i < activeCount_; ++i) { - auto &p = particles_[i]; - - if (!p.active) - continue; - - // 更新生命周期 - p.life -= dt; - if (p.life <= 0.0f) { - p.active = false; - continue; - } - - // 更新物理 - p.velocity += p.acceleration * dt; - p.position += p.velocity * dt; - p.rotation += p.angularVelocity * dt; - - // 更新大小 - p.size += p.sizeDelta * dt; - if (p.size < 0.0f) - p.size = 0.0f; - - // 更新颜色 - p.color += p.colorDelta * dt; - - // 保持活跃 - if (newActiveCount != i) { - particles_[newActiveCount] = p; - } - newActiveCount++; - } - - activeCount_ = newActiveCount; -} - -void ParticleEmitter::render(RenderBackend &renderer) { - if (activeCount_ == 0) - return; - - // 设置混合模式 - renderer.setBlendMode(config_.blendMode); - - // 渲染所有活跃粒子 - if (config_.texture) { - // 使用纹理批量渲染 - renderer.beginSpriteBatch(); - - for (size_t i = 0; i < activeCount_; ++i) { - const auto &p = particles_[i]; - if (!p.active) - continue; - - // 计算目标矩形 - // 锚点由 RenderBackend 在绘制时处理,这里只传递位置和尺寸 - Rect destRect(p.position.x, p.position.y, p.size, p.size); - - renderer.drawSprite( - *config_.texture, destRect, - Rect(0, 0, config_.texture->getWidth(), config_.texture->getHeight()), - p.color, p.rotation, Vec2(0.5f, 0.5f)); - } - - renderer.endSpriteBatch(); - } else { - // 没有纹理,使用圆形填充渲染 - for (size_t i = 0; i < activeCount_; ++i) { - const auto &p = particles_[i]; - if (!p.active) - continue; - - // 渲染圆形粒子 - renderer.fillCircle(p.position, p.size * 0.5f, p.color); - } - } -} - -void ParticleEmitter::emitParticle() { - if (activeCount_ >= particles_.size()) - return; - - Particle &p = particles_[activeCount_]; - p.active = true; - - // 位置 - p.position = position_ + randomPointInShape(); - - // 速度 - p.velocity = randomVelocity(); - - // 加速度 - p.acceleration = config_.acceleration; - - // 旋转 - p.rotation = randomFloat(config_.minRotation, config_.maxRotation); - p.angularVelocity = - randomFloat(config_.minAngularVelocity, config_.maxAngularVelocity); - - // 大小 - float startSize = randomFloat(config_.minStartSize, config_.maxStartSize); - float endSize = randomFloat(config_.minEndSize, config_.maxEndSize); - p.size = startSize; - - // 生命周期 - p.maxLife = randomFloat(config_.minLife, config_.maxLife); - p.life = p.maxLife; - - // 计算每帧变化量 - if (p.maxLife > 0.0f) { - p.sizeDelta = (endSize - startSize) / p.maxLife; - p.colorDelta = (config_.endColor - config_.startColor) / p.maxLife; - } - - // 颜色 - p.color = config_.startColor; - - activeCount_++; -} - -float ParticleEmitter::randomFloat(float min, float max) { - return rng_.nextFloat(min, max); -} - -Vec2 ParticleEmitter::randomPointInShape() { - // 使用查找表替代 switch - size_t shapeIndex = static_cast(config_.shape); - if (shapeIndex < SHAPE_GENERATOR_COUNT) { - return (this->*SHAPE_GENERATORS[shapeIndex])(); - } - return Vec2::Zero(); -} - -Vec2 ParticleEmitter::randomPointShape() { - return Vec2::Zero(); -} - -Vec2 ParticleEmitter::randomCircleShape() { - float angle = randomFloat(0.0f, 2.0f * 3.14159265359f); - float radius = randomFloat(0.0f, config_.shapeRadius); - return Vec2(std::cos(angle) * radius, std::sin(angle) * radius); -} - -Vec2 ParticleEmitter::randomRectangleShape() { - return Vec2( - randomFloat(-config_.shapeSize.x * 0.5f, config_.shapeSize.x * 0.5f), - randomFloat(-config_.shapeSize.y * 0.5f, config_.shapeSize.y * 0.5f)); -} - -Vec2 ParticleEmitter::randomConeShape() { - float angle = - randomFloat(-config_.coneAngle * 0.5f, config_.coneAngle * 0.5f); - float radius = randomFloat(0.0f, config_.shapeRadius); - float rad = angle * 3.14159265359f / 180.0f; - return Vec2(std::cos(rad) * radius, std::sin(rad) * radius); -} - -Vec2 ParticleEmitter::randomVelocity() { - return Vec2(randomFloat(config_.minVelocity.x, config_.maxVelocity.x), - randomFloat(config_.minVelocity.y, config_.maxVelocity.y)); -} - -// ============================================================================ -// ParticleSystem实现 -// ============================================================================ - -ParticleSystem::ParticleSystem() {} - -Ptr ParticleSystem::create() { - return std::make_shared(); -} - -Ptr ParticleSystem::addEmitter(const EmitterConfig &config) { - auto emitter = std::make_shared(); - emitter->setConfig(config); - emitter->init(1000); // 默认最大1000个粒子 - emitters_.push_back(emitter); - return emitter; -} - -void ParticleSystem::removeEmitter(Ptr emitter) { - auto it = std::find(emitters_.begin(), emitters_.end(), emitter); - if (it != emitters_.end()) { - (*it)->shutdown(); - emitters_.erase(it); - } -} - -void ParticleSystem::removeAllEmitters() { - for (auto &emitter : emitters_) { - emitter->shutdown(); - } - emitters_.clear(); -} - -void ParticleSystem::startAll() { - for (auto &emitter : emitters_) { - emitter->start(); - } -} - -void ParticleSystem::stopAll() { - for (auto &emitter : emitters_) { - emitter->stop(); - } -} - -void ParticleSystem::resetAll() { - for (auto &emitter : emitters_) { - emitter->reset(); - } -} - -void ParticleSystem::onUpdate(float dt) { - // 获取粒子系统的世界位置 - auto worldPos = convertToWorldSpace(Vec2::Zero()); - - for (auto &emitter : emitters_) { - // 更新发射器位置为粒子系统的世界位置 - emitter->setPosition(worldPos); - // 更新发射器 - emitter->update(dt); - } -} - -void ParticleSystem::onDraw(RenderBackend &renderer) { - for (auto &emitter : emitters_) { - emitter->render(renderer); - } -} - -// ============================================================================ -// 预设实现 -// ============================================================================ - -EmitterConfig ParticlePreset::Fire() { - EmitterConfig config; - config.emissionRate = 200.0f; - config.minLife = 0.5f; - config.maxLife = 1.5f; - config.minStartSize = 20.0f; - config.maxStartSize = 40.0f; - config.minEndSize = 5.0f; - config.maxEndSize = 10.0f; - config.minVelocity = Vec2(-30.0f, -150.0f); // 向上(负y) - config.maxVelocity = Vec2(30.0f, -50.0f); - config.acceleration = Vec2(0.0f, 0.0f); - config.startColor = Color(1.0f, 0.8f, 0.2f, 1.0f); // 黄色 - config.endColor = Color(1.0f, 0.2f, 0.0f, 0.0f); // 红色透明 - config.blendMode = BlendMode::Additive; - return config; -} - -EmitterConfig ParticlePreset::Smoke() { - EmitterConfig config; - config.emissionRate = 50.0f; - config.minLife = 2.0f; - config.maxLife = 4.0f; - config.minStartSize = 30.0f; - config.maxStartSize = 60.0f; - config.minEndSize = 80.0f; - config.maxEndSize = 120.0f; - config.minVelocity = Vec2(-20.0f, -60.0f); // 向上(负y) - config.maxVelocity = Vec2(20.0f, -30.0f); - config.acceleration = Vec2(0.0f, -10.0f); // 向上加速度 - config.startColor = Color(0.5f, 0.5f, 0.5f, 0.5f); // 灰色半透明 - config.endColor = Color(0.3f, 0.3f, 0.3f, 0.0f); // 深灰透明 - config.blendMode = BlendMode::Alpha; - return config; -} - -EmitterConfig ParticlePreset::Explosion() { - EmitterConfig config; - config.emissionRate = 1000.0f; - config.emissionDuration = 0.1f; // 瞬间爆发 - config.minLife = 0.5f; - config.maxLife = 1.5f; - config.minStartSize = 10.0f; - config.maxStartSize = 30.0f; - config.minEndSize = 0.0f; - config.maxEndSize = 5.0f; - config.minVelocity = Vec2(-300.0f, -300.0f); - config.maxVelocity = Vec2(300.0f, 300.0f); - config.acceleration = Vec2(0.0f, -50.0f); - config.startColor = Color(1.0f, 1.0f, 0.5f, 1.0f); // 亮黄 - config.endColor = Color(1.0f, 0.3f, 0.0f, 0.0f); // 橙红透明 - config.blendMode = BlendMode::Additive; - return config; -} - -EmitterConfig ParticlePreset::Sparkle() { - EmitterConfig config; - config.emissionRate = 20.0f; - config.minLife = 0.2f; - config.maxLife = 0.8f; - config.minStartSize = 2.0f; - config.maxStartSize = 5.0f; - config.minEndSize = 0.0f; - config.maxEndSize = 2.0f; - config.minVelocity = Vec2(-10.0f, -10.0f); - config.maxVelocity = Vec2(10.0f, 10.0f); - config.acceleration = Vec2(0.0f, 0.0f); - config.startColor = Color(1.0f, 1.0f, 1.0f, 1.0f); // 白色 - config.endColor = Color(1.0f, 1.0f, 1.0f, 0.0f); // 透明 - config.blendMode = BlendMode::Additive; - return config; -} - -EmitterConfig ParticlePreset::Rain() { - EmitterConfig config; - config.emissionRate = 500.0f; - config.minLife = 1.0f; - config.maxLife = 2.0f; - config.minStartSize = 2.0f; - config.maxStartSize = 4.0f; - config.minEndSize = 2.0f; - config.maxEndSize = 4.0f; - config.minVelocity = Vec2(-100.0f, -400.0f); - config.maxVelocity = Vec2(100.0f, -600.0f); - config.acceleration = Vec2(0.0f, -100.0f); - config.startColor = Color(0.7f, 0.8f, 1.0f, 0.6f); // 淡蓝 - config.endColor = Color(0.7f, 0.8f, 1.0f, 0.3f); // 淡蓝半透明 - config.shape = EmitterConfig::Shape::Rectangle; - config.shapeSize = Vec2(800.0f, 100.0f); // 在顶部区域发射 - config.blendMode = BlendMode::Alpha; - return config; -} - -EmitterConfig ParticlePreset::Snow() { - EmitterConfig config; - config.emissionRate = 100.0f; - config.minLife = 3.0f; - config.maxLife = 6.0f; - config.minStartSize = 5.0f; - config.maxStartSize = 10.0f; - config.minEndSize = 5.0f; - config.maxEndSize = 10.0f; - config.minVelocity = Vec2(-30.0f, -30.0f); - config.maxVelocity = Vec2(30.0f, -80.0f); - config.acceleration = Vec2(0.0f, 0.0f); - config.startColor = Color(1.0f, 1.0f, 1.0f, 0.8f); // 白色 - config.endColor = Color(1.0f, 1.0f, 1.0f, 0.8f); // 白色 - config.shape = EmitterConfig::Shape::Rectangle; - config.shapeSize = Vec2(800.0f, 100.0f); - config.blendMode = BlendMode::Alpha; - return config; -} - -EmitterConfig ParticlePreset::Magic() { - EmitterConfig config; - config.emissionRate = 100.0f; - config.minLife = 1.0f; - config.maxLife = 2.0f; - config.minStartSize = 5.0f; - config.maxStartSize = 15.0f; - config.minEndSize = 0.0f; - config.maxEndSize = 5.0f; - config.minVelocity = Vec2(-50.0f, -50.0f); // 主要向上 - config.maxVelocity = Vec2(50.0f, -50.0f); - config.acceleration = Vec2(0.0f, -20.0f); // 向上加速度 - config.startColor = Color(0.5f, 0.2f, 1.0f, 1.0f); // 紫色 - config.endColor = Color(0.2f, 0.8f, 1.0f, 0.0f); // 青色透明 - config.blendMode = BlendMode::Additive; - return config; -} - -EmitterConfig ParticlePreset::Bubbles() { - EmitterConfig config; - config.emissionRate = 30.0f; - config.minLife = 2.0f; - config.maxLife = 4.0f; - config.minStartSize = 5.0f; - config.maxStartSize = 15.0f; - config.minEndSize = 5.0f; - config.maxEndSize = 15.0f; - config.minVelocity = Vec2(-20.0f, 20.0f); - config.maxVelocity = Vec2(20.0f, 60.0f); - config.acceleration = Vec2(0.0f, 30.0f); - config.startColor = Color(0.8f, 0.9f, 1.0f, 0.4f); // 淡蓝透明 - config.endColor = Color(0.8f, 0.9f, 1.0f, 0.1f); // 更透明 - config.blendMode = BlendMode::Alpha; - return config; -} - -} // namespace extra2d diff --git a/Extra2D/src/effects/post_process.cpp b/Extra2D/src/effects/post_process.cpp deleted file mode 100644 index 7138994..0000000 --- a/Extra2D/src/effects/post_process.cpp +++ /dev/null @@ -1,389 +0,0 @@ -#include -#include -#include -#include - -#include - -namespace extra2d { - -// ============================================================================ -// 静态成员初始化 -// ============================================================================ -GLuint PostProcessEffect::quadVao_ = 0; -GLuint PostProcessEffect::quadVbo_ = 0; -bool PostProcessEffect::quadInitialized_ = false; - -// ============================================================================ -// PostProcessEffect实现 -// ============================================================================ - -PostProcessEffect::PostProcessEffect(const std::string &name) : name_(name) {} - -bool PostProcessEffect::init() { - initQuad(); - valid_ = true; - return true; -} - -void PostProcessEffect::shutdown() { - shader_.reset(); - valid_ = false; -} - -void PostProcessEffect::apply(const Texture &source, RenderTarget &target, - RenderBackend &renderer) { - if (!enabled_ || !valid_) - return; - - target.bind(); - - if (shader_) { - shader_->bind(); - shader_->setInt("u_texture", 0); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, - static_cast( - reinterpret_cast(source.getNativeHandle()))); - - onShaderBind(*shader_); - } - - renderFullscreenQuad(); - - if (shader_) { - shader_->unbind(); - } - - target.unbind(); -} - -bool PostProcessEffect::loadShader(const std::string &vertSource, - const std::string &fragSource) { - shader_ = std::make_shared(); - if (!shader_->compileFromSource(vertSource.c_str(), fragSource.c_str())) { - E2D_ERROR("后处理效果 '{}' 加载Shader失败", name_); - shader_.reset(); - return false; - } - return true; -} - -bool PostProcessEffect::loadShaderFromFile(const std::string &vertPath, - const std::string &fragPath) { - shader_ = std::make_shared(); - if (!shader_->compileFromFile(vertPath, fragPath)) { - E2D_ERROR("后处理效果 '{}' 从文件加载Shader失败", name_); - shader_.reset(); - return false; - } - return true; -} - -void PostProcessEffect::initQuad() { - if (quadInitialized_) - return; - - // 全屏四边形顶点数据(位置和纹理坐标) - float quadVertices[] = {// 位置 // 纹理坐标 - -1.0f, 1.0f, 0.0f, 1.0f, -1.0f, -1.0f, 0.0f, 0.0f, - 1.0f, -1.0f, 1.0f, 0.0f, -1.0f, 1.0f, 0.0f, 1.0f, - 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f}; - - glGenVertexArrays(1, &quadVao_); - glGenBuffers(1, &quadVbo_); - - glBindVertexArray(quadVao_); - glBindBuffer(GL_ARRAY_BUFFER, quadVbo_); - glBufferData(GL_ARRAY_BUFFER, sizeof(quadVertices), quadVertices, - GL_STATIC_DRAW); - - // 位置属性 - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), (void *)0); - - // 纹理坐标属性 - glEnableVertexAttribArray(1); - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), - (void *)(2 * sizeof(float))); - - glBindVertexArray(0); - - quadInitialized_ = true; -} - -void PostProcessEffect::destroyQuad() { - if (quadVao_ != 0) { - glDeleteVertexArrays(1, &quadVao_); - quadVao_ = 0; - } - if (quadVbo_ != 0) { - glDeleteBuffers(1, &quadVbo_); - quadVbo_ = 0; - } - quadInitialized_ = false; -} - -void PostProcessEffect::renderFullscreenQuad() { - if (!quadInitialized_) { - initQuad(); - } - - glBindVertexArray(quadVao_); - glDrawArrays(GL_TRIANGLES, 0, 6); - glBindVertexArray(0); -} - -// ============================================================================ -// PostProcessStack实现 -// ============================================================================ - -PostProcessStack::PostProcessStack() = default; - -PostProcessStack::~PostProcessStack() { shutdown(); } - -bool PostProcessStack::init(int width, int height) { - E2D_INFO("初始化后处理栈..."); - - width_ = width; - height_ = height; - - // 创建两个渲染目标用于乒乓渲染 - RenderTargetConfig config; - config.width = width; - config.height = height; - config.hasDepthBuffer = false; - config.autoResize = false; - - renderTargetA_ = std::make_shared(); - renderTargetB_ = std::make_shared(); - - if (!renderTargetA_->init(config)) { - E2D_ERROR("创建后处理渲染目标A失败"); - return false; - } - - if (!renderTargetB_->init(config)) { - E2D_ERROR("创建后处理渲染目标B失败"); - return false; - } - - valid_ = true; - E2D_INFO("后处理栈初始化成功"); - return true; -} - -void PostProcessStack::shutdown() { - E2D_INFO("关闭后处理栈..."); - - clearEffects(); - - if (renderTargetA_) { - renderTargetA_->shutdown(); - renderTargetA_.reset(); - } - - if (renderTargetB_) { - renderTargetB_->shutdown(); - renderTargetB_.reset(); - } - - valid_ = false; -} - -void PostProcessStack::addEffect(Ptr effect) { - if (effect && effect->init()) { - effects_.push_back(effect); - E2D_INFO("添加后处理效果: {}", effect->getName()); - } -} - -void PostProcessStack::insertEffect(size_t index, - Ptr effect) { - if (effect && effect->init() && index <= effects_.size()) { - effects_.insert(effects_.begin() + index, effect); - E2D_INFO("插入后处理效果 '{}' 到位置 {}", effect->getName(), index); - } -} - -void PostProcessStack::removeEffect(const std::string &name) { - for (auto it = effects_.begin(); it != effects_.end(); ++it) { - if ((*it)->getName() == name) { - (*it)->shutdown(); - effects_.erase(it); - E2D_INFO("移除后处理效果: {}", name); - return; - } - } -} - -void PostProcessStack::removeEffect(size_t index) { - if (index < effects_.size()) { - effects_[index]->shutdown(); - effects_.erase(effects_.begin() + index); - } -} - -Ptr PostProcessStack::getEffect(const std::string &name) { - for (auto &effect : effects_) { - if (effect->getName() == name) { - return effect; - } - } - return nullptr; -} - -Ptr PostProcessStack::getEffect(size_t index) { - if (index < effects_.size()) { - return effects_[index]; - } - return nullptr; -} - -void PostProcessStack::clearEffects() { - for (auto &effect : effects_) { - effect->shutdown(); - } - effects_.clear(); -} - -void PostProcessStack::beginCapture() { - if (!valid_) - return; - - renderTargetA_->bind(); - renderTargetA_->clear(Colors::Black); - capturing_ = true; -} - -void PostProcessStack::endCapture(RenderBackend &renderer) { - if (!valid_ || !capturing_) - return; - - renderTargetA_->unbind(); - - // 应用所有后处理效果 - if (effects_.empty()) { - // 没有效果,直接渲染到屏幕 - // 这里需要渲染renderTargetA_的纹理到屏幕 - capturing_ = false; - return; - } - - // 乒乓渲染 - RenderTarget *readTarget = renderTargetA_.get(); - RenderTarget *writeTarget = renderTargetB_.get(); - - for (size_t i = 0; i < effects_.size(); ++i) { - auto &effect = effects_[i]; - - if (effect->isEnabled()) { - effect->apply(*readTarget->getColorTexture(), *writeTarget, renderer); - } - - // 交换读写目标 - std::swap(readTarget, writeTarget); - } - - // 最终结果在readTarget中(因为最后一次交换) - // 这里应该将结果渲染到屏幕 - - capturing_ = false; -} - -void PostProcessStack::process(const Texture &source, RenderTarget &target, - RenderBackend &renderer) { - if (!valid_) - return; - - RenderTarget *readTarget = nullptr; - RenderTarget *writeTarget = nullptr; - - // 确定读写目标 - if (target.getFBO() == renderTargetA_->getFBO()) { - readTarget = renderTargetB_.get(); - writeTarget = renderTargetA_.get(); - } else { - readTarget = renderTargetA_.get(); - writeTarget = renderTargetB_.get(); - } - - // 首先将源纹理复制到读目标 - readTarget->bind(); - // 这里需要渲染源纹理到readTarget - readTarget->unbind(); - - // 应用效果 - for (auto &effect : effects_) { - if (effect->isEnabled()) { - effect->apply(*readTarget->getColorTexture(), *writeTarget, renderer); - } - std::swap(readTarget, writeTarget); - } - - // 将最终结果复制到目标 - readTarget->blitTo(target, true, false); -} - -void PostProcessStack::resize(int width, int height) { - if (width_ == width && height_ == height) - return; - - width_ = width; - height_ = height; - - if (renderTargetA_) { - renderTargetA_->resize(width, height); - } - - if (renderTargetB_) { - renderTargetB_->resize(width, height); - } -} - -// ============================================================================ -// PostProcessManager实现 -// ============================================================================ - -PostProcessManager &PostProcessManager::getInstance() { - static PostProcessManager instance; - return instance; -} - -void PostProcessManager::init(int width, int height) { - if (initialized_) - return; - - E2D_INFO("初始化后处理管理器..."); - mainStack_.init(width, height); - initialized_ = true; -} - -void PostProcessManager::shutdown() { - if (!initialized_) - return; - - E2D_INFO("关闭后处理管理器..."); - mainStack_.shutdown(); - initialized_ = false; -} - -void PostProcessManager::resize(int width, int height) { - if (initialized_) { - mainStack_.resize(width, height); - } -} - -void PostProcessManager::beginFrame() { - if (initialized_) { - mainStack_.beginCapture(); - } -} - -void PostProcessManager::endFrame(RenderBackend &renderer) { - if (initialized_) { - mainStack_.endCapture(renderer); - } -} - -} // namespace extra2d diff --git a/Extra2D/src/glad/glad.c b/Extra2D/src/glad/glad.c deleted file mode 100644 index 14d2d65..0000000 --- a/Extra2D/src/glad/glad.c +++ /dev/null @@ -1,3602 +0,0 @@ -/* - - OpenGL ES loader generated by glad 0.1.36 on Mon Feb 9 05:46:28 2026. - - Language/Generator: C/C++ - Specification: gl - APIs: gles2=3.2 - Profile: compatibility - Extensions: - GL_AMD_compressed_3DC_texture, - GL_AMD_compressed_ATC_texture, - GL_AMD_framebuffer_multisample_advanced, - GL_AMD_performance_monitor, - GL_AMD_program_binary_Z400, - GL_ANDROID_extension_pack_es31a, - GL_ANGLE_depth_texture, - GL_ANGLE_framebuffer_blit, - GL_ANGLE_framebuffer_multisample, - GL_ANGLE_instanced_arrays, - GL_ANGLE_pack_reverse_row_order, - GL_ANGLE_program_binary, - GL_ANGLE_texture_compression_dxt3, - GL_ANGLE_texture_compression_dxt5, - GL_ANGLE_texture_usage, - GL_ANGLE_translated_shader_source, - GL_APPLE_clip_distance, - GL_APPLE_color_buffer_packed_float, - GL_APPLE_copy_texture_levels, - GL_APPLE_framebuffer_multisample, - GL_APPLE_rgb_422, - GL_APPLE_sync, - GL_APPLE_texture_format_BGRA8888, - GL_APPLE_texture_max_level, - GL_APPLE_texture_packed_float, - GL_ARM_mali_program_binary, - GL_ARM_mali_shader_binary, - GL_ARM_rgba8, - GL_ARM_shader_core_properties, - GL_ARM_shader_framebuffer_fetch, - GL_ARM_shader_framebuffer_fetch_depth_stencil, - GL_ARM_texture_unnormalized_coordinates, - GL_DMP_program_binary, - GL_DMP_shader_binary, - GL_EXT_EGL_image_array, - GL_EXT_EGL_image_storage, - GL_EXT_EGL_image_storage_compression, - GL_EXT_YUV_target, - GL_EXT_base_instance, - GL_EXT_blend_func_extended, - GL_EXT_blend_minmax, - GL_EXT_buffer_storage, - GL_EXT_clear_texture, - GL_EXT_clip_control, - GL_EXT_clip_cull_distance, - GL_EXT_color_buffer_float, - GL_EXT_color_buffer_half_float, - GL_EXT_conservative_depth, - GL_EXT_copy_image, - GL_EXT_debug_label, - GL_EXT_debug_marker, - GL_EXT_depth_clamp, - GL_EXT_discard_framebuffer, - GL_EXT_disjoint_timer_query, - GL_EXT_draw_buffers, - GL_EXT_draw_buffers_indexed, - GL_EXT_draw_elements_base_vertex, - GL_EXT_draw_instanced, - GL_EXT_draw_transform_feedback, - GL_EXT_external_buffer, - GL_EXT_float_blend, - GL_EXT_fragment_shading_rate, - GL_EXT_framebuffer_blit_layers, - GL_EXT_geometry_point_size, - GL_EXT_geometry_shader, - GL_EXT_gpu_shader5, - GL_EXT_instanced_arrays, - GL_EXT_map_buffer_range, - GL_EXT_memory_object, - GL_EXT_memory_object_fd, - GL_EXT_memory_object_win32, - GL_EXT_mesh_shader, - GL_EXT_multi_draw_arrays, - GL_EXT_multi_draw_indirect, - GL_EXT_multisampled_compatibility, - GL_EXT_multisampled_render_to_texture, - GL_EXT_multisampled_render_to_texture2, - GL_EXT_multiview_draw_buffers, - GL_EXT_multiview_tessellation_geometry_shader, - GL_EXT_multiview_texture_multisample, - GL_EXT_multiview_timer_query, - GL_EXT_occlusion_query_boolean, - GL_EXT_polygon_offset_clamp, - GL_EXT_post_depth_coverage, - GL_EXT_primitive_bounding_box, - GL_EXT_protected_textures, - GL_EXT_pvrtc_sRGB, - GL_EXT_raster_multisample, - GL_EXT_read_format_bgra, - GL_EXT_render_snorm, - GL_EXT_robustness, - GL_EXT_sRGB, - GL_EXT_sRGB_write_control, - GL_EXT_semaphore, - GL_EXT_semaphore_fd, - GL_EXT_semaphore_win32, - GL_EXT_separate_depth_stencil, - GL_EXT_separate_shader_objects, - GL_EXT_shader_framebuffer_fetch, - GL_EXT_shader_framebuffer_fetch_non_coherent, - GL_EXT_shader_group_vote, - GL_EXT_shader_implicit_conversions, - GL_EXT_shader_integer_mix, - GL_EXT_shader_io_blocks, - GL_EXT_shader_non_constant_global_initializers, - GL_EXT_shader_pixel_local_storage, - GL_EXT_shader_pixel_local_storage2, - GL_EXT_shader_samples_identical, - GL_EXT_shader_texture_lod, - GL_EXT_shader_texture_samples, - GL_EXT_shadow_samplers, - GL_EXT_sparse_texture, - GL_EXT_sparse_texture2, - GL_EXT_tessellation_point_size, - GL_EXT_tessellation_shader, - GL_EXT_texture_border_clamp, - GL_EXT_texture_buffer, - GL_EXT_texture_compression_astc_decode_mode, - GL_EXT_texture_compression_bptc, - GL_EXT_texture_compression_dxt1, - GL_EXT_texture_compression_rgtc, - GL_EXT_texture_compression_s3tc, - GL_EXT_texture_compression_s3tc_srgb, - GL_EXT_texture_cube_map_array, - GL_EXT_texture_filter_anisotropic, - GL_EXT_texture_filter_minmax, - GL_EXT_texture_format_BGRA8888, - GL_EXT_texture_format_sRGB_override, - GL_EXT_texture_mirror_clamp_to_edge, - GL_EXT_texture_norm16, - GL_EXT_texture_query_lod, - GL_EXT_texture_rg, - GL_EXT_texture_sRGB_R8, - GL_EXT_texture_sRGB_RG8, - GL_EXT_texture_sRGB_decode, - GL_EXT_texture_shadow_lod, - GL_EXT_texture_storage, - GL_EXT_texture_storage_compression, - GL_EXT_texture_type_2_10_10_10_REV, - GL_EXT_texture_view, - GL_EXT_unpack_subimage, - GL_EXT_win32_keyed_mutex, - GL_EXT_window_rectangles, - GL_FJ_shader_binary_GCCSO, - GL_HUAWEI_program_binary, - GL_HUAWEI_shader_binary, - GL_IMG_bindless_texture, - GL_IMG_framebuffer_downsample, - GL_IMG_multisampled_render_to_texture, - GL_IMG_program_binary, - GL_IMG_read_format, - GL_IMG_shader_binary, - GL_IMG_texture_compression_pvrtc, - GL_IMG_texture_compression_pvrtc2, - GL_IMG_texture_filter_cubic, - GL_INTEL_blackhole_render, - GL_INTEL_conservative_rasterization, - GL_INTEL_framebuffer_CMAA, - GL_INTEL_performance_query, - GL_KHR_blend_equation_advanced, - GL_KHR_blend_equation_advanced_coherent, - GL_KHR_context_flush_control, - GL_KHR_debug, - GL_KHR_no_error, - GL_KHR_parallel_shader_compile, - GL_KHR_robust_buffer_access_behavior, - GL_KHR_robustness, - GL_KHR_shader_subgroup, - GL_KHR_texture_compression_astc_hdr, - GL_KHR_texture_compression_astc_ldr, - GL_KHR_texture_compression_astc_sliced_3d, - GL_MESA_bgra, - GL_MESA_framebuffer_flip_x, - GL_MESA_framebuffer_flip_y, - GL_MESA_framebuffer_swap_xy, - GL_MESA_program_binary_formats, - GL_MESA_sampler_objects, - GL_MESA_shader_integer_functions, - GL_MESA_texture_const_bandwidth, - GL_NVX_blend_equation_advanced_multi_draw_buffers, - GL_NV_bindless_texture, - GL_NV_blend_equation_advanced, - GL_NV_blend_equation_advanced_coherent, - GL_NV_blend_minmax_factor, - GL_NV_clip_space_w_scaling, - GL_NV_compute_shader_derivatives, - GL_NV_conditional_render, - GL_NV_conservative_raster, - GL_NV_conservative_raster_pre_snap, - GL_NV_conservative_raster_pre_snap_triangles, - GL_NV_copy_buffer, - GL_NV_coverage_sample, - GL_NV_depth_nonlinear, - GL_NV_draw_buffers, - GL_NV_draw_instanced, - GL_NV_draw_vulkan_image, - GL_NV_explicit_attrib_location, - GL_NV_fbo_color_attachments, - GL_NV_fence, - GL_NV_fill_rectangle, - GL_NV_fragment_coverage_to_color, - GL_NV_fragment_shader_barycentric, - GL_NV_fragment_shader_interlock, - GL_NV_framebuffer_blit, - GL_NV_framebuffer_mixed_samples, - GL_NV_framebuffer_multisample, - GL_NV_generate_mipmap_sRGB, - GL_NV_geometry_shader_passthrough, - GL_NV_gpu_shader5, - GL_NV_image_formats, - GL_NV_instanced_arrays, - GL_NV_internalformat_sample_query, - GL_NV_memory_attachment, - GL_NV_memory_object_sparse, - GL_NV_mesh_shader, - GL_NV_non_square_matrices, - GL_NV_pack_subimage, - GL_NV_path_rendering, - GL_NV_path_rendering_shared_edge, - GL_NV_pixel_buffer_object, - GL_NV_polygon_mode, - GL_NV_primitive_shading_rate, - GL_NV_read_buffer, - GL_NV_read_buffer_front, - GL_NV_read_depth, - GL_NV_read_depth_stencil, - GL_NV_read_stencil, - GL_NV_representative_fragment_test, - GL_NV_sRGB_formats, - GL_NV_sample_locations, - GL_NV_sample_mask_override_coverage, - GL_NV_scissor_exclusive, - GL_NV_shader_atomic_fp16_vector, - GL_NV_shader_noperspective_interpolation, - GL_NV_shader_subgroup_partitioned, - GL_NV_shader_texture_footprint, - GL_NV_shading_rate_image, - GL_NV_shadow_samplers_array, - GL_NV_shadow_samplers_cube, - GL_NV_stereo_view_rendering, - GL_NV_texture_barrier, - GL_NV_texture_border_clamp, - GL_NV_texture_compression_s3tc_update, - GL_NV_texture_npot_2D_mipmap, - GL_NV_timeline_semaphore, - GL_NV_viewport_array, - GL_NV_viewport_array2, - GL_NV_viewport_swizzle, - GL_OES_EGL_image, - GL_OES_EGL_image_external, - GL_OES_EGL_image_external_essl3, - GL_OES_compressed_ETC1_RGB8_sub_texture, - GL_OES_compressed_ETC1_RGB8_texture, - GL_OES_compressed_paletted_texture, - GL_OES_copy_image, - GL_OES_depth24, - GL_OES_depth32, - GL_OES_depth_texture, - GL_OES_draw_buffers_indexed, - GL_OES_draw_elements_base_vertex, - GL_OES_element_index_uint, - GL_OES_fbo_render_mipmap, - GL_OES_fragment_precision_high, - GL_OES_geometry_point_size, - GL_OES_geometry_shader, - GL_OES_get_program_binary, - GL_OES_gpu_shader5, - GL_OES_mapbuffer, - GL_OES_packed_depth_stencil, - GL_OES_primitive_bounding_box, - GL_OES_required_internalformat, - GL_OES_rgb8_rgba8, - GL_OES_sample_shading, - GL_OES_sample_variables, - GL_OES_shader_image_atomic, - GL_OES_shader_io_blocks, - GL_OES_shader_multisample_interpolation, - GL_OES_standard_derivatives, - GL_OES_stencil1, - GL_OES_stencil4, - GL_OES_surfaceless_context, - GL_OES_tessellation_point_size, - GL_OES_tessellation_shader, - GL_OES_texture_3D, - GL_OES_texture_border_clamp, - GL_OES_texture_buffer, - GL_OES_texture_compression_astc, - GL_OES_texture_cube_map_array, - GL_OES_texture_float, - GL_OES_texture_float_linear, - GL_OES_texture_half_float, - GL_OES_texture_half_float_linear, - GL_OES_texture_npot, - GL_OES_texture_stencil8, - GL_OES_texture_storage_multisample_2d_array, - GL_OES_texture_view, - GL_OES_vertex_array_object, - GL_OES_vertex_half_float, - GL_OES_vertex_type_10_10_10_2, - GL_OES_viewport_array, - GL_OVR_multiview, - GL_OVR_multiview2, - GL_OVR_multiview_multisampled_render_to_texture, - GL_QCOM_YUV_texture_gather, - GL_QCOM_alpha_test, - GL_QCOM_binning_control, - GL_QCOM_driver_control, - GL_QCOM_extended_get, - GL_QCOM_extended_get2, - GL_QCOM_frame_extrapolation, - GL_QCOM_framebuffer_foveated, - GL_QCOM_motion_estimation, - GL_QCOM_perfmon_global_mode, - GL_QCOM_render_sRGB_R8_RG8, - GL_QCOM_render_shared_exponent, - GL_QCOM_shader_framebuffer_fetch_noncoherent, - GL_QCOM_shader_framebuffer_fetch_rate, - GL_QCOM_shading_rate, - GL_QCOM_texture_foveated, - GL_QCOM_texture_foveated2, - GL_QCOM_texture_foveated_subsampled_layout, - GL_QCOM_texture_lod_bias, - GL_QCOM_tiled_rendering, - GL_QCOM_writeonly_rendering, - GL_QCOM_ycbcr_degamma, - GL_VIV_shader_binary - Loader: True - Local files: False - Omit khrplatform: False - Reproducible: False - - Commandline: - --profile="compatibility" --api="gles2=3.2" --generator="c" --spec="gl" --extensions="GL_AMD_compressed_3DC_texture,GL_AMD_compressed_ATC_texture,GL_AMD_framebuffer_multisample_advanced,GL_AMD_performance_monitor,GL_AMD_program_binary_Z400,GL_ANDROID_extension_pack_es31a,GL_ANGLE_depth_texture,GL_ANGLE_framebuffer_blit,GL_ANGLE_framebuffer_multisample,GL_ANGLE_instanced_arrays,GL_ANGLE_pack_reverse_row_order,GL_ANGLE_program_binary,GL_ANGLE_texture_compression_dxt3,GL_ANGLE_texture_compression_dxt5,GL_ANGLE_texture_usage,GL_ANGLE_translated_shader_source,GL_APPLE_clip_distance,GL_APPLE_color_buffer_packed_float,GL_APPLE_copy_texture_levels,GL_APPLE_framebuffer_multisample,GL_APPLE_rgb_422,GL_APPLE_sync,GL_APPLE_texture_format_BGRA8888,GL_APPLE_texture_max_level,GL_APPLE_texture_packed_float,GL_ARM_mali_program_binary,GL_ARM_mali_shader_binary,GL_ARM_rgba8,GL_ARM_shader_core_properties,GL_ARM_shader_framebuffer_fetch,GL_ARM_shader_framebuffer_fetch_depth_stencil,GL_ARM_texture_unnormalized_coordinates,GL_DMP_program_binary,GL_DMP_shader_binary,GL_EXT_EGL_image_array,GL_EXT_EGL_image_storage,GL_EXT_EGL_image_storage_compression,GL_EXT_YUV_target,GL_EXT_base_instance,GL_EXT_blend_func_extended,GL_EXT_blend_minmax,GL_EXT_buffer_storage,GL_EXT_clear_texture,GL_EXT_clip_control,GL_EXT_clip_cull_distance,GL_EXT_color_buffer_float,GL_EXT_color_buffer_half_float,GL_EXT_conservative_depth,GL_EXT_copy_image,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_clamp,GL_EXT_discard_framebuffer,GL_EXT_disjoint_timer_query,GL_EXT_draw_buffers,GL_EXT_draw_buffers_indexed,GL_EXT_draw_elements_base_vertex,GL_EXT_draw_instanced,GL_EXT_draw_transform_feedback,GL_EXT_external_buffer,GL_EXT_float_blend,GL_EXT_fragment_shading_rate,GL_EXT_framebuffer_blit_layers,GL_EXT_geometry_point_size,GL_EXT_geometry_shader,GL_EXT_gpu_shader5,GL_EXT_instanced_arrays,GL_EXT_map_buffer_range,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_mesh_shader,GL_EXT_multi_draw_arrays,GL_EXT_multi_draw_indirect,GL_EXT_multisampled_compatibility,GL_EXT_multisampled_render_to_texture,GL_EXT_multisampled_render_to_texture2,GL_EXT_multiview_draw_buffers,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_occlusion_query_boolean,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_primitive_bounding_box,GL_EXT_protected_textures,GL_EXT_pvrtc_sRGB,GL_EXT_raster_multisample,GL_EXT_read_format_bgra,GL_EXT_render_snorm,GL_EXT_robustness,GL_EXT_sRGB,GL_EXT_sRGB_write_control,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_depth_stencil,GL_EXT_separate_shader_objects,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_group_vote,GL_EXT_shader_implicit_conversions,GL_EXT_shader_integer_mix,GL_EXT_shader_io_blocks,GL_EXT_shader_non_constant_global_initializers,GL_EXT_shader_pixel_local_storage,GL_EXT_shader_pixel_local_storage2,GL_EXT_shader_samples_identical,GL_EXT_shader_texture_lod,GL_EXT_shader_texture_samples,GL_EXT_shadow_samplers,GL_EXT_sparse_texture,GL_EXT_sparse_texture2,GL_EXT_tessellation_point_size,GL_EXT_tessellation_shader,GL_EXT_texture_border_clamp,GL_EXT_texture_buffer,GL_EXT_texture_compression_astc_decode_mode,GL_EXT_texture_compression_bptc,GL_EXT_texture_compression_dxt1,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_compression_s3tc_srgb,GL_EXT_texture_cube_map_array,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_format_BGRA8888,GL_EXT_texture_format_sRGB_override,GL_EXT_texture_mirror_clamp_to_edge,GL_EXT_texture_norm16,GL_EXT_texture_query_lod,GL_EXT_texture_rg,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_RG8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_storage,GL_EXT_texture_storage_compression,GL_EXT_texture_type_2_10_10_10_REV,GL_EXT_texture_view,GL_EXT_unpack_subimage,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_FJ_shader_binary_GCCSO,GL_HUAWEI_program_binary,GL_HUAWEI_shader_binary,GL_IMG_bindless_texture,GL_IMG_framebuffer_downsample,GL_IMG_multisampled_render_to_texture,GL_IMG_program_binary,GL_IMG_read_format,GL_IMG_shader_binary,GL_IMG_texture_compression_pvrtc,GL_IMG_texture_compression_pvrtc2,GL_IMG_texture_filter_cubic,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_framebuffer_CMAA,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESA_bgra,GL_MESA_framebuffer_flip_x,GL_MESA_framebuffer_flip_y,GL_MESA_framebuffer_swap_xy,GL_MESA_program_binary_formats,GL_MESA_sampler_objects,GL_MESA_shader_integer_functions,GL_MESA_texture_const_bandwidth,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_clip_space_w_scaling,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_copy_buffer,GL_NV_coverage_sample,GL_NV_depth_nonlinear,GL_NV_draw_buffers,GL_NV_draw_instanced,GL_NV_draw_vulkan_image,GL_NV_explicit_attrib_location,GL_NV_fbo_color_attachments,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_fragment_coverage_to_color,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_blit,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample,GL_NV_generate_mipmap_sRGB,GL_NV_geometry_shader_passthrough,GL_NV_gpu_shader5,GL_NV_image_formats,GL_NV_instanced_arrays,GL_NV_internalformat_sample_query,GL_NV_memory_attachment,GL_NV_memory_object_sparse,GL_NV_mesh_shader,GL_NV_non_square_matrices,GL_NV_pack_subimage,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_buffer_object,GL_NV_polygon_mode,GL_NV_primitive_shading_rate,GL_NV_read_buffer,GL_NV_read_buffer_front,GL_NV_read_depth,GL_NV_read_depth_stencil,GL_NV_read_stencil,GL_NV_representative_fragment_test,GL_NV_sRGB_formats,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_noperspective_interpolation,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shading_rate_image,GL_NV_shadow_samplers_array,GL_NV_shadow_samplers_cube,GL_NV_stereo_view_rendering,GL_NV_texture_barrier,GL_NV_texture_border_clamp,GL_NV_texture_compression_s3tc_update,GL_NV_texture_npot_2D_mipmap,GL_NV_timeline_semaphore,GL_NV_viewport_array,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_EGL_image,GL_OES_EGL_image_external,GL_OES_EGL_image_external_essl3,GL_OES_compressed_ETC1_RGB8_sub_texture,GL_OES_compressed_ETC1_RGB8_texture,GL_OES_compressed_paletted_texture,GL_OES_copy_image,GL_OES_depth24,GL_OES_depth32,GL_OES_depth_texture,GL_OES_draw_buffers_indexed,GL_OES_draw_elements_base_vertex,GL_OES_element_index_uint,GL_OES_fbo_render_mipmap,GL_OES_fragment_precision_high,GL_OES_geometry_point_size,GL_OES_geometry_shader,GL_OES_get_program_binary,GL_OES_gpu_shader5,GL_OES_mapbuffer,GL_OES_packed_depth_stencil,GL_OES_primitive_bounding_box,GL_OES_required_internalformat,GL_OES_rgb8_rgba8,GL_OES_sample_shading,GL_OES_sample_variables,GL_OES_shader_image_atomic,GL_OES_shader_io_blocks,GL_OES_shader_multisample_interpolation,GL_OES_standard_derivatives,GL_OES_stencil1,GL_OES_stencil4,GL_OES_surfaceless_context,GL_OES_tessellation_point_size,GL_OES_tessellation_shader,GL_OES_texture_3D,GL_OES_texture_border_clamp,GL_OES_texture_buffer,GL_OES_texture_compression_astc,GL_OES_texture_cube_map_array,GL_OES_texture_float,GL_OES_texture_float_linear,GL_OES_texture_half_float,GL_OES_texture_half_float_linear,GL_OES_texture_npot,GL_OES_texture_stencil8,GL_OES_texture_storage_multisample_2d_array,GL_OES_texture_view,GL_OES_vertex_array_object,GL_OES_vertex_half_float,GL_OES_vertex_type_10_10_10_2,GL_OES_viewport_array,GL_OVR_multiview,GL_OVR_multiview2,GL_OVR_multiview_multisampled_render_to_texture,GL_QCOM_YUV_texture_gather,GL_QCOM_alpha_test,GL_QCOM_binning_control,GL_QCOM_driver_control,GL_QCOM_extended_get,GL_QCOM_extended_get2,GL_QCOM_frame_extrapolation,GL_QCOM_framebuffer_foveated,GL_QCOM_motion_estimation,GL_QCOM_perfmon_global_mode,GL_QCOM_render_sRGB_R8_RG8,GL_QCOM_render_shared_exponent,GL_QCOM_shader_framebuffer_fetch_noncoherent,GL_QCOM_shader_framebuffer_fetch_rate,GL_QCOM_shading_rate,GL_QCOM_texture_foveated,GL_QCOM_texture_foveated2,GL_QCOM_texture_foveated_subsampled_layout,GL_QCOM_texture_lod_bias,GL_QCOM_tiled_rendering,GL_QCOM_writeonly_rendering,GL_QCOM_ycbcr_degamma,GL_VIV_shader_binary" - Online: - Too many extensions -*/ - -#include -#include -#include -#include - -struct gladGLversionStruct GLVersion = { 0, 0 }; - -#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 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 = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); - } - - if (exts_i == NULL) { - return 0; - } - - for(index = 0; index < num_exts_i; index++) { - const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); - size_t len = strlen(gl_str_tmp); - - char *local_str = (char*)malloc((len+1) * sizeof(char)); - if(local_str != NULL) { - memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); - } - exts_i[index] = local_str; - } - } -#endif - return 1; -} - -static void free_exts(void) { - if (exts_i != NULL) { - int index; - for(index = 0; index < num_exts_i; index++) { - free((char *)exts_i[index]); - } - free((void *)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; - if(exts_i == NULL) return 0; - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; - - if(exts_i[index] != NULL && strcmp(e, ext) == 0) { - return 1; - } - } - } -#endif - - return 0; -} -int GLAD_GL_ES_VERSION_2_0 = 0; -int GLAD_GL_ES_VERSION_3_0 = 0; -int GLAD_GL_ES_VERSION_3_1 = 0; -int GLAD_GL_ES_VERSION_3_2 = 0; -PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram = NULL; -PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; -PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; -PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; -PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; -PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; -PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; -PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; -PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; -PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; -PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture = NULL; -PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline = NULL; -PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; -PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; -PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; -PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL; -PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; -PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer = NULL; -PFNGLBLENDBARRIERPROC glad_glBlendBarrier = NULL; -PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; -PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; -PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; -PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL; -PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL; -PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; -PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; -PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL; -PFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL; -PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; -PFNGLBUFFERDATAPROC glad_glBufferData = NULL; -PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; -PFNGLCLEARPROC glad_glClear = NULL; -PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; -PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; -PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; -PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; -PFNGLCLEARCOLORPROC glad_glClearColor = NULL; -PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; -PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; -PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; -PFNGLCOLORMASKPROC glad_glColorMask = NULL; -PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; -PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; -PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; -PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; -PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; -PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData = NULL; -PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; -PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; -PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; -PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; -PFNGLCREATESHADERPROC glad_glCreateShader = NULL; -PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv = NULL; -PFNGLCULLFACEPROC glad_glCullFace = NULL; -PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback = NULL; -PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl = NULL; -PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert = NULL; -PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; -PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; -PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; -PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines = NULL; -PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; -PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; -PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; -PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; -PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; -PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; -PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL; -PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; -PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; -PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; -PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; -PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; -PFNGLDISABLEPROC glad_glDisable = NULL; -PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; -PFNGLDISABLEIPROC glad_glDisablei = NULL; -PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute = NULL; -PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect = NULL; -PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; -PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL; -PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; -PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; -PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; -PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; -PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL; -PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; -PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; -PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; -PFNGLENABLEPROC glad_glEnable = NULL; -PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; -PFNGLENABLEIPROC glad_glEnablei = NULL; -PFNGLENDQUERYPROC glad_glEndQuery = NULL; -PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; -PFNGLFENCESYNCPROC glad_glFenceSync = NULL; -PFNGLFINISHPROC glad_glFinish = NULL; -PFNGLFLUSHPROC glad_glFlush = NULL; -PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; -PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri = NULL; -PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; -PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; -PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; -PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; -PFNGLFRONTFACEPROC glad_glFrontFace = NULL; -PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; -PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; -PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines = NULL; -PFNGLGENQUERIESPROC glad_glGenQueries = NULL; -PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; -PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; -PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; -PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL; -PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; -PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; -PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; -PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; -PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; -PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; -PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; -PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; -PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; -PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; -PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; -PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; -PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog = NULL; -PFNGLGETERRORPROC glad_glGetError = NULL; -PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; -PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; -PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv = NULL; -PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus = NULL; -PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; -PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; -PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; -PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; -PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ = NULL; -PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; -PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel = NULL; -PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel = NULL; -PFNGLGETPOINTERVPROC glad_glGetPointerv = NULL; -PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary = NULL; -PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; -PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv = NULL; -PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog = NULL; -PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv = NULL; -PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex = NULL; -PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation = NULL; -PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName = NULL; -PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv = NULL; -PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; -PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; -PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; -PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; -PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; -PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; -PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; -PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; -PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; -PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; -PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; -PFNGLGETSTRINGPROC glad_glGetString = NULL; -PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; -PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; -PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; -PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; -PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; -PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; -PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; -PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; -PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; -PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; -PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; -PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; -PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; -PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; -PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; -PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; -PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; -PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; -PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; -PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; -PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv = NULL; -PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv = NULL; -PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv = NULL; -PFNGLHINTPROC glad_glHint = NULL; -PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer = NULL; -PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer = NULL; -PFNGLISBUFFERPROC glad_glIsBuffer = NULL; -PFNGLISENABLEDPROC glad_glIsEnabled = NULL; -PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; -PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; -PFNGLISPROGRAMPROC glad_glIsProgram = NULL; -PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline = NULL; -PFNGLISQUERYPROC glad_glIsQuery = NULL; -PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; -PFNGLISSAMPLERPROC glad_glIsSampler = NULL; -PFNGLISSHADERPROC glad_glIsShader = NULL; -PFNGLISSYNCPROC glad_glIsSync = NULL; -PFNGLISTEXTUREPROC glad_glIsTexture = NULL; -PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL; -PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; -PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; -PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; -PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; -PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier = NULL; -PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion = NULL; -PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL; -PFNGLOBJECTLABELPROC glad_glObjectLabel = NULL; -PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel = NULL; -PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL; -PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL; -PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; -PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; -PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup = NULL; -PFNGLPRIMITIVEBOUNDINGBOXPROC glad_glPrimitiveBoundingBox = NULL; -PFNGLPROGRAMBINARYPROC glad_glProgramBinary = NULL; -PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri = NULL; -PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f = NULL; -PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv = NULL; -PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i = NULL; -PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv = NULL; -PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui = NULL; -PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv = NULL; -PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f = NULL; -PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv = NULL; -PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i = NULL; -PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv = NULL; -PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui = NULL; -PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv = NULL; -PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f = NULL; -PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv = NULL; -PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i = NULL; -PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv = NULL; -PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui = NULL; -PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv = NULL; -PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f = NULL; -PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv = NULL; -PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i = NULL; -PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv = NULL; -PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui = NULL; -PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv = NULL; -PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup = NULL; -PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; -PFNGLREADPIXELSPROC glad_glReadPixels = NULL; -PFNGLREADNPIXELSPROC glad_glReadnPixels = NULL; -PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; -PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; -PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL; -PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; -PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; -PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; -PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; -PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; -PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; -PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; -PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; -PFNGLSCISSORPROC glad_glScissor = NULL; -PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; -PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; -PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; -PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; -PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; -PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; -PFNGLSTENCILOPPROC glad_glStencilOp = NULL; -PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; -PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; -PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange = NULL; -PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; -PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; -PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; -PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; -PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; -PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; -PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; -PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; -PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D = NULL; -PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample = NULL; -PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D = NULL; -PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample = NULL; -PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; -PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; -PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; -PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; -PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; -PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; -PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; -PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; -PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; -PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; -PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; -PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; -PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; -PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; -PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; -PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; -PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; -PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; -PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; -PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; -PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; -PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; -PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; -PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; -PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; -PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; -PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; -PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; -PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; -PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; -PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; -PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; -PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; -PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; -PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; -PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; -PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; -PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; -PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; -PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages = NULL; -PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; -PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline = NULL; -PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; -PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; -PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; -PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; -PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; -PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; -PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; -PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; -PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding = NULL; -PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; -PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat = NULL; -PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; -PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; -PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; -PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; -PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat = NULL; -PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; -PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; -PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor = NULL; -PFNGLVIEWPORTPROC glad_glViewport = NULL; -PFNGLWAITSYNCPROC glad_glWaitSync = NULL; -int GLAD_GL_AMD_compressed_3DC_texture = 0; -int GLAD_GL_AMD_compressed_ATC_texture = 0; -int GLAD_GL_AMD_framebuffer_multisample_advanced = 0; -int GLAD_GL_AMD_performance_monitor = 0; -int GLAD_GL_AMD_program_binary_Z400 = 0; -int GLAD_GL_ANDROID_extension_pack_es31a = 0; -int GLAD_GL_ANGLE_depth_texture = 0; -int GLAD_GL_ANGLE_framebuffer_blit = 0; -int GLAD_GL_ANGLE_framebuffer_multisample = 0; -int GLAD_GL_ANGLE_instanced_arrays = 0; -int GLAD_GL_ANGLE_pack_reverse_row_order = 0; -int GLAD_GL_ANGLE_program_binary = 0; -int GLAD_GL_ANGLE_texture_compression_dxt3 = 0; -int GLAD_GL_ANGLE_texture_compression_dxt5 = 0; -int GLAD_GL_ANGLE_texture_usage = 0; -int GLAD_GL_ANGLE_translated_shader_source = 0; -int GLAD_GL_APPLE_clip_distance = 0; -int GLAD_GL_APPLE_color_buffer_packed_float = 0; -int GLAD_GL_APPLE_copy_texture_levels = 0; -int GLAD_GL_APPLE_framebuffer_multisample = 0; -int GLAD_GL_APPLE_rgb_422 = 0; -int GLAD_GL_APPLE_sync = 0; -int GLAD_GL_APPLE_texture_format_BGRA8888 = 0; -int GLAD_GL_APPLE_texture_max_level = 0; -int GLAD_GL_APPLE_texture_packed_float = 0; -int GLAD_GL_ARM_mali_program_binary = 0; -int GLAD_GL_ARM_mali_shader_binary = 0; -int GLAD_GL_ARM_rgba8 = 0; -int GLAD_GL_ARM_shader_core_properties = 0; -int GLAD_GL_ARM_shader_framebuffer_fetch = 0; -int GLAD_GL_ARM_shader_framebuffer_fetch_depth_stencil = 0; -int GLAD_GL_ARM_texture_unnormalized_coordinates = 0; -int GLAD_GL_DMP_program_binary = 0; -int GLAD_GL_DMP_shader_binary = 0; -int GLAD_GL_EXT_EGL_image_array = 0; -int GLAD_GL_EXT_EGL_image_storage = 0; -int GLAD_GL_EXT_EGL_image_storage_compression = 0; -int GLAD_GL_EXT_YUV_target = 0; -int GLAD_GL_EXT_base_instance = 0; -int GLAD_GL_EXT_blend_func_extended = 0; -int GLAD_GL_EXT_blend_minmax = 0; -int GLAD_GL_EXT_buffer_storage = 0; -int GLAD_GL_EXT_clear_texture = 0; -int GLAD_GL_EXT_clip_control = 0; -int GLAD_GL_EXT_clip_cull_distance = 0; -int GLAD_GL_EXT_color_buffer_float = 0; -int GLAD_GL_EXT_color_buffer_half_float = 0; -int GLAD_GL_EXT_conservative_depth = 0; -int GLAD_GL_EXT_copy_image = 0; -int GLAD_GL_EXT_debug_label = 0; -int GLAD_GL_EXT_debug_marker = 0; -int GLAD_GL_EXT_depth_clamp = 0; -int GLAD_GL_EXT_discard_framebuffer = 0; -int GLAD_GL_EXT_disjoint_timer_query = 0; -int GLAD_GL_EXT_draw_buffers = 0; -int GLAD_GL_EXT_draw_buffers_indexed = 0; -int GLAD_GL_EXT_draw_elements_base_vertex = 0; -int GLAD_GL_EXT_draw_instanced = 0; -int GLAD_GL_EXT_draw_transform_feedback = 0; -int GLAD_GL_EXT_external_buffer = 0; -int GLAD_GL_EXT_float_blend = 0; -int GLAD_GL_EXT_fragment_shading_rate = 0; -int GLAD_GL_EXT_framebuffer_blit_layers = 0; -int GLAD_GL_EXT_geometry_point_size = 0; -int GLAD_GL_EXT_geometry_shader = 0; -int GLAD_GL_EXT_gpu_shader5 = 0; -int GLAD_GL_EXT_instanced_arrays = 0; -int GLAD_GL_EXT_map_buffer_range = 0; -int GLAD_GL_EXT_memory_object = 0; -int GLAD_GL_EXT_memory_object_fd = 0; -int GLAD_GL_EXT_memory_object_win32 = 0; -int GLAD_GL_EXT_mesh_shader = 0; -int GLAD_GL_EXT_multi_draw_arrays = 0; -int GLAD_GL_EXT_multi_draw_indirect = 0; -int GLAD_GL_EXT_multisampled_compatibility = 0; -int GLAD_GL_EXT_multisampled_render_to_texture = 0; -int GLAD_GL_EXT_multisampled_render_to_texture2 = 0; -int GLAD_GL_EXT_multiview_draw_buffers = 0; -int GLAD_GL_EXT_multiview_tessellation_geometry_shader = 0; -int GLAD_GL_EXT_multiview_texture_multisample = 0; -int GLAD_GL_EXT_multiview_timer_query = 0; -int GLAD_GL_EXT_occlusion_query_boolean = 0; -int GLAD_GL_EXT_polygon_offset_clamp = 0; -int GLAD_GL_EXT_post_depth_coverage = 0; -int GLAD_GL_EXT_primitive_bounding_box = 0; -int GLAD_GL_EXT_protected_textures = 0; -int GLAD_GL_EXT_pvrtc_sRGB = 0; -int GLAD_GL_EXT_raster_multisample = 0; -int GLAD_GL_EXT_read_format_bgra = 0; -int GLAD_GL_EXT_render_snorm = 0; -int GLAD_GL_EXT_robustness = 0; -int GLAD_GL_EXT_sRGB = 0; -int GLAD_GL_EXT_sRGB_write_control = 0; -int GLAD_GL_EXT_semaphore = 0; -int GLAD_GL_EXT_semaphore_fd = 0; -int GLAD_GL_EXT_semaphore_win32 = 0; -int GLAD_GL_EXT_separate_depth_stencil = 0; -int GLAD_GL_EXT_separate_shader_objects = 0; -int GLAD_GL_EXT_shader_framebuffer_fetch = 0; -int GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent = 0; -int GLAD_GL_EXT_shader_group_vote = 0; -int GLAD_GL_EXT_shader_implicit_conversions = 0; -int GLAD_GL_EXT_shader_integer_mix = 0; -int GLAD_GL_EXT_shader_io_blocks = 0; -int GLAD_GL_EXT_shader_non_constant_global_initializers = 0; -int GLAD_GL_EXT_shader_pixel_local_storage = 0; -int GLAD_GL_EXT_shader_pixel_local_storage2 = 0; -int GLAD_GL_EXT_shader_samples_identical = 0; -int GLAD_GL_EXT_shader_texture_lod = 0; -int GLAD_GL_EXT_shader_texture_samples = 0; -int GLAD_GL_EXT_shadow_samplers = 0; -int GLAD_GL_EXT_sparse_texture = 0; -int GLAD_GL_EXT_sparse_texture2 = 0; -int GLAD_GL_EXT_tessellation_point_size = 0; -int GLAD_GL_EXT_tessellation_shader = 0; -int GLAD_GL_EXT_texture_border_clamp = 0; -int GLAD_GL_EXT_texture_buffer = 0; -int GLAD_GL_EXT_texture_compression_astc_decode_mode = 0; -int GLAD_GL_EXT_texture_compression_bptc = 0; -int GLAD_GL_EXT_texture_compression_dxt1 = 0; -int GLAD_GL_EXT_texture_compression_rgtc = 0; -int GLAD_GL_EXT_texture_compression_s3tc = 0; -int GLAD_GL_EXT_texture_compression_s3tc_srgb = 0; -int GLAD_GL_EXT_texture_cube_map_array = 0; -int GLAD_GL_EXT_texture_filter_anisotropic = 0; -int GLAD_GL_EXT_texture_filter_minmax = 0; -int GLAD_GL_EXT_texture_format_BGRA8888 = 0; -int GLAD_GL_EXT_texture_format_sRGB_override = 0; -int GLAD_GL_EXT_texture_mirror_clamp_to_edge = 0; -int GLAD_GL_EXT_texture_norm16 = 0; -int GLAD_GL_EXT_texture_query_lod = 0; -int GLAD_GL_EXT_texture_rg = 0; -int GLAD_GL_EXT_texture_sRGB_R8 = 0; -int GLAD_GL_EXT_texture_sRGB_RG8 = 0; -int GLAD_GL_EXT_texture_sRGB_decode = 0; -int GLAD_GL_EXT_texture_shadow_lod = 0; -int GLAD_GL_EXT_texture_storage = 0; -int GLAD_GL_EXT_texture_storage_compression = 0; -int GLAD_GL_EXT_texture_type_2_10_10_10_REV = 0; -int GLAD_GL_EXT_texture_view = 0; -int GLAD_GL_EXT_unpack_subimage = 0; -int GLAD_GL_EXT_win32_keyed_mutex = 0; -int GLAD_GL_EXT_window_rectangles = 0; -int GLAD_GL_FJ_shader_binary_GCCSO = 0; -int GLAD_GL_HUAWEI_program_binary = 0; -int GLAD_GL_HUAWEI_shader_binary = 0; -int GLAD_GL_IMG_bindless_texture = 0; -int GLAD_GL_IMG_framebuffer_downsample = 0; -int GLAD_GL_IMG_multisampled_render_to_texture = 0; -int GLAD_GL_IMG_program_binary = 0; -int GLAD_GL_IMG_read_format = 0; -int GLAD_GL_IMG_shader_binary = 0; -int GLAD_GL_IMG_texture_compression_pvrtc = 0; -int GLAD_GL_IMG_texture_compression_pvrtc2 = 0; -int GLAD_GL_IMG_texture_filter_cubic = 0; -int GLAD_GL_INTEL_blackhole_render = 0; -int GLAD_GL_INTEL_conservative_rasterization = 0; -int GLAD_GL_INTEL_framebuffer_CMAA = 0; -int GLAD_GL_INTEL_performance_query = 0; -int GLAD_GL_KHR_blend_equation_advanced = 0; -int GLAD_GL_KHR_blend_equation_advanced_coherent = 0; -int GLAD_GL_KHR_context_flush_control = 0; -int GLAD_GL_KHR_debug = 0; -int GLAD_GL_KHR_no_error = 0; -int GLAD_GL_KHR_parallel_shader_compile = 0; -int GLAD_GL_KHR_robust_buffer_access_behavior = 0; -int GLAD_GL_KHR_robustness = 0; -int GLAD_GL_KHR_shader_subgroup = 0; -int GLAD_GL_KHR_texture_compression_astc_hdr = 0; -int GLAD_GL_KHR_texture_compression_astc_ldr = 0; -int GLAD_GL_KHR_texture_compression_astc_sliced_3d = 0; -int GLAD_GL_MESA_bgra = 0; -int GLAD_GL_MESA_framebuffer_flip_x = 0; -int GLAD_GL_MESA_framebuffer_flip_y = 0; -int GLAD_GL_MESA_framebuffer_swap_xy = 0; -int GLAD_GL_MESA_program_binary_formats = 0; -int GLAD_GL_MESA_sampler_objects = 0; -int GLAD_GL_MESA_shader_integer_functions = 0; -int GLAD_GL_MESA_texture_const_bandwidth = 0; -int GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers = 0; -int GLAD_GL_NV_bindless_texture = 0; -int GLAD_GL_NV_blend_equation_advanced = 0; -int GLAD_GL_NV_blend_equation_advanced_coherent = 0; -int GLAD_GL_NV_blend_minmax_factor = 0; -int GLAD_GL_NV_clip_space_w_scaling = 0; -int GLAD_GL_NV_compute_shader_derivatives = 0; -int GLAD_GL_NV_conditional_render = 0; -int GLAD_GL_NV_conservative_raster = 0; -int GLAD_GL_NV_conservative_raster_pre_snap = 0; -int GLAD_GL_NV_conservative_raster_pre_snap_triangles = 0; -int GLAD_GL_NV_copy_buffer = 0; -int GLAD_GL_NV_coverage_sample = 0; -int GLAD_GL_NV_depth_nonlinear = 0; -int GLAD_GL_NV_draw_buffers = 0; -int GLAD_GL_NV_draw_instanced = 0; -int GLAD_GL_NV_draw_vulkan_image = 0; -int GLAD_GL_NV_explicit_attrib_location = 0; -int GLAD_GL_NV_fbo_color_attachments = 0; -int GLAD_GL_NV_fence = 0; -int GLAD_GL_NV_fill_rectangle = 0; -int GLAD_GL_NV_fragment_coverage_to_color = 0; -int GLAD_GL_NV_fragment_shader_barycentric = 0; -int GLAD_GL_NV_fragment_shader_interlock = 0; -int GLAD_GL_NV_framebuffer_blit = 0; -int GLAD_GL_NV_framebuffer_mixed_samples = 0; -int GLAD_GL_NV_framebuffer_multisample = 0; -int GLAD_GL_NV_generate_mipmap_sRGB = 0; -int GLAD_GL_NV_geometry_shader_passthrough = 0; -int GLAD_GL_NV_gpu_shader5 = 0; -int GLAD_GL_NV_image_formats = 0; -int GLAD_GL_NV_instanced_arrays = 0; -int GLAD_GL_NV_internalformat_sample_query = 0; -int GLAD_GL_NV_memory_attachment = 0; -int GLAD_GL_NV_memory_object_sparse = 0; -int GLAD_GL_NV_mesh_shader = 0; -int GLAD_GL_NV_non_square_matrices = 0; -int GLAD_GL_NV_pack_subimage = 0; -int GLAD_GL_NV_path_rendering = 0; -int GLAD_GL_NV_path_rendering_shared_edge = 0; -int GLAD_GL_NV_pixel_buffer_object = 0; -int GLAD_GL_NV_polygon_mode = 0; -int GLAD_GL_NV_primitive_shading_rate = 0; -int GLAD_GL_NV_read_buffer = 0; -int GLAD_GL_NV_read_buffer_front = 0; -int GLAD_GL_NV_read_depth = 0; -int GLAD_GL_NV_read_depth_stencil = 0; -int GLAD_GL_NV_read_stencil = 0; -int GLAD_GL_NV_representative_fragment_test = 0; -int GLAD_GL_NV_sRGB_formats = 0; -int GLAD_GL_NV_sample_locations = 0; -int GLAD_GL_NV_sample_mask_override_coverage = 0; -int GLAD_GL_NV_scissor_exclusive = 0; -int GLAD_GL_NV_shader_atomic_fp16_vector = 0; -int GLAD_GL_NV_shader_noperspective_interpolation = 0; -int GLAD_GL_NV_shader_subgroup_partitioned = 0; -int GLAD_GL_NV_shader_texture_footprint = 0; -int GLAD_GL_NV_shading_rate_image = 0; -int GLAD_GL_NV_shadow_samplers_array = 0; -int GLAD_GL_NV_shadow_samplers_cube = 0; -int GLAD_GL_NV_stereo_view_rendering = 0; -int GLAD_GL_NV_texture_barrier = 0; -int GLAD_GL_NV_texture_border_clamp = 0; -int GLAD_GL_NV_texture_compression_s3tc_update = 0; -int GLAD_GL_NV_texture_npot_2D_mipmap = 0; -int GLAD_GL_NV_timeline_semaphore = 0; -int GLAD_GL_NV_viewport_array = 0; -int GLAD_GL_NV_viewport_array2 = 0; -int GLAD_GL_NV_viewport_swizzle = 0; -int GLAD_GL_OES_EGL_image = 0; -int GLAD_GL_OES_EGL_image_external = 0; -int GLAD_GL_OES_EGL_image_external_essl3 = 0; -int GLAD_GL_OES_compressed_ETC1_RGB8_sub_texture = 0; -int GLAD_GL_OES_compressed_ETC1_RGB8_texture = 0; -int GLAD_GL_OES_compressed_paletted_texture = 0; -int GLAD_GL_OES_copy_image = 0; -int GLAD_GL_OES_depth24 = 0; -int GLAD_GL_OES_depth32 = 0; -int GLAD_GL_OES_depth_texture = 0; -int GLAD_GL_OES_draw_buffers_indexed = 0; -int GLAD_GL_OES_draw_elements_base_vertex = 0; -int GLAD_GL_OES_element_index_uint = 0; -int GLAD_GL_OES_fbo_render_mipmap = 0; -int GLAD_GL_OES_fragment_precision_high = 0; -int GLAD_GL_OES_geometry_point_size = 0; -int GLAD_GL_OES_geometry_shader = 0; -int GLAD_GL_OES_get_program_binary = 0; -int GLAD_GL_OES_gpu_shader5 = 0; -int GLAD_GL_OES_mapbuffer = 0; -int GLAD_GL_OES_packed_depth_stencil = 0; -int GLAD_GL_OES_primitive_bounding_box = 0; -int GLAD_GL_OES_required_internalformat = 0; -int GLAD_GL_OES_rgb8_rgba8 = 0; -int GLAD_GL_OES_sample_shading = 0; -int GLAD_GL_OES_sample_variables = 0; -int GLAD_GL_OES_shader_image_atomic = 0; -int GLAD_GL_OES_shader_io_blocks = 0; -int GLAD_GL_OES_shader_multisample_interpolation = 0; -int GLAD_GL_OES_standard_derivatives = 0; -int GLAD_GL_OES_stencil1 = 0; -int GLAD_GL_OES_stencil4 = 0; -int GLAD_GL_OES_surfaceless_context = 0; -int GLAD_GL_OES_tessellation_point_size = 0; -int GLAD_GL_OES_tessellation_shader = 0; -int GLAD_GL_OES_texture_3D = 0; -int GLAD_GL_OES_texture_border_clamp = 0; -int GLAD_GL_OES_texture_buffer = 0; -int GLAD_GL_OES_texture_compression_astc = 0; -int GLAD_GL_OES_texture_cube_map_array = 0; -int GLAD_GL_OES_texture_float = 0; -int GLAD_GL_OES_texture_float_linear = 0; -int GLAD_GL_OES_texture_half_float = 0; -int GLAD_GL_OES_texture_half_float_linear = 0; -int GLAD_GL_OES_texture_npot = 0; -int GLAD_GL_OES_texture_stencil8 = 0; -int GLAD_GL_OES_texture_storage_multisample_2d_array = 0; -int GLAD_GL_OES_texture_view = 0; -int GLAD_GL_OES_vertex_array_object = 0; -int GLAD_GL_OES_vertex_half_float = 0; -int GLAD_GL_OES_vertex_type_10_10_10_2 = 0; -int GLAD_GL_OES_viewport_array = 0; -int GLAD_GL_OVR_multiview = 0; -int GLAD_GL_OVR_multiview2 = 0; -int GLAD_GL_OVR_multiview_multisampled_render_to_texture = 0; -int GLAD_GL_QCOM_YUV_texture_gather = 0; -int GLAD_GL_QCOM_alpha_test = 0; -int GLAD_GL_QCOM_binning_control = 0; -int GLAD_GL_QCOM_driver_control = 0; -int GLAD_GL_QCOM_extended_get = 0; -int GLAD_GL_QCOM_extended_get2 = 0; -int GLAD_GL_QCOM_frame_extrapolation = 0; -int GLAD_GL_QCOM_framebuffer_foveated = 0; -int GLAD_GL_QCOM_motion_estimation = 0; -int GLAD_GL_QCOM_perfmon_global_mode = 0; -int GLAD_GL_QCOM_render_sRGB_R8_RG8 = 0; -int GLAD_GL_QCOM_render_shared_exponent = 0; -int GLAD_GL_QCOM_shader_framebuffer_fetch_noncoherent = 0; -int GLAD_GL_QCOM_shader_framebuffer_fetch_rate = 0; -int GLAD_GL_QCOM_shading_rate = 0; -int GLAD_GL_QCOM_texture_foveated = 0; -int GLAD_GL_QCOM_texture_foveated2 = 0; -int GLAD_GL_QCOM_texture_foveated_subsampled_layout = 0; -int GLAD_GL_QCOM_texture_lod_bias = 0; -int GLAD_GL_QCOM_tiled_rendering = 0; -int GLAD_GL_QCOM_writeonly_rendering = 0; -int GLAD_GL_QCOM_ycbcr_degamma = 0; -int GLAD_GL_VIV_shader_binary = 0; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glRenderbufferStorageMultisampleAdvancedAMD = NULL; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC glad_glNamedRenderbufferStorageMultisampleAdvancedAMD = NULL; -PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD = NULL; -PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD = NULL; -PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD = NULL; -PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD = NULL; -PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD = NULL; -PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD = NULL; -PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD = NULL; -PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD = NULL; -PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD = NULL; -PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD = NULL; -PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD = NULL; -PFNGLBLITFRAMEBUFFERANGLEPROC glad_glBlitFramebufferANGLE = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC glad_glRenderbufferStorageMultisampleANGLE = NULL; -PFNGLDRAWARRAYSINSTANCEDANGLEPROC glad_glDrawArraysInstancedANGLE = NULL; -PFNGLDRAWELEMENTSINSTANCEDANGLEPROC glad_glDrawElementsInstancedANGLE = NULL; -PFNGLVERTEXATTRIBDIVISORANGLEPROC glad_glVertexAttribDivisorANGLE = NULL; -PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC glad_glGetTranslatedShaderSourceANGLE = NULL; -PFNGLCOPYTEXTURELEVELSAPPLEPROC glad_glCopyTextureLevelsAPPLE = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC glad_glRenderbufferStorageMultisampleAPPLE = NULL; -PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC glad_glResolveMultisampleFramebufferAPPLE = NULL; -PFNGLFENCESYNCAPPLEPROC glad_glFenceSyncAPPLE = NULL; -PFNGLISSYNCAPPLEPROC glad_glIsSyncAPPLE = NULL; -PFNGLDELETESYNCAPPLEPROC glad_glDeleteSyncAPPLE = NULL; -PFNGLCLIENTWAITSYNCAPPLEPROC glad_glClientWaitSyncAPPLE = NULL; -PFNGLWAITSYNCAPPLEPROC glad_glWaitSyncAPPLE = NULL; -PFNGLGETINTEGER64VAPPLEPROC glad_glGetInteger64vAPPLE = NULL; -PFNGLGETSYNCIVAPPLEPROC glad_glGetSyncivAPPLE = NULL; -PFNGLMAXACTIVESHADERCORESARMPROC glad_glMaxActiveShaderCoresARM = NULL; -PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glad_glEGLImageTargetTexStorageEXT = NULL; -PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC glad_glEGLImageTargetTextureStorageEXT = NULL; -PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC glad_glDrawArraysInstancedBaseInstanceEXT = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC glad_glDrawElementsInstancedBaseInstanceEXT = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC glad_glDrawElementsInstancedBaseVertexBaseInstanceEXT = NULL; -PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC glad_glBindFragDataLocationIndexedEXT = NULL; -PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT = NULL; -PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC glad_glGetProgramResourceLocationIndexEXT = NULL; -PFNGLGETFRAGDATAINDEXEXTPROC glad_glGetFragDataIndexEXT = NULL; -PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT = NULL; -PFNGLBUFFERSTORAGEEXTPROC glad_glBufferStorageEXT = NULL; -PFNGLCLEARTEXIMAGEEXTPROC glad_glClearTexImageEXT = NULL; -PFNGLCLEARTEXSUBIMAGEEXTPROC glad_glClearTexSubImageEXT = NULL; -PFNGLCLIPCONTROLEXTPROC glad_glClipControlEXT = NULL; -PFNGLCOPYIMAGESUBDATAEXTPROC glad_glCopyImageSubDataEXT = NULL; -PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT = NULL; -PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT = NULL; -PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT = NULL; -PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT = NULL; -PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT = NULL; -PFNGLDISCARDFRAMEBUFFEREXTPROC glad_glDiscardFramebufferEXT = NULL; -PFNGLGENQUERIESEXTPROC glad_glGenQueriesEXT = NULL; -PFNGLDELETEQUERIESEXTPROC glad_glDeleteQueriesEXT = NULL; -PFNGLISQUERYEXTPROC glad_glIsQueryEXT = NULL; -PFNGLBEGINQUERYEXTPROC glad_glBeginQueryEXT = NULL; -PFNGLENDQUERYEXTPROC glad_glEndQueryEXT = NULL; -PFNGLQUERYCOUNTEREXTPROC glad_glQueryCounterEXT = NULL; -PFNGLGETQUERYIVEXTPROC glad_glGetQueryivEXT = NULL; -PFNGLGETQUERYOBJECTIVEXTPROC glad_glGetQueryObjectivEXT = NULL; -PFNGLGETQUERYOBJECTUIVEXTPROC glad_glGetQueryObjectuivEXT = NULL; -PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT = NULL; -PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT = NULL; -PFNGLGETINTEGER64VEXTPROC glad_glGetInteger64vEXT = NULL; -PFNGLDRAWBUFFERSEXTPROC glad_glDrawBuffersEXT = NULL; -PFNGLENABLEIEXTPROC glad_glEnableiEXT = NULL; -PFNGLDISABLEIEXTPROC glad_glDisableiEXT = NULL; -PFNGLBLENDEQUATIONIEXTPROC glad_glBlendEquationiEXT = NULL; -PFNGLBLENDEQUATIONSEPARATEIEXTPROC glad_glBlendEquationSeparateiEXT = NULL; -PFNGLBLENDFUNCIEXTPROC glad_glBlendFunciEXT = NULL; -PFNGLBLENDFUNCSEPARATEIEXTPROC glad_glBlendFuncSeparateiEXT = NULL; -PFNGLCOLORMASKIEXTPROC glad_glColorMaskiEXT = NULL; -PFNGLISENABLEDIEXTPROC glad_glIsEnablediEXT = NULL; -PFNGLDRAWELEMENTSBASEVERTEXEXTPROC glad_glDrawElementsBaseVertexEXT = NULL; -PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC glad_glDrawRangeElementsBaseVertexEXT = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC glad_glDrawElementsInstancedBaseVertexEXT = NULL; -PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC glad_glMultiDrawElementsBaseVertexEXT = NULL; -PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT = NULL; -PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT = NULL; -PFNGLDRAWTRANSFORMFEEDBACKEXTPROC glad_glDrawTransformFeedbackEXT = NULL; -PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC glad_glDrawTransformFeedbackInstancedEXT = NULL; -PFNGLBUFFERSTORAGEEXTERNALEXTPROC glad_glBufferStorageExternalEXT = NULL; -PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC glad_glNamedBufferStorageExternalEXT = NULL; -PFNGLGETFRAGMENTSHADINGRATESEXTPROC glad_glGetFragmentShadingRatesEXT = NULL; -PFNGLSHADINGRATEEXTPROC glad_glShadingRateEXT = NULL; -PFNGLSHADINGRATECOMBINEROPSEXTPROC glad_glShadingRateCombinerOpsEXT = NULL; -PFNGLFRAMEBUFFERSHADINGRATEEXTPROC glad_glFramebufferShadingRateEXT = NULL; -PFNGLBLITFRAMEBUFFERLAYERSEXTPROC glad_glBlitFramebufferLayersEXT = NULL; -PFNGLBLITFRAMEBUFFERLAYEREXTPROC glad_glBlitFramebufferLayerEXT = NULL; -PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT = NULL; -PFNGLVERTEXATTRIBDIVISOREXTPROC glad_glVertexAttribDivisorEXT = NULL; -PFNGLMAPBUFFERRANGEEXTPROC glad_glMapBufferRangeEXT = NULL; -PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC glad_glFlushMappedBufferRangeEXT = NULL; -PFNGLGETUNSIGNEDBYTEVEXTPROC glad_glGetUnsignedBytevEXT = NULL; -PFNGLGETUNSIGNEDBYTEI_VEXTPROC glad_glGetUnsignedBytei_vEXT = NULL; -PFNGLDELETEMEMORYOBJECTSEXTPROC glad_glDeleteMemoryObjectsEXT = NULL; -PFNGLISMEMORYOBJECTEXTPROC glad_glIsMemoryObjectEXT = NULL; -PFNGLCREATEMEMORYOBJECTSEXTPROC glad_glCreateMemoryObjectsEXT = NULL; -PFNGLMEMORYOBJECTPARAMETERIVEXTPROC glad_glMemoryObjectParameterivEXT = NULL; -PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC glad_glGetMemoryObjectParameterivEXT = NULL; -PFNGLTEXSTORAGEMEM2DEXTPROC glad_glTexStorageMem2DEXT = NULL; -PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTexStorageMem2DMultisampleEXT = NULL; -PFNGLTEXSTORAGEMEM3DEXTPROC glad_glTexStorageMem3DEXT = NULL; -PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTexStorageMem3DMultisampleEXT = NULL; -PFNGLBUFFERSTORAGEMEMEXTPROC glad_glBufferStorageMemEXT = NULL; -PFNGLTEXTURESTORAGEMEM2DEXTPROC glad_glTextureStorageMem2DEXT = NULL; -PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC glad_glTextureStorageMem2DMultisampleEXT = NULL; -PFNGLTEXTURESTORAGEMEM3DEXTPROC glad_glTextureStorageMem3DEXT = NULL; -PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC glad_glTextureStorageMem3DMultisampleEXT = NULL; -PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC glad_glNamedBufferStorageMemEXT = NULL; -PFNGLTEXSTORAGEMEM1DEXTPROC glad_glTexStorageMem1DEXT = NULL; -PFNGLTEXTURESTORAGEMEM1DEXTPROC glad_glTextureStorageMem1DEXT = NULL; -PFNGLIMPORTMEMORYFDEXTPROC glad_glImportMemoryFdEXT = NULL; -PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC glad_glImportMemoryWin32HandleEXT = NULL; -PFNGLIMPORTMEMORYWIN32NAMEEXTPROC glad_glImportMemoryWin32NameEXT = NULL; -PFNGLDRAWMESHTASKSEXTPROC glad_glDrawMeshTasksEXT = NULL; -PFNGLDRAWMESHTASKSINDIRECTEXTPROC glad_glDrawMeshTasksIndirectEXT = NULL; -PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC glad_glMultiDrawMeshTasksIndirectEXT = NULL; -PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC glad_glMultiDrawMeshTasksIndirectCountEXT = NULL; -PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT = NULL; -PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT = NULL; -PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC glad_glMultiDrawArraysIndirectEXT = NULL; -PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC glad_glMultiDrawElementsIndirectEXT = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC glad_glFramebufferTexture2DMultisampleEXT = NULL; -PFNGLREADBUFFERINDEXEDEXTPROC glad_glReadBufferIndexedEXT = NULL; -PFNGLDRAWBUFFERSINDEXEDEXTPROC glad_glDrawBuffersIndexedEXT = NULL; -PFNGLGETINTEGERI_VEXTPROC glad_glGetIntegeri_vEXT = NULL; -PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT = NULL; -PFNGLPRIMITIVEBOUNDINGBOXEXTPROC glad_glPrimitiveBoundingBoxEXT = NULL; -PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT = NULL; -PFNGLGETGRAPHICSRESETSTATUSEXTPROC glad_glGetGraphicsResetStatusEXT = NULL; -PFNGLREADNPIXELSEXTPROC glad_glReadnPixelsEXT = NULL; -PFNGLGETNUNIFORMFVEXTPROC glad_glGetnUniformfvEXT = NULL; -PFNGLGETNUNIFORMIVEXTPROC glad_glGetnUniformivEXT = NULL; -PFNGLGENSEMAPHORESEXTPROC glad_glGenSemaphoresEXT = NULL; -PFNGLDELETESEMAPHORESEXTPROC glad_glDeleteSemaphoresEXT = NULL; -PFNGLISSEMAPHOREEXTPROC glad_glIsSemaphoreEXT = NULL; -PFNGLSEMAPHOREPARAMETERUI64VEXTPROC glad_glSemaphoreParameterui64vEXT = NULL; -PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC glad_glGetSemaphoreParameterui64vEXT = NULL; -PFNGLWAITSEMAPHOREEXTPROC glad_glWaitSemaphoreEXT = NULL; -PFNGLSIGNALSEMAPHOREEXTPROC glad_glSignalSemaphoreEXT = NULL; -PFNGLIMPORTSEMAPHOREFDEXTPROC glad_glImportSemaphoreFdEXT = NULL; -PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC glad_glImportSemaphoreWin32HandleEXT = NULL; -PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC glad_glImportSemaphoreWin32NameEXT = NULL; -PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT = NULL; -PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT = NULL; -PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT = NULL; -PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT = NULL; -PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT = NULL; -PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT = NULL; -PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT = NULL; -PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT = NULL; -PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT = NULL; -PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT = NULL; -PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT = NULL; -PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT = NULL; -PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT = NULL; -PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT = NULL; -PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT = NULL; -PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT = NULL; -PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT = NULL; -PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT = NULL; -PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT = NULL; -PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT = NULL; -PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT = NULL; -PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT = NULL; -PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT = NULL; -PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT = NULL; -PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT = NULL; -PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT = NULL; -PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT = NULL; -PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT = NULL; -PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT = NULL; -PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT = NULL; -PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT = NULL; -PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT = NULL; -PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT = NULL; -PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT = NULL; -PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT = NULL; -PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT = NULL; -PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT = NULL; -PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT = NULL; -PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC glad_glFramebufferFetchBarrierEXT = NULL; -PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC glad_glFramebufferPixelLocalStorageSizeEXT = NULL; -PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC glad_glGetFramebufferPixelLocalStorageSizeEXT = NULL; -PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC glad_glClearPixelLocalStorageuiEXT = NULL; -PFNGLTEXPAGECOMMITMENTEXTPROC glad_glTexPageCommitmentEXT = NULL; -PFNGLPATCHPARAMETERIEXTPROC glad_glPatchParameteriEXT = NULL; -PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT = NULL; -PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT = NULL; -PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT = NULL; -PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT = NULL; -PFNGLSAMPLERPARAMETERIIVEXTPROC glad_glSamplerParameterIivEXT = NULL; -PFNGLSAMPLERPARAMETERIUIVEXTPROC glad_glSamplerParameterIuivEXT = NULL; -PFNGLGETSAMPLERPARAMETERIIVEXTPROC glad_glGetSamplerParameterIivEXT = NULL; -PFNGLGETSAMPLERPARAMETERIUIVEXTPROC glad_glGetSamplerParameterIuivEXT = NULL; -PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT = NULL; -PFNGLTEXBUFFERRANGEEXTPROC glad_glTexBufferRangeEXT = NULL; -PFNGLTEXSTORAGE1DEXTPROC glad_glTexStorage1DEXT = NULL; -PFNGLTEXSTORAGE2DEXTPROC glad_glTexStorage2DEXT = NULL; -PFNGLTEXSTORAGE3DEXTPROC glad_glTexStorage3DEXT = NULL; -PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT = NULL; -PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT = NULL; -PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT = NULL; -PFNGLTEXSTORAGEATTRIBS2DEXTPROC glad_glTexStorageAttribs2DEXT = NULL; -PFNGLTEXSTORAGEATTRIBS3DEXTPROC glad_glTexStorageAttribs3DEXT = NULL; -PFNGLTEXTUREVIEWEXTPROC glad_glTextureViewEXT = NULL; -PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC glad_glAcquireKeyedMutexWin32EXT = NULL; -PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC glad_glReleaseKeyedMutexWin32EXT = NULL; -PFNGLWINDOWRECTANGLESEXTPROC glad_glWindowRectanglesEXT = NULL; -PFNGLGETTEXTUREHANDLEIMGPROC glad_glGetTextureHandleIMG = NULL; -PFNGLGETTEXTURESAMPLERHANDLEIMGPROC glad_glGetTextureSamplerHandleIMG = NULL; -PFNGLUNIFORMHANDLEUI64IMGPROC glad_glUniformHandleui64IMG = NULL; -PFNGLUNIFORMHANDLEUI64VIMGPROC glad_glUniformHandleui64vIMG = NULL; -PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC glad_glProgramUniformHandleui64IMG = NULL; -PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC glad_glProgramUniformHandleui64vIMG = NULL; -PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC glad_glFramebufferTexture2DDownsampleIMG = NULL; -PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC glad_glFramebufferTextureLayerDownsampleIMG = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC glad_glRenderbufferStorageMultisampleIMG = NULL; -PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC glad_glFramebufferTexture2DMultisampleIMG = NULL; -PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL = NULL; -PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL = NULL; -PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL = NULL; -PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL = NULL; -PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL = NULL; -PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL = NULL; -PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL = NULL; -PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL = NULL; -PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL = NULL; -PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL = NULL; -PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL = NULL; -PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR = NULL; -PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR = NULL; -PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR = NULL; -PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR = NULL; -PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR = NULL; -PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR = NULL; -PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR = NULL; -PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR = NULL; -PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR = NULL; -PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR = NULL; -PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR = NULL; -PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR = NULL; -PFNGLMAXSHADERCOMPILERTHREADSKHRPROC glad_glMaxShaderCompilerThreadsKHR = NULL; -PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR = NULL; -PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR = NULL; -PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR = NULL; -PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR = NULL; -PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR = NULL; -PFNGLFRAMEBUFFERPARAMETERIMESAPROC glad_glFramebufferParameteriMESA = NULL; -PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC glad_glGetFramebufferParameterivMESA = NULL; -PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV = NULL; -PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV = NULL; -PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV = NULL; -PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV = NULL; -PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV = NULL; -PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV = NULL; -PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV = NULL; -PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV = NULL; -PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV = NULL; -PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV = NULL; -PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV = NULL; -PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV = NULL; -PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV = NULL; -PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV = NULL; -PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV = NULL; -PFNGLVIEWPORTPOSITIONWSCALENVPROC glad_glViewportPositionWScaleNV = NULL; -PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV = NULL; -PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV = NULL; -PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV = NULL; -PFNGLCONSERVATIVERASTERPARAMETERINVPROC glad_glConservativeRasterParameteriNV = NULL; -PFNGLCOPYBUFFERSUBDATANVPROC glad_glCopyBufferSubDataNV = NULL; -PFNGLCOVERAGEMASKNVPROC glad_glCoverageMaskNV = NULL; -PFNGLCOVERAGEOPERATIONNVPROC glad_glCoverageOperationNV = NULL; -PFNGLDRAWBUFFERSNVPROC glad_glDrawBuffersNV = NULL; -PFNGLDRAWARRAYSINSTANCEDNVPROC glad_glDrawArraysInstancedNV = NULL; -PFNGLDRAWELEMENTSINSTANCEDNVPROC glad_glDrawElementsInstancedNV = NULL; -PFNGLDRAWVKIMAGENVPROC glad_glDrawVkImageNV = NULL; -PFNGLGETVKPROCADDRNVPROC glad_glGetVkProcAddrNV = NULL; -PFNGLWAITVKSEMAPHORENVPROC glad_glWaitVkSemaphoreNV = NULL; -PFNGLSIGNALVKSEMAPHORENVPROC glad_glSignalVkSemaphoreNV = NULL; -PFNGLSIGNALVKFENCENVPROC glad_glSignalVkFenceNV = NULL; -PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV = NULL; -PFNGLGENFENCESNVPROC glad_glGenFencesNV = NULL; -PFNGLISFENCENVPROC glad_glIsFenceNV = NULL; -PFNGLTESTFENCENVPROC glad_glTestFenceNV = NULL; -PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV = NULL; -PFNGLFINISHFENCENVPROC glad_glFinishFenceNV = NULL; -PFNGLSETFENCENVPROC glad_glSetFenceNV = NULL; -PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV = NULL; -PFNGLBLITFRAMEBUFFERNVPROC glad_glBlitFramebufferNV = NULL; -PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV = NULL; -PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV = NULL; -PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC glad_glRenderbufferStorageMultisampleNV = NULL; -PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV = NULL; -PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV = NULL; -PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV = NULL; -PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV = NULL; -PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV = NULL; -PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV = NULL; -PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV = NULL; -PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV = NULL; -PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV = NULL; -PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV = NULL; -PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV = NULL; -PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV = NULL; -PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV = NULL; -PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV = NULL; -PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV = NULL; -PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV = NULL; -PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV = NULL; -PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV = NULL; -PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV = NULL; -PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV = NULL; -PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV = NULL; -PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV = NULL; -PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV = NULL; -PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV = NULL; -PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV = NULL; -PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV = NULL; -PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV = NULL; -PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV = NULL; -PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV = NULL; -PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV = NULL; -PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV = NULL; -PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV = NULL; -PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV = NULL; -PFNGLVERTEXATTRIBDIVISORNVPROC glad_glVertexAttribDivisorNV = NULL; -PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV = NULL; -PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC glad_glGetMemoryObjectDetachedResourcesuivNV = NULL; -PFNGLRESETMEMORYOBJECTPARAMETERNVPROC glad_glResetMemoryObjectParameterNV = NULL; -PFNGLTEXATTACHMEMORYNVPROC glad_glTexAttachMemoryNV = NULL; -PFNGLBUFFERATTACHMEMORYNVPROC glad_glBufferAttachMemoryNV = NULL; -PFNGLTEXTUREATTACHMEMORYNVPROC glad_glTextureAttachMemoryNV = NULL; -PFNGLNAMEDBUFFERATTACHMEMORYNVPROC glad_glNamedBufferAttachMemoryNV = NULL; -PFNGLBUFFERPAGECOMMITMENTMEMNVPROC glad_glBufferPageCommitmentMemNV = NULL; -PFNGLTEXPAGECOMMITMENTMEMNVPROC glad_glTexPageCommitmentMemNV = NULL; -PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC glad_glNamedBufferPageCommitmentMemNV = NULL; -PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC glad_glTexturePageCommitmentMemNV = NULL; -PFNGLDRAWMESHTASKSNVPROC glad_glDrawMeshTasksNV = NULL; -PFNGLDRAWMESHTASKSINDIRECTNVPROC glad_glDrawMeshTasksIndirectNV = NULL; -PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC glad_glMultiDrawMeshTasksIndirectNV = NULL; -PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC glad_glMultiDrawMeshTasksIndirectCountNV = NULL; -PFNGLUNIFORMMATRIX2X3FVNVPROC glad_glUniformMatrix2x3fvNV = NULL; -PFNGLUNIFORMMATRIX3X2FVNVPROC glad_glUniformMatrix3x2fvNV = NULL; -PFNGLUNIFORMMATRIX2X4FVNVPROC glad_glUniformMatrix2x4fvNV = NULL; -PFNGLUNIFORMMATRIX4X2FVNVPROC glad_glUniformMatrix4x2fvNV = NULL; -PFNGLUNIFORMMATRIX3X4FVNVPROC glad_glUniformMatrix3x4fvNV = NULL; -PFNGLUNIFORMMATRIX4X3FVNVPROC glad_glUniformMatrix4x3fvNV = NULL; -PFNGLGENPATHSNVPROC glad_glGenPathsNV = NULL; -PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV = NULL; -PFNGLISPATHNVPROC glad_glIsPathNV = NULL; -PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV = NULL; -PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV = NULL; -PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV = NULL; -PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV = NULL; -PFNGLPATHSTRINGNVPROC glad_glPathStringNV = NULL; -PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV = NULL; -PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV = NULL; -PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV = NULL; -PFNGLCOPYPATHNVPROC glad_glCopyPathNV = NULL; -PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV = NULL; -PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV = NULL; -PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV = NULL; -PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV = NULL; -PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV = NULL; -PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV = NULL; -PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV = NULL; -PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV = NULL; -PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV = NULL; -PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV = NULL; -PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV = NULL; -PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV = NULL; -PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV = NULL; -PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV = NULL; -PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV = NULL; -PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV = NULL; -PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV = NULL; -PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV = NULL; -PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV = NULL; -PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV = NULL; -PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV = NULL; -PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV = NULL; -PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV = NULL; -PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV = NULL; -PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV = NULL; -PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV = NULL; -PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV = NULL; -PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV = NULL; -PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV = NULL; -PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV = NULL; -PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV = NULL; -PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV = NULL; -PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV = NULL; -PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV = NULL; -PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV = NULL; -PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV = NULL; -PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV = NULL; -PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV = NULL; -PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV = NULL; -PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV = NULL; -PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV = NULL; -PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV = NULL; -PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV = NULL; -PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV = NULL; -PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV = NULL; -PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV = NULL; -PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV = NULL; -PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV = NULL; -PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV = NULL; -PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV = NULL; -PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV = NULL; -PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV = NULL; -PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT = NULL; -PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT = NULL; -PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT = NULL; -PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT = NULL; -PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT = NULL; -PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT = NULL; -PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT = NULL; -PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT = NULL; -PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT = NULL; -PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT = NULL; -PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT = NULL; -PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT = NULL; -PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT = NULL; -PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT = NULL; -PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT = NULL; -PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT = NULL; -PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT = NULL; -PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT = NULL; -PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT = NULL; -PFNGLPOLYGONMODENVPROC glad_glPolygonModeNV = NULL; -PFNGLREADBUFFERNVPROC glad_glReadBufferNV = NULL; -PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV = NULL; -PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV = NULL; -PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV = NULL; -PFNGLSCISSOREXCLUSIVENVPROC glad_glScissorExclusiveNV = NULL; -PFNGLSCISSOREXCLUSIVEARRAYVNVPROC glad_glScissorExclusiveArrayvNV = NULL; -PFNGLBINDSHADINGRATEIMAGENVPROC glad_glBindShadingRateImageNV = NULL; -PFNGLGETSHADINGRATEIMAGEPALETTENVPROC glad_glGetShadingRateImagePaletteNV = NULL; -PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC glad_glGetShadingRateSampleLocationivNV = NULL; -PFNGLSHADINGRATEIMAGEBARRIERNVPROC glad_glShadingRateImageBarrierNV = NULL; -PFNGLSHADINGRATEIMAGEPALETTENVPROC glad_glShadingRateImagePaletteNV = NULL; -PFNGLSHADINGRATESAMPLEORDERNVPROC glad_glShadingRateSampleOrderNV = NULL; -PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC glad_glShadingRateSampleOrderCustomNV = NULL; -PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV = NULL; -PFNGLCREATESEMAPHORESNVPROC glad_glCreateSemaphoresNV = NULL; -PFNGLSEMAPHOREPARAMETERIVNVPROC glad_glSemaphoreParameterivNV = NULL; -PFNGLGETSEMAPHOREPARAMETERIVNVPROC glad_glGetSemaphoreParameterivNV = NULL; -PFNGLVIEWPORTARRAYVNVPROC glad_glViewportArrayvNV = NULL; -PFNGLVIEWPORTINDEXEDFNVPROC glad_glViewportIndexedfNV = NULL; -PFNGLVIEWPORTINDEXEDFVNVPROC glad_glViewportIndexedfvNV = NULL; -PFNGLSCISSORARRAYVNVPROC glad_glScissorArrayvNV = NULL; -PFNGLSCISSORINDEXEDNVPROC glad_glScissorIndexedNV = NULL; -PFNGLSCISSORINDEXEDVNVPROC glad_glScissorIndexedvNV = NULL; -PFNGLDEPTHRANGEARRAYFVNVPROC glad_glDepthRangeArrayfvNV = NULL; -PFNGLDEPTHRANGEINDEXEDFNVPROC glad_glDepthRangeIndexedfNV = NULL; -PFNGLGETFLOATI_VNVPROC glad_glGetFloati_vNV = NULL; -PFNGLENABLEINVPROC glad_glEnableiNV = NULL; -PFNGLDISABLEINVPROC glad_glDisableiNV = NULL; -PFNGLISENABLEDINVPROC glad_glIsEnablediNV = NULL; -PFNGLVIEWPORTSWIZZLENVPROC glad_glViewportSwizzleNV = NULL; -PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glad_glEGLImageTargetTexture2DOES = NULL; -PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC glad_glEGLImageTargetRenderbufferStorageOES = NULL; -PFNGLCOPYIMAGESUBDATAOESPROC glad_glCopyImageSubDataOES = NULL; -PFNGLENABLEIOESPROC glad_glEnableiOES = NULL; -PFNGLDISABLEIOESPROC glad_glDisableiOES = NULL; -PFNGLBLENDEQUATIONIOESPROC glad_glBlendEquationiOES = NULL; -PFNGLBLENDEQUATIONSEPARATEIOESPROC glad_glBlendEquationSeparateiOES = NULL; -PFNGLBLENDFUNCIOESPROC glad_glBlendFunciOES = NULL; -PFNGLBLENDFUNCSEPARATEIOESPROC glad_glBlendFuncSeparateiOES = NULL; -PFNGLCOLORMASKIOESPROC glad_glColorMaskiOES = NULL; -PFNGLISENABLEDIOESPROC glad_glIsEnablediOES = NULL; -PFNGLDRAWELEMENTSBASEVERTEXOESPROC glad_glDrawElementsBaseVertexOES = NULL; -PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC glad_glDrawRangeElementsBaseVertexOES = NULL; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC glad_glDrawElementsInstancedBaseVertexOES = NULL; -PFNGLFRAMEBUFFERTEXTUREOESPROC glad_glFramebufferTextureOES = NULL; -PFNGLGETPROGRAMBINARYOESPROC glad_glGetProgramBinaryOES = NULL; -PFNGLPROGRAMBINARYOESPROC glad_glProgramBinaryOES = NULL; -PFNGLMAPBUFFEROESPROC glad_glMapBufferOES = NULL; -PFNGLUNMAPBUFFEROESPROC glad_glUnmapBufferOES = NULL; -PFNGLGETBUFFERPOINTERVOESPROC glad_glGetBufferPointervOES = NULL; -PFNGLPRIMITIVEBOUNDINGBOXOESPROC glad_glPrimitiveBoundingBoxOES = NULL; -PFNGLMINSAMPLESHADINGOESPROC glad_glMinSampleShadingOES = NULL; -PFNGLPATCHPARAMETERIOESPROC glad_glPatchParameteriOES = NULL; -PFNGLTEXIMAGE3DOESPROC glad_glTexImage3DOES = NULL; -PFNGLTEXSUBIMAGE3DOESPROC glad_glTexSubImage3DOES = NULL; -PFNGLCOPYTEXSUBIMAGE3DOESPROC glad_glCopyTexSubImage3DOES = NULL; -PFNGLCOMPRESSEDTEXIMAGE3DOESPROC glad_glCompressedTexImage3DOES = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC glad_glCompressedTexSubImage3DOES = NULL; -PFNGLFRAMEBUFFERTEXTURE3DOESPROC glad_glFramebufferTexture3DOES = NULL; -PFNGLTEXPARAMETERIIVOESPROC glad_glTexParameterIivOES = NULL; -PFNGLTEXPARAMETERIUIVOESPROC glad_glTexParameterIuivOES = NULL; -PFNGLGETTEXPARAMETERIIVOESPROC glad_glGetTexParameterIivOES = NULL; -PFNGLGETTEXPARAMETERIUIVOESPROC glad_glGetTexParameterIuivOES = NULL; -PFNGLSAMPLERPARAMETERIIVOESPROC glad_glSamplerParameterIivOES = NULL; -PFNGLSAMPLERPARAMETERIUIVOESPROC glad_glSamplerParameterIuivOES = NULL; -PFNGLGETSAMPLERPARAMETERIIVOESPROC glad_glGetSamplerParameterIivOES = NULL; -PFNGLGETSAMPLERPARAMETERIUIVOESPROC glad_glGetSamplerParameterIuivOES = NULL; -PFNGLTEXBUFFEROESPROC glad_glTexBufferOES = NULL; -PFNGLTEXBUFFERRANGEOESPROC glad_glTexBufferRangeOES = NULL; -PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC glad_glTexStorage3DMultisampleOES = NULL; -PFNGLTEXTUREVIEWOESPROC glad_glTextureViewOES = NULL; -PFNGLBINDVERTEXARRAYOESPROC glad_glBindVertexArrayOES = NULL; -PFNGLDELETEVERTEXARRAYSOESPROC glad_glDeleteVertexArraysOES = NULL; -PFNGLGENVERTEXARRAYSOESPROC glad_glGenVertexArraysOES = NULL; -PFNGLISVERTEXARRAYOESPROC glad_glIsVertexArrayOES = NULL; -PFNGLVIEWPORTARRAYVOESPROC glad_glViewportArrayvOES = NULL; -PFNGLVIEWPORTINDEXEDFOESPROC glad_glViewportIndexedfOES = NULL; -PFNGLVIEWPORTINDEXEDFVOESPROC glad_glViewportIndexedfvOES = NULL; -PFNGLSCISSORARRAYVOESPROC glad_glScissorArrayvOES = NULL; -PFNGLSCISSORINDEXEDOESPROC glad_glScissorIndexedOES = NULL; -PFNGLSCISSORINDEXEDVOESPROC glad_glScissorIndexedvOES = NULL; -PFNGLDEPTHRANGEARRAYFVOESPROC glad_glDepthRangeArrayfvOES = NULL; -PFNGLDEPTHRANGEINDEXEDFOESPROC glad_glDepthRangeIndexedfOES = NULL; -PFNGLGETFLOATI_VOESPROC glad_glGetFloati_vOES = NULL; -PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glNamedFramebufferTextureMultiviewOVR = NULL; -PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC glad_glFramebufferTextureMultisampleMultiviewOVR = NULL; -PFNGLALPHAFUNCQCOMPROC glad_glAlphaFuncQCOM = NULL; -PFNGLGETDRIVERCONTROLSQCOMPROC glad_glGetDriverControlsQCOM = NULL; -PFNGLGETDRIVERCONTROLSTRINGQCOMPROC glad_glGetDriverControlStringQCOM = NULL; -PFNGLENABLEDRIVERCONTROLQCOMPROC glad_glEnableDriverControlQCOM = NULL; -PFNGLDISABLEDRIVERCONTROLQCOMPROC glad_glDisableDriverControlQCOM = NULL; -PFNGLEXTGETTEXTURESQCOMPROC glad_glExtGetTexturesQCOM = NULL; -PFNGLEXTGETBUFFERSQCOMPROC glad_glExtGetBuffersQCOM = NULL; -PFNGLEXTGETRENDERBUFFERSQCOMPROC glad_glExtGetRenderbuffersQCOM = NULL; -PFNGLEXTGETFRAMEBUFFERSQCOMPROC glad_glExtGetFramebuffersQCOM = NULL; -PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC glad_glExtGetTexLevelParameterivQCOM = NULL; -PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC glad_glExtTexObjectStateOverrideiQCOM = NULL; -PFNGLEXTGETTEXSUBIMAGEQCOMPROC glad_glExtGetTexSubImageQCOM = NULL; -PFNGLEXTGETBUFFERPOINTERVQCOMPROC glad_glExtGetBufferPointervQCOM = NULL; -PFNGLEXTGETSHADERSQCOMPROC glad_glExtGetShadersQCOM = NULL; -PFNGLEXTGETPROGRAMSQCOMPROC glad_glExtGetProgramsQCOM = NULL; -PFNGLEXTISPROGRAMBINARYQCOMPROC glad_glExtIsProgramBinaryQCOM = NULL; -PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC glad_glExtGetProgramBinarySourceQCOM = NULL; -PFNGLEXTRAPOLATETEX2DQCOMPROC glad_glExtrapolateTex2DQCOM = NULL; -PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC glad_glFramebufferFoveationConfigQCOM = NULL; -PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC glad_glFramebufferFoveationParametersQCOM = NULL; -PFNGLTEXESTIMATEMOTIONQCOMPROC glad_glTexEstimateMotionQCOM = NULL; -PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC glad_glTexEstimateMotionRegionsQCOM = NULL; -PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC glad_glFramebufferFetchBarrierQCOM = NULL; -PFNGLSHADINGRATEQCOMPROC glad_glShadingRateQCOM = NULL; -PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC glad_glTextureFoveationParametersQCOM = NULL; -PFNGLSTARTTILINGQCOMPROC glad_glStartTilingQCOM = NULL; -PFNGLENDTILINGQCOMPROC glad_glEndTilingQCOM = NULL; -static void load_GL_ES_VERSION_2_0(GLADloadproc load) { - if(!GLAD_GL_ES_VERSION_2_0) return; - glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); - glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); - glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); - glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); - glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); - glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); - glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); - glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); - glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); - glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); - glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); - glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); - glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); - glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); - glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); - glad_glClear = (PFNGLCLEARPROC)load("glClear"); - glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); - glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); - glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); - glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); - glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); - glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); - glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); - glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); - glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); - glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); - glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); - glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); - glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); - glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); - glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); - glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); - glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); - glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); - glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); - glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); - glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); - glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); - glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); - glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); - glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); - glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); - glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); - glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); - glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); - glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); - glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); - glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); - glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); - glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); - glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); - glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); - glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); - glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); - glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); - glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); - glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); - glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); - glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); - glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); - glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); - glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); - glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); - glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); - glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); - glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); - glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); - glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); - glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); - glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); - glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); - glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); - glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); - glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); - glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); - glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); - glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); - glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); - glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); - glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); - glad_glHint = (PFNGLHINTPROC)load("glHint"); - glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); - glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); - glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); - glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); - glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); - glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); - glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); - glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); - glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); - glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); - glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); - glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); - glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); - glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); - glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); - glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); - glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); - glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); - glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); - glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); - glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); - glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); - glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); - glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); - glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); - glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); - glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); - glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); - glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); - glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); - glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); - glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); - glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); - glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); - glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); - glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); - glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); - glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); - glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); - glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); - glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); - glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); - glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); - glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); - glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); - glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); - glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); - glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); - glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); - glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); - glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); - glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); - glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); - glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); - glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); - glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); - glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); - glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); - glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); - glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); - glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); -} -static void load_GL_ES_VERSION_3_0(GLADloadproc load) { - if(!GLAD_GL_ES_VERSION_3_0) return; - glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); - glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); - glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); - glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); - glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); - glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); - glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); - 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_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); - glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); - glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); - glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); - 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"); - 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"); - glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); - 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_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); - glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); - glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); - glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); - glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); - glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); - glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); - glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); - 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_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_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); - glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); - glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); - glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); - glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); - glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); - glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); - glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); - glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); - 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_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_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); - glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); - glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); - 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_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); - glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); - glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); - glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); - glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); - glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); - glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); - glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); -} -static void load_GL_ES_VERSION_3_1(GLADloadproc load) { - if(!GLAD_GL_ES_VERSION_3_1) return; - glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); - glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); - glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); - glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); - glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); - glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); - 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_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_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); - glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); - glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); - glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); - glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); - glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); - glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); - glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); - glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); - glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); - glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); - glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); - glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); - glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); - glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); - glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); - glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); - glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); - glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); - glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); - glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); - glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); - glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); - glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); - glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); - glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); - 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_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); - glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); - glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); - glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); - glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); - glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); - glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); - glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); - glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); - glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); - glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); - glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); - glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); - glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); - glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); - glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); -} -static void load_GL_ES_VERSION_3_2(GLADloadproc load) { - if(!GLAD_GL_ES_VERSION_3_2) return; - glad_glBlendBarrier = (PFNGLBLENDBARRIERPROC)load("glBlendBarrier"); - glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); - 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_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); - glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); - glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); - glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); - glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); - glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); - glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); - glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); - glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); - glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); - glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); - glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); - glad_glPrimitiveBoundingBox = (PFNGLPRIMITIVEBOUNDINGBOXPROC)load("glPrimitiveBoundingBox"); - 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_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); - glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); - glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); - glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); - glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); - glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); - glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); - glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); - glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); - glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); - glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); - glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); - glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); -} -static void load_GL_AMD_framebuffer_multisample_advanced(GLADloadproc load) { - if(!GLAD_GL_AMD_framebuffer_multisample_advanced) return; - glad_glRenderbufferStorageMultisampleAdvancedAMD = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)load("glRenderbufferStorageMultisampleAdvancedAMD"); - glad_glNamedRenderbufferStorageMultisampleAdvancedAMD = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)load("glNamedRenderbufferStorageMultisampleAdvancedAMD"); -} -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_ANGLE_framebuffer_blit(GLADloadproc load) { - if(!GLAD_GL_ANGLE_framebuffer_blit) return; - glad_glBlitFramebufferANGLE = (PFNGLBLITFRAMEBUFFERANGLEPROC)load("glBlitFramebufferANGLE"); -} -static void load_GL_ANGLE_framebuffer_multisample(GLADloadproc load) { - if(!GLAD_GL_ANGLE_framebuffer_multisample) return; - glad_glRenderbufferStorageMultisampleANGLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC)load("glRenderbufferStorageMultisampleANGLE"); -} -static void load_GL_ANGLE_instanced_arrays(GLADloadproc load) { - if(!GLAD_GL_ANGLE_instanced_arrays) return; - glad_glDrawArraysInstancedANGLE = (PFNGLDRAWARRAYSINSTANCEDANGLEPROC)load("glDrawArraysInstancedANGLE"); - glad_glDrawElementsInstancedANGLE = (PFNGLDRAWELEMENTSINSTANCEDANGLEPROC)load("glDrawElementsInstancedANGLE"); - glad_glVertexAttribDivisorANGLE = (PFNGLVERTEXATTRIBDIVISORANGLEPROC)load("glVertexAttribDivisorANGLE"); -} -static void load_GL_ANGLE_translated_shader_source(GLADloadproc load) { - if(!GLAD_GL_ANGLE_translated_shader_source) return; - glad_glGetTranslatedShaderSourceANGLE = (PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)load("glGetTranslatedShaderSourceANGLE"); -} -static void load_GL_APPLE_copy_texture_levels(GLADloadproc load) { - if(!GLAD_GL_APPLE_copy_texture_levels) return; - glad_glCopyTextureLevelsAPPLE = (PFNGLCOPYTEXTURELEVELSAPPLEPROC)load("glCopyTextureLevelsAPPLE"); -} -static void load_GL_APPLE_framebuffer_multisample(GLADloadproc load) { - if(!GLAD_GL_APPLE_framebuffer_multisample) return; - glad_glRenderbufferStorageMultisampleAPPLE = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC)load("glRenderbufferStorageMultisampleAPPLE"); - glad_glResolveMultisampleFramebufferAPPLE = (PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC)load("glResolveMultisampleFramebufferAPPLE"); -} -static void load_GL_APPLE_sync(GLADloadproc load) { - if(!GLAD_GL_APPLE_sync) return; - glad_glFenceSyncAPPLE = (PFNGLFENCESYNCAPPLEPROC)load("glFenceSyncAPPLE"); - glad_glIsSyncAPPLE = (PFNGLISSYNCAPPLEPROC)load("glIsSyncAPPLE"); - glad_glDeleteSyncAPPLE = (PFNGLDELETESYNCAPPLEPROC)load("glDeleteSyncAPPLE"); - glad_glClientWaitSyncAPPLE = (PFNGLCLIENTWAITSYNCAPPLEPROC)load("glClientWaitSyncAPPLE"); - glad_glWaitSyncAPPLE = (PFNGLWAITSYNCAPPLEPROC)load("glWaitSyncAPPLE"); - glad_glGetInteger64vAPPLE = (PFNGLGETINTEGER64VAPPLEPROC)load("glGetInteger64vAPPLE"); - glad_glGetSyncivAPPLE = (PFNGLGETSYNCIVAPPLEPROC)load("glGetSyncivAPPLE"); -} -static void load_GL_ARM_shader_core_properties(GLADloadproc load) { - if(!GLAD_GL_ARM_shader_core_properties) return; - glad_glMaxActiveShaderCoresARM = (PFNGLMAXACTIVESHADERCORESARMPROC)load("glMaxActiveShaderCoresARM"); -} -static void load_GL_EXT_EGL_image_storage(GLADloadproc load) { - if(!GLAD_GL_EXT_EGL_image_storage) return; - glad_glEGLImageTargetTexStorageEXT = (PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)load("glEGLImageTargetTexStorageEXT"); - glad_glEGLImageTargetTextureStorageEXT = (PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)load("glEGLImageTargetTextureStorageEXT"); -} -static void load_GL_EXT_base_instance(GLADloadproc load) { - if(!GLAD_GL_EXT_base_instance) return; - glad_glDrawArraysInstancedBaseInstanceEXT = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC)load("glDrawArraysInstancedBaseInstanceEXT"); - glad_glDrawElementsInstancedBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC)load("glDrawElementsInstancedBaseInstanceEXT"); - glad_glDrawElementsInstancedBaseVertexBaseInstanceEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC)load("glDrawElementsInstancedBaseVertexBaseInstanceEXT"); -} -static void load_GL_EXT_blend_func_extended(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_func_extended) return; - glad_glBindFragDataLocationIndexedEXT = (PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC)load("glBindFragDataLocationIndexedEXT"); - glad_glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)load("glBindFragDataLocationEXT"); - glad_glGetProgramResourceLocationIndexEXT = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)load("glGetProgramResourceLocationIndexEXT"); - glad_glGetFragDataIndexEXT = (PFNGLGETFRAGDATAINDEXEXTPROC)load("glGetFragDataIndexEXT"); -} -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_EXT_buffer_storage(GLADloadproc load) { - if(!GLAD_GL_EXT_buffer_storage) return; - glad_glBufferStorageEXT = (PFNGLBUFFERSTORAGEEXTPROC)load("glBufferStorageEXT"); -} -static void load_GL_EXT_clear_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_clear_texture) return; - glad_glClearTexImageEXT = (PFNGLCLEARTEXIMAGEEXTPROC)load("glClearTexImageEXT"); - glad_glClearTexSubImageEXT = (PFNGLCLEARTEXSUBIMAGEEXTPROC)load("glClearTexSubImageEXT"); -} -static void load_GL_EXT_clip_control(GLADloadproc load) { - if(!GLAD_GL_EXT_clip_control) return; - glad_glClipControlEXT = (PFNGLCLIPCONTROLEXTPROC)load("glClipControlEXT"); -} -static void load_GL_EXT_copy_image(GLADloadproc load) { - if(!GLAD_GL_EXT_copy_image) return; - glad_glCopyImageSubDataEXT = (PFNGLCOPYIMAGESUBDATAEXTPROC)load("glCopyImageSubDataEXT"); -} -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_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_discard_framebuffer(GLADloadproc load) { - if(!GLAD_GL_EXT_discard_framebuffer) return; - glad_glDiscardFramebufferEXT = (PFNGLDISCARDFRAMEBUFFEREXTPROC)load("glDiscardFramebufferEXT"); -} -static void load_GL_EXT_disjoint_timer_query(GLADloadproc load) { - if(!GLAD_GL_EXT_disjoint_timer_query) return; - glad_glGenQueriesEXT = (PFNGLGENQUERIESEXTPROC)load("glGenQueriesEXT"); - glad_glDeleteQueriesEXT = (PFNGLDELETEQUERIESEXTPROC)load("glDeleteQueriesEXT"); - glad_glIsQueryEXT = (PFNGLISQUERYEXTPROC)load("glIsQueryEXT"); - glad_glBeginQueryEXT = (PFNGLBEGINQUERYEXTPROC)load("glBeginQueryEXT"); - glad_glEndQueryEXT = (PFNGLENDQUERYEXTPROC)load("glEndQueryEXT"); - glad_glQueryCounterEXT = (PFNGLQUERYCOUNTEREXTPROC)load("glQueryCounterEXT"); - glad_glGetQueryivEXT = (PFNGLGETQUERYIVEXTPROC)load("glGetQueryivEXT"); - glad_glGetQueryObjectivEXT = (PFNGLGETQUERYOBJECTIVEXTPROC)load("glGetQueryObjectivEXT"); - glad_glGetQueryObjectuivEXT = (PFNGLGETQUERYOBJECTUIVEXTPROC)load("glGetQueryObjectuivEXT"); - glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); - glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); - glad_glGetInteger64vEXT = (PFNGLGETINTEGER64VEXTPROC)load("glGetInteger64vEXT"); -} -static void load_GL_EXT_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_buffers) return; - glad_glDrawBuffersEXT = (PFNGLDRAWBUFFERSEXTPROC)load("glDrawBuffersEXT"); -} -static void load_GL_EXT_draw_buffers_indexed(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_buffers_indexed) return; - glad_glEnableiEXT = (PFNGLENABLEIEXTPROC)load("glEnableiEXT"); - glad_glDisableiEXT = (PFNGLDISABLEIEXTPROC)load("glDisableiEXT"); - glad_glBlendEquationiEXT = (PFNGLBLENDEQUATIONIEXTPROC)load("glBlendEquationiEXT"); - glad_glBlendEquationSeparateiEXT = (PFNGLBLENDEQUATIONSEPARATEIEXTPROC)load("glBlendEquationSeparateiEXT"); - glad_glBlendFunciEXT = (PFNGLBLENDFUNCIEXTPROC)load("glBlendFunciEXT"); - glad_glBlendFuncSeparateiEXT = (PFNGLBLENDFUNCSEPARATEIEXTPROC)load("glBlendFuncSeparateiEXT"); - glad_glColorMaskiEXT = (PFNGLCOLORMASKIEXTPROC)load("glColorMaskiEXT"); - glad_glIsEnablediEXT = (PFNGLISENABLEDIEXTPROC)load("glIsEnablediEXT"); -} -static void load_GL_EXT_draw_elements_base_vertex(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_elements_base_vertex) return; - glad_glDrawElementsBaseVertexEXT = (PFNGLDRAWELEMENTSBASEVERTEXEXTPROC)load("glDrawElementsBaseVertexEXT"); - glad_glDrawRangeElementsBaseVertexEXT = (PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC)load("glDrawRangeElementsBaseVertexEXT"); - glad_glDrawElementsInstancedBaseVertexEXT = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC)load("glDrawElementsInstancedBaseVertexEXT"); - glad_glMultiDrawElementsBaseVertexEXT = (PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC)load("glMultiDrawElementsBaseVertexEXT"); -} -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_EXT_draw_transform_feedback(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_transform_feedback) return; - glad_glDrawTransformFeedbackEXT = (PFNGLDRAWTRANSFORMFEEDBACKEXTPROC)load("glDrawTransformFeedbackEXT"); - glad_glDrawTransformFeedbackInstancedEXT = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC)load("glDrawTransformFeedbackInstancedEXT"); -} -static void load_GL_EXT_external_buffer(GLADloadproc load) { - if(!GLAD_GL_EXT_external_buffer) return; - glad_glBufferStorageExternalEXT = (PFNGLBUFFERSTORAGEEXTERNALEXTPROC)load("glBufferStorageExternalEXT"); - glad_glNamedBufferStorageExternalEXT = (PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)load("glNamedBufferStorageExternalEXT"); -} -static void load_GL_EXT_fragment_shading_rate(GLADloadproc load) { - if(!GLAD_GL_EXT_fragment_shading_rate) return; - glad_glGetFragmentShadingRatesEXT = (PFNGLGETFRAGMENTSHADINGRATESEXTPROC)load("glGetFragmentShadingRatesEXT"); - glad_glShadingRateEXT = (PFNGLSHADINGRATEEXTPROC)load("glShadingRateEXT"); - glad_glShadingRateCombinerOpsEXT = (PFNGLSHADINGRATECOMBINEROPSEXTPROC)load("glShadingRateCombinerOpsEXT"); - glad_glFramebufferShadingRateEXT = (PFNGLFRAMEBUFFERSHADINGRATEEXTPROC)load("glFramebufferShadingRateEXT"); -} -static void load_GL_EXT_framebuffer_blit_layers(GLADloadproc load) { - if(!GLAD_GL_EXT_framebuffer_blit_layers) return; - glad_glBlitFramebufferLayersEXT = (PFNGLBLITFRAMEBUFFERLAYERSEXTPROC)load("glBlitFramebufferLayersEXT"); - glad_glBlitFramebufferLayerEXT = (PFNGLBLITFRAMEBUFFERLAYEREXTPROC)load("glBlitFramebufferLayerEXT"); -} -static void load_GL_EXT_geometry_shader(GLADloadproc load) { - if(!GLAD_GL_EXT_geometry_shader) return; - glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); -} -static void load_GL_EXT_instanced_arrays(GLADloadproc load) { - if(!GLAD_GL_EXT_instanced_arrays) return; - glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); - glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); - glad_glVertexAttribDivisorEXT = (PFNGLVERTEXATTRIBDIVISOREXTPROC)load("glVertexAttribDivisorEXT"); -} -static void load_GL_EXT_map_buffer_range(GLADloadproc load) { - if(!GLAD_GL_EXT_map_buffer_range) return; - glad_glMapBufferRangeEXT = (PFNGLMAPBUFFERRANGEEXTPROC)load("glMapBufferRangeEXT"); - glad_glFlushMappedBufferRangeEXT = (PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC)load("glFlushMappedBufferRangeEXT"); -} -static void load_GL_EXT_memory_object(GLADloadproc load) { - if(!GLAD_GL_EXT_memory_object) return; - glad_glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)load("glGetUnsignedBytevEXT"); - glad_glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)load("glGetUnsignedBytei_vEXT"); - glad_glDeleteMemoryObjectsEXT = (PFNGLDELETEMEMORYOBJECTSEXTPROC)load("glDeleteMemoryObjectsEXT"); - glad_glIsMemoryObjectEXT = (PFNGLISMEMORYOBJECTEXTPROC)load("glIsMemoryObjectEXT"); - glad_glCreateMemoryObjectsEXT = (PFNGLCREATEMEMORYOBJECTSEXTPROC)load("glCreateMemoryObjectsEXT"); - glad_glMemoryObjectParameterivEXT = (PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)load("glMemoryObjectParameterivEXT"); - glad_glGetMemoryObjectParameterivEXT = (PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)load("glGetMemoryObjectParameterivEXT"); - glad_glTexStorageMem2DEXT = (PFNGLTEXSTORAGEMEM2DEXTPROC)load("glTexStorageMem2DEXT"); - glad_glTexStorageMem2DMultisampleEXT = (PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)load("glTexStorageMem2DMultisampleEXT"); - glad_glTexStorageMem3DEXT = (PFNGLTEXSTORAGEMEM3DEXTPROC)load("glTexStorageMem3DEXT"); - glad_glTexStorageMem3DMultisampleEXT = (PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)load("glTexStorageMem3DMultisampleEXT"); - glad_glBufferStorageMemEXT = (PFNGLBUFFERSTORAGEMEMEXTPROC)load("glBufferStorageMemEXT"); - glad_glTextureStorageMem2DEXT = (PFNGLTEXTURESTORAGEMEM2DEXTPROC)load("glTextureStorageMem2DEXT"); - glad_glTextureStorageMem2DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)load("glTextureStorageMem2DMultisampleEXT"); - glad_glTextureStorageMem3DEXT = (PFNGLTEXTURESTORAGEMEM3DEXTPROC)load("glTextureStorageMem3DEXT"); - glad_glTextureStorageMem3DMultisampleEXT = (PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)load("glTextureStorageMem3DMultisampleEXT"); - glad_glNamedBufferStorageMemEXT = (PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)load("glNamedBufferStorageMemEXT"); - glad_glTexStorageMem1DEXT = (PFNGLTEXSTORAGEMEM1DEXTPROC)load("glTexStorageMem1DEXT"); - glad_glTextureStorageMem1DEXT = (PFNGLTEXTURESTORAGEMEM1DEXTPROC)load("glTextureStorageMem1DEXT"); -} -static void load_GL_EXT_memory_object_fd(GLADloadproc load) { - if(!GLAD_GL_EXT_memory_object_fd) return; - glad_glImportMemoryFdEXT = (PFNGLIMPORTMEMORYFDEXTPROC)load("glImportMemoryFdEXT"); -} -static void load_GL_EXT_memory_object_win32(GLADloadproc load) { - if(!GLAD_GL_EXT_memory_object_win32) return; - glad_glImportMemoryWin32HandleEXT = (PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)load("glImportMemoryWin32HandleEXT"); - glad_glImportMemoryWin32NameEXT = (PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)load("glImportMemoryWin32NameEXT"); -} -static void load_GL_EXT_mesh_shader(GLADloadproc load) { - if(!GLAD_GL_EXT_mesh_shader) return; - glad_glDrawMeshTasksEXT = (PFNGLDRAWMESHTASKSEXTPROC)load("glDrawMeshTasksEXT"); - glad_glDrawMeshTasksIndirectEXT = (PFNGLDRAWMESHTASKSINDIRECTEXTPROC)load("glDrawMeshTasksIndirectEXT"); - glad_glMultiDrawMeshTasksIndirectEXT = (PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC)load("glMultiDrawMeshTasksIndirectEXT"); - glad_glMultiDrawMeshTasksIndirectCountEXT = (PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC)load("glMultiDrawMeshTasksIndirectCountEXT"); -} -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_EXT_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_EXT_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirectEXT = (PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC)load("glMultiDrawArraysIndirectEXT"); - glad_glMultiDrawElementsIndirectEXT = (PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC)load("glMultiDrawElementsIndirectEXT"); -} -static void load_GL_EXT_multisampled_render_to_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_multisampled_render_to_texture) return; - glad_glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glRenderbufferStorageMultisampleEXT"); - glad_glFramebufferTexture2DMultisampleEXT = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC)load("glFramebufferTexture2DMultisampleEXT"); -} -static void load_GL_EXT_multiview_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_EXT_multiview_draw_buffers) return; - glad_glReadBufferIndexedEXT = (PFNGLREADBUFFERINDEXEDEXTPROC)load("glReadBufferIndexedEXT"); - glad_glDrawBuffersIndexedEXT = (PFNGLDRAWBUFFERSINDEXEDEXTPROC)load("glDrawBuffersIndexedEXT"); - glad_glGetIntegeri_vEXT = (PFNGLGETINTEGERI_VEXTPROC)load("glGetIntegeri_vEXT"); -} -static void load_GL_EXT_occlusion_query_boolean(GLADloadproc load) { - if(!GLAD_GL_EXT_occlusion_query_boolean) return; - glad_glGenQueriesEXT = (PFNGLGENQUERIESEXTPROC)load("glGenQueriesEXT"); - glad_glDeleteQueriesEXT = (PFNGLDELETEQUERIESEXTPROC)load("glDeleteQueriesEXT"); - glad_glIsQueryEXT = (PFNGLISQUERYEXTPROC)load("glIsQueryEXT"); - glad_glBeginQueryEXT = (PFNGLBEGINQUERYEXTPROC)load("glBeginQueryEXT"); - glad_glEndQueryEXT = (PFNGLENDQUERYEXTPROC)load("glEndQueryEXT"); - glad_glGetQueryivEXT = (PFNGLGETQUERYIVEXTPROC)load("glGetQueryivEXT"); - glad_glGetQueryObjectuivEXT = (PFNGLGETQUERYOBJECTUIVEXTPROC)load("glGetQueryObjectuivEXT"); -} -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_primitive_bounding_box(GLADloadproc load) { - if(!GLAD_GL_EXT_primitive_bounding_box) return; - glad_glPrimitiveBoundingBoxEXT = (PFNGLPRIMITIVEBOUNDINGBOXEXTPROC)load("glPrimitiveBoundingBoxEXT"); -} -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_EXT_robustness(GLADloadproc load) { - if(!GLAD_GL_EXT_robustness) return; - glad_glGetGraphicsResetStatusEXT = (PFNGLGETGRAPHICSRESETSTATUSEXTPROC)load("glGetGraphicsResetStatusEXT"); - glad_glReadnPixelsEXT = (PFNGLREADNPIXELSEXTPROC)load("glReadnPixelsEXT"); - glad_glGetnUniformfvEXT = (PFNGLGETNUNIFORMFVEXTPROC)load("glGetnUniformfvEXT"); - glad_glGetnUniformivEXT = (PFNGLGETNUNIFORMIVEXTPROC)load("glGetnUniformivEXT"); -} -static void load_GL_EXT_semaphore(GLADloadproc load) { - if(!GLAD_GL_EXT_semaphore) return; - glad_glGetUnsignedBytevEXT = (PFNGLGETUNSIGNEDBYTEVEXTPROC)load("glGetUnsignedBytevEXT"); - glad_glGetUnsignedBytei_vEXT = (PFNGLGETUNSIGNEDBYTEI_VEXTPROC)load("glGetUnsignedBytei_vEXT"); - glad_glGenSemaphoresEXT = (PFNGLGENSEMAPHORESEXTPROC)load("glGenSemaphoresEXT"); - glad_glDeleteSemaphoresEXT = (PFNGLDELETESEMAPHORESEXTPROC)load("glDeleteSemaphoresEXT"); - glad_glIsSemaphoreEXT = (PFNGLISSEMAPHOREEXTPROC)load("glIsSemaphoreEXT"); - glad_glSemaphoreParameterui64vEXT = (PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)load("glSemaphoreParameterui64vEXT"); - glad_glGetSemaphoreParameterui64vEXT = (PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)load("glGetSemaphoreParameterui64vEXT"); - glad_glWaitSemaphoreEXT = (PFNGLWAITSEMAPHOREEXTPROC)load("glWaitSemaphoreEXT"); - glad_glSignalSemaphoreEXT = (PFNGLSIGNALSEMAPHOREEXTPROC)load("glSignalSemaphoreEXT"); -} -static void load_GL_EXT_semaphore_fd(GLADloadproc load) { - if(!GLAD_GL_EXT_semaphore_fd) return; - glad_glImportSemaphoreFdEXT = (PFNGLIMPORTSEMAPHOREFDEXTPROC)load("glImportSemaphoreFdEXT"); -} -static void load_GL_EXT_semaphore_win32(GLADloadproc load) { - if(!GLAD_GL_EXT_semaphore_win32) return; - glad_glImportSemaphoreWin32HandleEXT = (PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)load("glImportSemaphoreWin32HandleEXT"); - glad_glImportSemaphoreWin32NameEXT = (PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)load("glImportSemaphoreWin32NameEXT"); -} -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_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_EXT_shader_framebuffer_fetch_non_coherent(GLADloadproc load) { - if(!GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent) return; - glad_glFramebufferFetchBarrierEXT = (PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)load("glFramebufferFetchBarrierEXT"); -} -static void load_GL_EXT_shader_pixel_local_storage2(GLADloadproc load) { - if(!GLAD_GL_EXT_shader_pixel_local_storage2) return; - glad_glFramebufferPixelLocalStorageSizeEXT = (PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)load("glFramebufferPixelLocalStorageSizeEXT"); - glad_glGetFramebufferPixelLocalStorageSizeEXT = (PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)load("glGetFramebufferPixelLocalStorageSizeEXT"); - glad_glClearPixelLocalStorageuiEXT = (PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC)load("glClearPixelLocalStorageuiEXT"); -} -static void load_GL_EXT_sparse_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_sparse_texture) return; - glad_glTexPageCommitmentEXT = (PFNGLTEXPAGECOMMITMENTEXTPROC)load("glTexPageCommitmentEXT"); -} -static void load_GL_EXT_tessellation_shader(GLADloadproc load) { - if(!GLAD_GL_EXT_tessellation_shader) return; - glad_glPatchParameteriEXT = (PFNGLPATCHPARAMETERIEXTPROC)load("glPatchParameteriEXT"); -} -static void load_GL_EXT_texture_border_clamp(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_border_clamp) return; - glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); - glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); - glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); - glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); - glad_glSamplerParameterIivEXT = (PFNGLSAMPLERPARAMETERIIVEXTPROC)load("glSamplerParameterIivEXT"); - glad_glSamplerParameterIuivEXT = (PFNGLSAMPLERPARAMETERIUIVEXTPROC)load("glSamplerParameterIuivEXT"); - glad_glGetSamplerParameterIivEXT = (PFNGLGETSAMPLERPARAMETERIIVEXTPROC)load("glGetSamplerParameterIivEXT"); - glad_glGetSamplerParameterIuivEXT = (PFNGLGETSAMPLERPARAMETERIUIVEXTPROC)load("glGetSamplerParameterIuivEXT"); -} -static void load_GL_EXT_texture_buffer(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_buffer) return; - glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); - glad_glTexBufferRangeEXT = (PFNGLTEXBUFFERRANGEEXTPROC)load("glTexBufferRangeEXT"); -} -static void load_GL_EXT_texture_storage(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_storage) return; - glad_glTexStorage1DEXT = (PFNGLTEXSTORAGE1DEXTPROC)load("glTexStorage1DEXT"); - glad_glTexStorage2DEXT = (PFNGLTEXSTORAGE2DEXTPROC)load("glTexStorage2DEXT"); - glad_glTexStorage3DEXT = (PFNGLTEXSTORAGE3DEXTPROC)load("glTexStorage3DEXT"); - glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); - glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); - glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); -} -static void load_GL_EXT_texture_storage_compression(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_storage_compression) return; - glad_glTexStorageAttribs2DEXT = (PFNGLTEXSTORAGEATTRIBS2DEXTPROC)load("glTexStorageAttribs2DEXT"); - glad_glTexStorageAttribs3DEXT = (PFNGLTEXSTORAGEATTRIBS3DEXTPROC)load("glTexStorageAttribs3DEXT"); -} -static void load_GL_EXT_texture_view(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_view) return; - glad_glTextureViewEXT = (PFNGLTEXTUREVIEWEXTPROC)load("glTextureViewEXT"); -} -static void load_GL_EXT_win32_keyed_mutex(GLADloadproc load) { - if(!GLAD_GL_EXT_win32_keyed_mutex) return; - glad_glAcquireKeyedMutexWin32EXT = (PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)load("glAcquireKeyedMutexWin32EXT"); - glad_glReleaseKeyedMutexWin32EXT = (PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)load("glReleaseKeyedMutexWin32EXT"); -} -static void load_GL_EXT_window_rectangles(GLADloadproc load) { - if(!GLAD_GL_EXT_window_rectangles) return; - glad_glWindowRectanglesEXT = (PFNGLWINDOWRECTANGLESEXTPROC)load("glWindowRectanglesEXT"); -} -static void load_GL_IMG_bindless_texture(GLADloadproc load) { - if(!GLAD_GL_IMG_bindless_texture) return; - glad_glGetTextureHandleIMG = (PFNGLGETTEXTUREHANDLEIMGPROC)load("glGetTextureHandleIMG"); - glad_glGetTextureSamplerHandleIMG = (PFNGLGETTEXTURESAMPLERHANDLEIMGPROC)load("glGetTextureSamplerHandleIMG"); - glad_glUniformHandleui64IMG = (PFNGLUNIFORMHANDLEUI64IMGPROC)load("glUniformHandleui64IMG"); - glad_glUniformHandleui64vIMG = (PFNGLUNIFORMHANDLEUI64VIMGPROC)load("glUniformHandleui64vIMG"); - glad_glProgramUniformHandleui64IMG = (PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC)load("glProgramUniformHandleui64IMG"); - glad_glProgramUniformHandleui64vIMG = (PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC)load("glProgramUniformHandleui64vIMG"); -} -static void load_GL_IMG_framebuffer_downsample(GLADloadproc load) { - if(!GLAD_GL_IMG_framebuffer_downsample) return; - glad_glFramebufferTexture2DDownsampleIMG = (PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC)load("glFramebufferTexture2DDownsampleIMG"); - glad_glFramebufferTextureLayerDownsampleIMG = (PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC)load("glFramebufferTextureLayerDownsampleIMG"); -} -static void load_GL_IMG_multisampled_render_to_texture(GLADloadproc load) { - if(!GLAD_GL_IMG_multisampled_render_to_texture) return; - glad_glRenderbufferStorageMultisampleIMG = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC)load("glRenderbufferStorageMultisampleIMG"); - glad_glFramebufferTexture2DMultisampleIMG = (PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC)load("glFramebufferTexture2DMultisampleIMG"); -} -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_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_KHR_blend_equation_advanced(GLADloadproc load) { - if(!GLAD_GL_KHR_blend_equation_advanced) return; - glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); -} -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_KHR_parallel_shader_compile(GLADloadproc load) { - if(!GLAD_GL_KHR_parallel_shader_compile) return; - glad_glMaxShaderCompilerThreadsKHR = (PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)load("glMaxShaderCompilerThreadsKHR"); -} -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_MESA_framebuffer_flip_y(GLADloadproc load) { - if(!GLAD_GL_MESA_framebuffer_flip_y) return; - glad_glFramebufferParameteriMESA = (PFNGLFRAMEBUFFERPARAMETERIMESAPROC)load("glFramebufferParameteriMESA"); - glad_glGetFramebufferParameterivMESA = (PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)load("glGetFramebufferParameterivMESA"); -} -static void load_GL_MESA_sampler_objects(GLADloadproc load) { - if(!GLAD_GL_MESA_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_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); - glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); -} -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_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_NV_clip_space_w_scaling(GLADloadproc load) { - if(!GLAD_GL_NV_clip_space_w_scaling) return; - glad_glViewportPositionWScaleNV = (PFNGLVIEWPORTPOSITIONWSCALENVPROC)load("glViewportPositionWScaleNV"); -} -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_NV_conservative_raster(GLADloadproc load) { - if(!GLAD_GL_NV_conservative_raster) return; - glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); -} -static void load_GL_NV_conservative_raster_pre_snap_triangles(GLADloadproc load) { - if(!GLAD_GL_NV_conservative_raster_pre_snap_triangles) return; - glad_glConservativeRasterParameteriNV = (PFNGLCONSERVATIVERASTERPARAMETERINVPROC)load("glConservativeRasterParameteriNV"); -} -static void load_GL_NV_copy_buffer(GLADloadproc load) { - if(!GLAD_GL_NV_copy_buffer) return; - glad_glCopyBufferSubDataNV = (PFNGLCOPYBUFFERSUBDATANVPROC)load("glCopyBufferSubDataNV"); -} -static void load_GL_NV_coverage_sample(GLADloadproc load) { - if(!GLAD_GL_NV_coverage_sample) return; - glad_glCoverageMaskNV = (PFNGLCOVERAGEMASKNVPROC)load("glCoverageMaskNV"); - glad_glCoverageOperationNV = (PFNGLCOVERAGEOPERATIONNVPROC)load("glCoverageOperationNV"); -} -static void load_GL_NV_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_NV_draw_buffers) return; - glad_glDrawBuffersNV = (PFNGLDRAWBUFFERSNVPROC)load("glDrawBuffersNV"); -} -static void load_GL_NV_draw_instanced(GLADloadproc load) { - if(!GLAD_GL_NV_draw_instanced) return; - glad_glDrawArraysInstancedNV = (PFNGLDRAWARRAYSINSTANCEDNVPROC)load("glDrawArraysInstancedNV"); - glad_glDrawElementsInstancedNV = (PFNGLDRAWELEMENTSINSTANCEDNVPROC)load("glDrawElementsInstancedNV"); -} -static void load_GL_NV_draw_vulkan_image(GLADloadproc load) { - if(!GLAD_GL_NV_draw_vulkan_image) return; - glad_glDrawVkImageNV = (PFNGLDRAWVKIMAGENVPROC)load("glDrawVkImageNV"); - glad_glGetVkProcAddrNV = (PFNGLGETVKPROCADDRNVPROC)load("glGetVkProcAddrNV"); - glad_glWaitVkSemaphoreNV = (PFNGLWAITVKSEMAPHORENVPROC)load("glWaitVkSemaphoreNV"); - glad_glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC)load("glSignalVkSemaphoreNV"); - glad_glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC)load("glSignalVkFenceNV"); -} -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_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_framebuffer_blit(GLADloadproc load) { - if(!GLAD_GL_NV_framebuffer_blit) return; - glad_glBlitFramebufferNV = (PFNGLBLITFRAMEBUFFERNVPROC)load("glBlitFramebufferNV"); -} -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_NV_framebuffer_multisample(GLADloadproc load) { - if(!GLAD_GL_NV_framebuffer_multisample) return; - glad_glRenderbufferStorageMultisampleNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC)load("glRenderbufferStorageMultisampleNV"); -} -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_instanced_arrays(GLADloadproc load) { - if(!GLAD_GL_NV_instanced_arrays) return; - glad_glVertexAttribDivisorNV = (PFNGLVERTEXATTRIBDIVISORNVPROC)load("glVertexAttribDivisorNV"); -} -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_NV_memory_attachment(GLADloadproc load) { - if(!GLAD_GL_NV_memory_attachment) return; - glad_glGetMemoryObjectDetachedResourcesuivNV = (PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)load("glGetMemoryObjectDetachedResourcesuivNV"); - glad_glResetMemoryObjectParameterNV = (PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)load("glResetMemoryObjectParameterNV"); - glad_glTexAttachMemoryNV = (PFNGLTEXATTACHMEMORYNVPROC)load("glTexAttachMemoryNV"); - glad_glBufferAttachMemoryNV = (PFNGLBUFFERATTACHMEMORYNVPROC)load("glBufferAttachMemoryNV"); - glad_glTextureAttachMemoryNV = (PFNGLTEXTUREATTACHMEMORYNVPROC)load("glTextureAttachMemoryNV"); - glad_glNamedBufferAttachMemoryNV = (PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)load("glNamedBufferAttachMemoryNV"); -} -static void load_GL_NV_memory_object_sparse(GLADloadproc load) { - if(!GLAD_GL_NV_memory_object_sparse) return; - glad_glBufferPageCommitmentMemNV = (PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)load("glBufferPageCommitmentMemNV"); - glad_glTexPageCommitmentMemNV = (PFNGLTEXPAGECOMMITMENTMEMNVPROC)load("glTexPageCommitmentMemNV"); - glad_glNamedBufferPageCommitmentMemNV = (PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)load("glNamedBufferPageCommitmentMemNV"); - glad_glTexturePageCommitmentMemNV = (PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)load("glTexturePageCommitmentMemNV"); -} -static void load_GL_NV_mesh_shader(GLADloadproc load) { - if(!GLAD_GL_NV_mesh_shader) return; - glad_glDrawMeshTasksNV = (PFNGLDRAWMESHTASKSNVPROC)load("glDrawMeshTasksNV"); - glad_glDrawMeshTasksIndirectNV = (PFNGLDRAWMESHTASKSINDIRECTNVPROC)load("glDrawMeshTasksIndirectNV"); - glad_glMultiDrawMeshTasksIndirectNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)load("glMultiDrawMeshTasksIndirectNV"); - glad_glMultiDrawMeshTasksIndirectCountNV = (PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)load("glMultiDrawMeshTasksIndirectCountNV"); -} -static void load_GL_NV_non_square_matrices(GLADloadproc load) { - if(!GLAD_GL_NV_non_square_matrices) return; - glad_glUniformMatrix2x3fvNV = (PFNGLUNIFORMMATRIX2X3FVNVPROC)load("glUniformMatrix2x3fvNV"); - glad_glUniformMatrix3x2fvNV = (PFNGLUNIFORMMATRIX3X2FVNVPROC)load("glUniformMatrix3x2fvNV"); - glad_glUniformMatrix2x4fvNV = (PFNGLUNIFORMMATRIX2X4FVNVPROC)load("glUniformMatrix2x4fvNV"); - glad_glUniformMatrix4x2fvNV = (PFNGLUNIFORMMATRIX4X2FVNVPROC)load("glUniformMatrix4x2fvNV"); - glad_glUniformMatrix3x4fvNV = (PFNGLUNIFORMMATRIX3X4FVNVPROC)load("glUniformMatrix3x4fvNV"); - glad_glUniformMatrix4x3fvNV = (PFNGLUNIFORMMATRIX4X3FVNVPROC)load("glUniformMatrix4x3fvNV"); -} -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"); - glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); - glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); - glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); - glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); - glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); - glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); - glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); - glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); - glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); - glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); - glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); - glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); - glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); - 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"); -} -static void load_GL_NV_polygon_mode(GLADloadproc load) { - if(!GLAD_GL_NV_polygon_mode) return; - glad_glPolygonModeNV = (PFNGLPOLYGONMODENVPROC)load("glPolygonModeNV"); -} -static void load_GL_NV_read_buffer(GLADloadproc load) { - if(!GLAD_GL_NV_read_buffer) return; - glad_glReadBufferNV = (PFNGLREADBUFFERNVPROC)load("glReadBufferNV"); -} -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_NV_scissor_exclusive(GLADloadproc load) { - if(!GLAD_GL_NV_scissor_exclusive) return; - glad_glScissorExclusiveNV = (PFNGLSCISSOREXCLUSIVENVPROC)load("glScissorExclusiveNV"); - glad_glScissorExclusiveArrayvNV = (PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)load("glScissorExclusiveArrayvNV"); -} -static void load_GL_NV_shading_rate_image(GLADloadproc load) { - if(!GLAD_GL_NV_shading_rate_image) return; - glad_glBindShadingRateImageNV = (PFNGLBINDSHADINGRATEIMAGENVPROC)load("glBindShadingRateImageNV"); - glad_glGetShadingRateImagePaletteNV = (PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)load("glGetShadingRateImagePaletteNV"); - glad_glGetShadingRateSampleLocationivNV = (PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)load("glGetShadingRateSampleLocationivNV"); - glad_glShadingRateImageBarrierNV = (PFNGLSHADINGRATEIMAGEBARRIERNVPROC)load("glShadingRateImageBarrierNV"); - glad_glShadingRateImagePaletteNV = (PFNGLSHADINGRATEIMAGEPALETTENVPROC)load("glShadingRateImagePaletteNV"); - glad_glShadingRateSampleOrderNV = (PFNGLSHADINGRATESAMPLEORDERNVPROC)load("glShadingRateSampleOrderNV"); - glad_glShadingRateSampleOrderCustomNV = (PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)load("glShadingRateSampleOrderCustomNV"); -} -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_NV_timeline_semaphore(GLADloadproc load) { - if(!GLAD_GL_NV_timeline_semaphore) return; - glad_glCreateSemaphoresNV = (PFNGLCREATESEMAPHORESNVPROC)load("glCreateSemaphoresNV"); - glad_glSemaphoreParameterivNV = (PFNGLSEMAPHOREPARAMETERIVNVPROC)load("glSemaphoreParameterivNV"); - glad_glGetSemaphoreParameterivNV = (PFNGLGETSEMAPHOREPARAMETERIVNVPROC)load("glGetSemaphoreParameterivNV"); -} -static void load_GL_NV_viewport_array(GLADloadproc load) { - if(!GLAD_GL_NV_viewport_array) return; - glad_glViewportArrayvNV = (PFNGLVIEWPORTARRAYVNVPROC)load("glViewportArrayvNV"); - glad_glViewportIndexedfNV = (PFNGLVIEWPORTINDEXEDFNVPROC)load("glViewportIndexedfNV"); - glad_glViewportIndexedfvNV = (PFNGLVIEWPORTINDEXEDFVNVPROC)load("glViewportIndexedfvNV"); - glad_glScissorArrayvNV = (PFNGLSCISSORARRAYVNVPROC)load("glScissorArrayvNV"); - glad_glScissorIndexedNV = (PFNGLSCISSORINDEXEDNVPROC)load("glScissorIndexedNV"); - glad_glScissorIndexedvNV = (PFNGLSCISSORINDEXEDVNVPROC)load("glScissorIndexedvNV"); - glad_glDepthRangeArrayfvNV = (PFNGLDEPTHRANGEARRAYFVNVPROC)load("glDepthRangeArrayfvNV"); - glad_glDepthRangeIndexedfNV = (PFNGLDEPTHRANGEINDEXEDFNVPROC)load("glDepthRangeIndexedfNV"); - glad_glGetFloati_vNV = (PFNGLGETFLOATI_VNVPROC)load("glGetFloati_vNV"); - glad_glEnableiNV = (PFNGLENABLEINVPROC)load("glEnableiNV"); - glad_glDisableiNV = (PFNGLDISABLEINVPROC)load("glDisableiNV"); - glad_glIsEnablediNV = (PFNGLISENABLEDINVPROC)load("glIsEnablediNV"); -} -static void load_GL_NV_viewport_swizzle(GLADloadproc load) { - if(!GLAD_GL_NV_viewport_swizzle) return; - glad_glViewportSwizzleNV = (PFNGLVIEWPORTSWIZZLENVPROC)load("glViewportSwizzleNV"); -} -static void load_GL_OES_EGL_image(GLADloadproc load) { - if(!GLAD_GL_OES_EGL_image) return; - glad_glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)load("glEGLImageTargetTexture2DOES"); - glad_glEGLImageTargetRenderbufferStorageOES = (PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)load("glEGLImageTargetRenderbufferStorageOES"); -} -static void load_GL_OES_EGL_image_external(GLADloadproc load) { - if(!GLAD_GL_OES_EGL_image_external) return; - glad_glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)load("glEGLImageTargetTexture2DOES"); -} -static void load_GL_OES_copy_image(GLADloadproc load) { - if(!GLAD_GL_OES_copy_image) return; - glad_glCopyImageSubDataOES = (PFNGLCOPYIMAGESUBDATAOESPROC)load("glCopyImageSubDataOES"); -} -static void load_GL_OES_draw_buffers_indexed(GLADloadproc load) { - if(!GLAD_GL_OES_draw_buffers_indexed) return; - glad_glEnableiOES = (PFNGLENABLEIOESPROC)load("glEnableiOES"); - glad_glDisableiOES = (PFNGLDISABLEIOESPROC)load("glDisableiOES"); - glad_glBlendEquationiOES = (PFNGLBLENDEQUATIONIOESPROC)load("glBlendEquationiOES"); - glad_glBlendEquationSeparateiOES = (PFNGLBLENDEQUATIONSEPARATEIOESPROC)load("glBlendEquationSeparateiOES"); - glad_glBlendFunciOES = (PFNGLBLENDFUNCIOESPROC)load("glBlendFunciOES"); - glad_glBlendFuncSeparateiOES = (PFNGLBLENDFUNCSEPARATEIOESPROC)load("glBlendFuncSeparateiOES"); - glad_glColorMaskiOES = (PFNGLCOLORMASKIOESPROC)load("glColorMaskiOES"); - glad_glIsEnablediOES = (PFNGLISENABLEDIOESPROC)load("glIsEnablediOES"); -} -static void load_GL_OES_draw_elements_base_vertex(GLADloadproc load) { - if(!GLAD_GL_OES_draw_elements_base_vertex) return; - glad_glDrawElementsBaseVertexOES = (PFNGLDRAWELEMENTSBASEVERTEXOESPROC)load("glDrawElementsBaseVertexOES"); - glad_glDrawRangeElementsBaseVertexOES = (PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC)load("glDrawRangeElementsBaseVertexOES"); - glad_glDrawElementsInstancedBaseVertexOES = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC)load("glDrawElementsInstancedBaseVertexOES"); - glad_glMultiDrawElementsBaseVertexEXT = (PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC)load("glMultiDrawElementsBaseVertexEXT"); -} -static void load_GL_OES_geometry_shader(GLADloadproc load) { - if(!GLAD_GL_OES_geometry_shader) return; - glad_glFramebufferTextureOES = (PFNGLFRAMEBUFFERTEXTUREOESPROC)load("glFramebufferTextureOES"); -} -static void load_GL_OES_get_program_binary(GLADloadproc load) { - if(!GLAD_GL_OES_get_program_binary) return; - glad_glGetProgramBinaryOES = (PFNGLGETPROGRAMBINARYOESPROC)load("glGetProgramBinaryOES"); - glad_glProgramBinaryOES = (PFNGLPROGRAMBINARYOESPROC)load("glProgramBinaryOES"); -} -static void load_GL_OES_mapbuffer(GLADloadproc load) { - if(!GLAD_GL_OES_mapbuffer) return; - glad_glMapBufferOES = (PFNGLMAPBUFFEROESPROC)load("glMapBufferOES"); - glad_glUnmapBufferOES = (PFNGLUNMAPBUFFEROESPROC)load("glUnmapBufferOES"); - glad_glGetBufferPointervOES = (PFNGLGETBUFFERPOINTERVOESPROC)load("glGetBufferPointervOES"); -} -static void load_GL_OES_primitive_bounding_box(GLADloadproc load) { - if(!GLAD_GL_OES_primitive_bounding_box) return; - glad_glPrimitiveBoundingBoxOES = (PFNGLPRIMITIVEBOUNDINGBOXOESPROC)load("glPrimitiveBoundingBoxOES"); -} -static void load_GL_OES_sample_shading(GLADloadproc load) { - if(!GLAD_GL_OES_sample_shading) return; - glad_glMinSampleShadingOES = (PFNGLMINSAMPLESHADINGOESPROC)load("glMinSampleShadingOES"); -} -static void load_GL_OES_tessellation_shader(GLADloadproc load) { - if(!GLAD_GL_OES_tessellation_shader) return; - glad_glPatchParameteriOES = (PFNGLPATCHPARAMETERIOESPROC)load("glPatchParameteriOES"); -} -static void load_GL_OES_texture_3D(GLADloadproc load) { - if(!GLAD_GL_OES_texture_3D) return; - glad_glTexImage3DOES = (PFNGLTEXIMAGE3DOESPROC)load("glTexImage3DOES"); - glad_glTexSubImage3DOES = (PFNGLTEXSUBIMAGE3DOESPROC)load("glTexSubImage3DOES"); - glad_glCopyTexSubImage3DOES = (PFNGLCOPYTEXSUBIMAGE3DOESPROC)load("glCopyTexSubImage3DOES"); - glad_glCompressedTexImage3DOES = (PFNGLCOMPRESSEDTEXIMAGE3DOESPROC)load("glCompressedTexImage3DOES"); - glad_glCompressedTexSubImage3DOES = (PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC)load("glCompressedTexSubImage3DOES"); - glad_glFramebufferTexture3DOES = (PFNGLFRAMEBUFFERTEXTURE3DOESPROC)load("glFramebufferTexture3DOES"); -} -static void load_GL_OES_texture_border_clamp(GLADloadproc load) { - if(!GLAD_GL_OES_texture_border_clamp) return; - glad_glTexParameterIivOES = (PFNGLTEXPARAMETERIIVOESPROC)load("glTexParameterIivOES"); - glad_glTexParameterIuivOES = (PFNGLTEXPARAMETERIUIVOESPROC)load("glTexParameterIuivOES"); - glad_glGetTexParameterIivOES = (PFNGLGETTEXPARAMETERIIVOESPROC)load("glGetTexParameterIivOES"); - glad_glGetTexParameterIuivOES = (PFNGLGETTEXPARAMETERIUIVOESPROC)load("glGetTexParameterIuivOES"); - glad_glSamplerParameterIivOES = (PFNGLSAMPLERPARAMETERIIVOESPROC)load("glSamplerParameterIivOES"); - glad_glSamplerParameterIuivOES = (PFNGLSAMPLERPARAMETERIUIVOESPROC)load("glSamplerParameterIuivOES"); - glad_glGetSamplerParameterIivOES = (PFNGLGETSAMPLERPARAMETERIIVOESPROC)load("glGetSamplerParameterIivOES"); - glad_glGetSamplerParameterIuivOES = (PFNGLGETSAMPLERPARAMETERIUIVOESPROC)load("glGetSamplerParameterIuivOES"); -} -static void load_GL_OES_texture_buffer(GLADloadproc load) { - if(!GLAD_GL_OES_texture_buffer) return; - glad_glTexBufferOES = (PFNGLTEXBUFFEROESPROC)load("glTexBufferOES"); - glad_glTexBufferRangeOES = (PFNGLTEXBUFFERRANGEOESPROC)load("glTexBufferRangeOES"); -} -static void load_GL_OES_texture_storage_multisample_2d_array(GLADloadproc load) { - if(!GLAD_GL_OES_texture_storage_multisample_2d_array) return; - glad_glTexStorage3DMultisampleOES = (PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC)load("glTexStorage3DMultisampleOES"); -} -static void load_GL_OES_texture_view(GLADloadproc load) { - if(!GLAD_GL_OES_texture_view) return; - glad_glTextureViewOES = (PFNGLTEXTUREVIEWOESPROC)load("glTextureViewOES"); -} -static void load_GL_OES_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_OES_vertex_array_object) return; - glad_glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)load("glBindVertexArrayOES"); - glad_glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)load("glDeleteVertexArraysOES"); - glad_glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOESPROC)load("glGenVertexArraysOES"); - glad_glIsVertexArrayOES = (PFNGLISVERTEXARRAYOESPROC)load("glIsVertexArrayOES"); -} -static void load_GL_OES_viewport_array(GLADloadproc load) { - if(!GLAD_GL_OES_viewport_array) return; - glad_glViewportArrayvOES = (PFNGLVIEWPORTARRAYVOESPROC)load("glViewportArrayvOES"); - glad_glViewportIndexedfOES = (PFNGLVIEWPORTINDEXEDFOESPROC)load("glViewportIndexedfOES"); - glad_glViewportIndexedfvOES = (PFNGLVIEWPORTINDEXEDFVOESPROC)load("glViewportIndexedfvOES"); - glad_glScissorArrayvOES = (PFNGLSCISSORARRAYVOESPROC)load("glScissorArrayvOES"); - glad_glScissorIndexedOES = (PFNGLSCISSORINDEXEDOESPROC)load("glScissorIndexedOES"); - glad_glScissorIndexedvOES = (PFNGLSCISSORINDEXEDVOESPROC)load("glScissorIndexedvOES"); - glad_glDepthRangeArrayfvOES = (PFNGLDEPTHRANGEARRAYFVOESPROC)load("glDepthRangeArrayfvOES"); - glad_glDepthRangeIndexedfOES = (PFNGLDEPTHRANGEINDEXEDFOESPROC)load("glDepthRangeIndexedfOES"); - glad_glGetFloati_vOES = (PFNGLGETFLOATI_VOESPROC)load("glGetFloati_vOES"); - glad_glEnableiOES = (PFNGLENABLEIOESPROC)load("glEnableiOES"); - glad_glDisableiOES = (PFNGLDISABLEIOESPROC)load("glDisableiOES"); - glad_glIsEnablediOES = (PFNGLISENABLEDIOESPROC)load("glIsEnablediOES"); -} -static void load_GL_OVR_multiview(GLADloadproc load) { - if(!GLAD_GL_OVR_multiview) return; - glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); - glad_glNamedFramebufferTextureMultiviewOVR = (PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glNamedFramebufferTextureMultiviewOVR"); -} -static void load_GL_OVR_multiview_multisampled_render_to_texture(GLADloadproc load) { - if(!GLAD_GL_OVR_multiview_multisampled_render_to_texture) return; - glad_glFramebufferTextureMultisampleMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)load("glFramebufferTextureMultisampleMultiviewOVR"); -} -static void load_GL_QCOM_alpha_test(GLADloadproc load) { - if(!GLAD_GL_QCOM_alpha_test) return; - glad_glAlphaFuncQCOM = (PFNGLALPHAFUNCQCOMPROC)load("glAlphaFuncQCOM"); -} -static void load_GL_QCOM_driver_control(GLADloadproc load) { - if(!GLAD_GL_QCOM_driver_control) return; - glad_glGetDriverControlsQCOM = (PFNGLGETDRIVERCONTROLSQCOMPROC)load("glGetDriverControlsQCOM"); - glad_glGetDriverControlStringQCOM = (PFNGLGETDRIVERCONTROLSTRINGQCOMPROC)load("glGetDriverControlStringQCOM"); - glad_glEnableDriverControlQCOM = (PFNGLENABLEDRIVERCONTROLQCOMPROC)load("glEnableDriverControlQCOM"); - glad_glDisableDriverControlQCOM = (PFNGLDISABLEDRIVERCONTROLQCOMPROC)load("glDisableDriverControlQCOM"); -} -static void load_GL_QCOM_extended_get(GLADloadproc load) { - if(!GLAD_GL_QCOM_extended_get) return; - glad_glExtGetTexturesQCOM = (PFNGLEXTGETTEXTURESQCOMPROC)load("glExtGetTexturesQCOM"); - glad_glExtGetBuffersQCOM = (PFNGLEXTGETBUFFERSQCOMPROC)load("glExtGetBuffersQCOM"); - glad_glExtGetRenderbuffersQCOM = (PFNGLEXTGETRENDERBUFFERSQCOMPROC)load("glExtGetRenderbuffersQCOM"); - glad_glExtGetFramebuffersQCOM = (PFNGLEXTGETFRAMEBUFFERSQCOMPROC)load("glExtGetFramebuffersQCOM"); - glad_glExtGetTexLevelParameterivQCOM = (PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC)load("glExtGetTexLevelParameterivQCOM"); - glad_glExtTexObjectStateOverrideiQCOM = (PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC)load("glExtTexObjectStateOverrideiQCOM"); - glad_glExtGetTexSubImageQCOM = (PFNGLEXTGETTEXSUBIMAGEQCOMPROC)load("glExtGetTexSubImageQCOM"); - glad_glExtGetBufferPointervQCOM = (PFNGLEXTGETBUFFERPOINTERVQCOMPROC)load("glExtGetBufferPointervQCOM"); -} -static void load_GL_QCOM_extended_get2(GLADloadproc load) { - if(!GLAD_GL_QCOM_extended_get2) return; - glad_glExtGetShadersQCOM = (PFNGLEXTGETSHADERSQCOMPROC)load("glExtGetShadersQCOM"); - glad_glExtGetProgramsQCOM = (PFNGLEXTGETPROGRAMSQCOMPROC)load("glExtGetProgramsQCOM"); - glad_glExtIsProgramBinaryQCOM = (PFNGLEXTISPROGRAMBINARYQCOMPROC)load("glExtIsProgramBinaryQCOM"); - glad_glExtGetProgramBinarySourceQCOM = (PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC)load("glExtGetProgramBinarySourceQCOM"); -} -static void load_GL_QCOM_frame_extrapolation(GLADloadproc load) { - if(!GLAD_GL_QCOM_frame_extrapolation) return; - glad_glExtrapolateTex2DQCOM = (PFNGLEXTRAPOLATETEX2DQCOMPROC)load("glExtrapolateTex2DQCOM"); -} -static void load_GL_QCOM_framebuffer_foveated(GLADloadproc load) { - if(!GLAD_GL_QCOM_framebuffer_foveated) return; - glad_glFramebufferFoveationConfigQCOM = (PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC)load("glFramebufferFoveationConfigQCOM"); - glad_glFramebufferFoveationParametersQCOM = (PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC)load("glFramebufferFoveationParametersQCOM"); -} -static void load_GL_QCOM_motion_estimation(GLADloadproc load) { - if(!GLAD_GL_QCOM_motion_estimation) return; - glad_glTexEstimateMotionQCOM = (PFNGLTEXESTIMATEMOTIONQCOMPROC)load("glTexEstimateMotionQCOM"); - glad_glTexEstimateMotionRegionsQCOM = (PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC)load("glTexEstimateMotionRegionsQCOM"); -} -static void load_GL_QCOM_shader_framebuffer_fetch_noncoherent(GLADloadproc load) { - if(!GLAD_GL_QCOM_shader_framebuffer_fetch_noncoherent) return; - glad_glFramebufferFetchBarrierQCOM = (PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC)load("glFramebufferFetchBarrierQCOM"); -} -static void load_GL_QCOM_shading_rate(GLADloadproc load) { - if(!GLAD_GL_QCOM_shading_rate) return; - glad_glShadingRateQCOM = (PFNGLSHADINGRATEQCOMPROC)load("glShadingRateQCOM"); -} -static void load_GL_QCOM_texture_foveated(GLADloadproc load) { - if(!GLAD_GL_QCOM_texture_foveated) return; - glad_glTextureFoveationParametersQCOM = (PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC)load("glTextureFoveationParametersQCOM"); -} -static void load_GL_QCOM_tiled_rendering(GLADloadproc load) { - if(!GLAD_GL_QCOM_tiled_rendering) return; - glad_glStartTilingQCOM = (PFNGLSTARTTILINGQCOMPROC)load("glStartTilingQCOM"); - glad_glEndTilingQCOM = (PFNGLENDTILINGQCOMPROC)load("glEndTilingQCOM"); -} -static int find_extensionsGLES2(void) { - if (!get_exts()) return 0; - GLAD_GL_AMD_compressed_3DC_texture = has_ext("GL_AMD_compressed_3DC_texture"); - GLAD_GL_AMD_compressed_ATC_texture = has_ext("GL_AMD_compressed_ATC_texture"); - GLAD_GL_AMD_framebuffer_multisample_advanced = has_ext("GL_AMD_framebuffer_multisample_advanced"); - GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); - GLAD_GL_AMD_program_binary_Z400 = has_ext("GL_AMD_program_binary_Z400"); - GLAD_GL_ANDROID_extension_pack_es31a = has_ext("GL_ANDROID_extension_pack_es31a"); - GLAD_GL_ANGLE_depth_texture = has_ext("GL_ANGLE_depth_texture"); - GLAD_GL_ANGLE_framebuffer_blit = has_ext("GL_ANGLE_framebuffer_blit"); - GLAD_GL_ANGLE_framebuffer_multisample = has_ext("GL_ANGLE_framebuffer_multisample"); - GLAD_GL_ANGLE_instanced_arrays = has_ext("GL_ANGLE_instanced_arrays"); - GLAD_GL_ANGLE_pack_reverse_row_order = has_ext("GL_ANGLE_pack_reverse_row_order"); - GLAD_GL_ANGLE_program_binary = has_ext("GL_ANGLE_program_binary"); - GLAD_GL_ANGLE_texture_compression_dxt3 = has_ext("GL_ANGLE_texture_compression_dxt3"); - GLAD_GL_ANGLE_texture_compression_dxt5 = has_ext("GL_ANGLE_texture_compression_dxt5"); - GLAD_GL_ANGLE_texture_usage = has_ext("GL_ANGLE_texture_usage"); - GLAD_GL_ANGLE_translated_shader_source = has_ext("GL_ANGLE_translated_shader_source"); - GLAD_GL_APPLE_clip_distance = has_ext("GL_APPLE_clip_distance"); - GLAD_GL_APPLE_color_buffer_packed_float = has_ext("GL_APPLE_color_buffer_packed_float"); - GLAD_GL_APPLE_copy_texture_levels = has_ext("GL_APPLE_copy_texture_levels"); - GLAD_GL_APPLE_framebuffer_multisample = has_ext("GL_APPLE_framebuffer_multisample"); - GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); - GLAD_GL_APPLE_sync = has_ext("GL_APPLE_sync"); - GLAD_GL_APPLE_texture_format_BGRA8888 = has_ext("GL_APPLE_texture_format_BGRA8888"); - GLAD_GL_APPLE_texture_max_level = has_ext("GL_APPLE_texture_max_level"); - GLAD_GL_APPLE_texture_packed_float = has_ext("GL_APPLE_texture_packed_float"); - GLAD_GL_ARM_mali_program_binary = has_ext("GL_ARM_mali_program_binary"); - GLAD_GL_ARM_mali_shader_binary = has_ext("GL_ARM_mali_shader_binary"); - GLAD_GL_ARM_rgba8 = has_ext("GL_ARM_rgba8"); - GLAD_GL_ARM_shader_core_properties = has_ext("GL_ARM_shader_core_properties"); - GLAD_GL_ARM_shader_framebuffer_fetch = has_ext("GL_ARM_shader_framebuffer_fetch"); - GLAD_GL_ARM_shader_framebuffer_fetch_depth_stencil = has_ext("GL_ARM_shader_framebuffer_fetch_depth_stencil"); - GLAD_GL_ARM_texture_unnormalized_coordinates = has_ext("GL_ARM_texture_unnormalized_coordinates"); - GLAD_GL_DMP_program_binary = has_ext("GL_DMP_program_binary"); - GLAD_GL_DMP_shader_binary = has_ext("GL_DMP_shader_binary"); - GLAD_GL_EXT_EGL_image_array = has_ext("GL_EXT_EGL_image_array"); - GLAD_GL_EXT_EGL_image_storage = has_ext("GL_EXT_EGL_image_storage"); - GLAD_GL_EXT_EGL_image_storage_compression = has_ext("GL_EXT_EGL_image_storage_compression"); - GLAD_GL_EXT_YUV_target = has_ext("GL_EXT_YUV_target"); - GLAD_GL_EXT_base_instance = has_ext("GL_EXT_base_instance"); - GLAD_GL_EXT_blend_func_extended = has_ext("GL_EXT_blend_func_extended"); - GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); - GLAD_GL_EXT_buffer_storage = has_ext("GL_EXT_buffer_storage"); - GLAD_GL_EXT_clear_texture = has_ext("GL_EXT_clear_texture"); - GLAD_GL_EXT_clip_control = has_ext("GL_EXT_clip_control"); - GLAD_GL_EXT_clip_cull_distance = has_ext("GL_EXT_clip_cull_distance"); - GLAD_GL_EXT_color_buffer_float = has_ext("GL_EXT_color_buffer_float"); - GLAD_GL_EXT_color_buffer_half_float = has_ext("GL_EXT_color_buffer_half_float"); - GLAD_GL_EXT_conservative_depth = has_ext("GL_EXT_conservative_depth"); - GLAD_GL_EXT_copy_image = has_ext("GL_EXT_copy_image"); - GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); - GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); - GLAD_GL_EXT_depth_clamp = has_ext("GL_EXT_depth_clamp"); - GLAD_GL_EXT_discard_framebuffer = has_ext("GL_EXT_discard_framebuffer"); - GLAD_GL_EXT_disjoint_timer_query = has_ext("GL_EXT_disjoint_timer_query"); - GLAD_GL_EXT_draw_buffers = has_ext("GL_EXT_draw_buffers"); - GLAD_GL_EXT_draw_buffers_indexed = has_ext("GL_EXT_draw_buffers_indexed"); - GLAD_GL_EXT_draw_elements_base_vertex = has_ext("GL_EXT_draw_elements_base_vertex"); - GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); - GLAD_GL_EXT_draw_transform_feedback = has_ext("GL_EXT_draw_transform_feedback"); - GLAD_GL_EXT_external_buffer = has_ext("GL_EXT_external_buffer"); - GLAD_GL_EXT_float_blend = has_ext("GL_EXT_float_blend"); - GLAD_GL_EXT_fragment_shading_rate = has_ext("GL_EXT_fragment_shading_rate"); - GLAD_GL_EXT_framebuffer_blit_layers = has_ext("GL_EXT_framebuffer_blit_layers"); - GLAD_GL_EXT_geometry_point_size = has_ext("GL_EXT_geometry_point_size"); - GLAD_GL_EXT_geometry_shader = has_ext("GL_EXT_geometry_shader"); - GLAD_GL_EXT_gpu_shader5 = has_ext("GL_EXT_gpu_shader5"); - GLAD_GL_EXT_instanced_arrays = has_ext("GL_EXT_instanced_arrays"); - GLAD_GL_EXT_map_buffer_range = has_ext("GL_EXT_map_buffer_range"); - GLAD_GL_EXT_memory_object = has_ext("GL_EXT_memory_object"); - GLAD_GL_EXT_memory_object_fd = has_ext("GL_EXT_memory_object_fd"); - GLAD_GL_EXT_memory_object_win32 = has_ext("GL_EXT_memory_object_win32"); - GLAD_GL_EXT_mesh_shader = has_ext("GL_EXT_mesh_shader"); - GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); - GLAD_GL_EXT_multi_draw_indirect = has_ext("GL_EXT_multi_draw_indirect"); - GLAD_GL_EXT_multisampled_compatibility = has_ext("GL_EXT_multisampled_compatibility"); - GLAD_GL_EXT_multisampled_render_to_texture = has_ext("GL_EXT_multisampled_render_to_texture"); - GLAD_GL_EXT_multisampled_render_to_texture2 = has_ext("GL_EXT_multisampled_render_to_texture2"); - GLAD_GL_EXT_multiview_draw_buffers = has_ext("GL_EXT_multiview_draw_buffers"); - GLAD_GL_EXT_multiview_tessellation_geometry_shader = has_ext("GL_EXT_multiview_tessellation_geometry_shader"); - GLAD_GL_EXT_multiview_texture_multisample = has_ext("GL_EXT_multiview_texture_multisample"); - GLAD_GL_EXT_multiview_timer_query = has_ext("GL_EXT_multiview_timer_query"); - GLAD_GL_EXT_occlusion_query_boolean = has_ext("GL_EXT_occlusion_query_boolean"); - GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); - GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); - GLAD_GL_EXT_primitive_bounding_box = has_ext("GL_EXT_primitive_bounding_box"); - GLAD_GL_EXT_protected_textures = has_ext("GL_EXT_protected_textures"); - GLAD_GL_EXT_pvrtc_sRGB = has_ext("GL_EXT_pvrtc_sRGB"); - GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); - GLAD_GL_EXT_read_format_bgra = has_ext("GL_EXT_read_format_bgra"); - GLAD_GL_EXT_render_snorm = has_ext("GL_EXT_render_snorm"); - GLAD_GL_EXT_robustness = has_ext("GL_EXT_robustness"); - GLAD_GL_EXT_sRGB = has_ext("GL_EXT_sRGB"); - GLAD_GL_EXT_sRGB_write_control = has_ext("GL_EXT_sRGB_write_control"); - GLAD_GL_EXT_semaphore = has_ext("GL_EXT_semaphore"); - GLAD_GL_EXT_semaphore_fd = has_ext("GL_EXT_semaphore_fd"); - GLAD_GL_EXT_semaphore_win32 = has_ext("GL_EXT_semaphore_win32"); - GLAD_GL_EXT_separate_depth_stencil = has_ext("GL_EXT_separate_depth_stencil"); - GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); - GLAD_GL_EXT_shader_framebuffer_fetch = has_ext("GL_EXT_shader_framebuffer_fetch"); - GLAD_GL_EXT_shader_framebuffer_fetch_non_coherent = has_ext("GL_EXT_shader_framebuffer_fetch_non_coherent"); - GLAD_GL_EXT_shader_group_vote = has_ext("GL_EXT_shader_group_vote"); - GLAD_GL_EXT_shader_implicit_conversions = has_ext("GL_EXT_shader_implicit_conversions"); - GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); - GLAD_GL_EXT_shader_io_blocks = has_ext("GL_EXT_shader_io_blocks"); - GLAD_GL_EXT_shader_non_constant_global_initializers = has_ext("GL_EXT_shader_non_constant_global_initializers"); - GLAD_GL_EXT_shader_pixel_local_storage = has_ext("GL_EXT_shader_pixel_local_storage"); - GLAD_GL_EXT_shader_pixel_local_storage2 = has_ext("GL_EXT_shader_pixel_local_storage2"); - GLAD_GL_EXT_shader_samples_identical = has_ext("GL_EXT_shader_samples_identical"); - GLAD_GL_EXT_shader_texture_lod = has_ext("GL_EXT_shader_texture_lod"); - GLAD_GL_EXT_shader_texture_samples = has_ext("GL_EXT_shader_texture_samples"); - GLAD_GL_EXT_shadow_samplers = has_ext("GL_EXT_shadow_samplers"); - GLAD_GL_EXT_sparse_texture = has_ext("GL_EXT_sparse_texture"); - GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); - GLAD_GL_EXT_tessellation_point_size = has_ext("GL_EXT_tessellation_point_size"); - GLAD_GL_EXT_tessellation_shader = has_ext("GL_EXT_tessellation_shader"); - GLAD_GL_EXT_texture_border_clamp = has_ext("GL_EXT_texture_border_clamp"); - GLAD_GL_EXT_texture_buffer = has_ext("GL_EXT_texture_buffer"); - GLAD_GL_EXT_texture_compression_astc_decode_mode = has_ext("GL_EXT_texture_compression_astc_decode_mode"); - GLAD_GL_EXT_texture_compression_bptc = has_ext("GL_EXT_texture_compression_bptc"); - GLAD_GL_EXT_texture_compression_dxt1 = has_ext("GL_EXT_texture_compression_dxt1"); - GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); - GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); - GLAD_GL_EXT_texture_compression_s3tc_srgb = has_ext("GL_EXT_texture_compression_s3tc_srgb"); - GLAD_GL_EXT_texture_cube_map_array = has_ext("GL_EXT_texture_cube_map_array"); - GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); - GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); - GLAD_GL_EXT_texture_format_BGRA8888 = has_ext("GL_EXT_texture_format_BGRA8888"); - GLAD_GL_EXT_texture_format_sRGB_override = has_ext("GL_EXT_texture_format_sRGB_override"); - GLAD_GL_EXT_texture_mirror_clamp_to_edge = has_ext("GL_EXT_texture_mirror_clamp_to_edge"); - GLAD_GL_EXT_texture_norm16 = has_ext("GL_EXT_texture_norm16"); - GLAD_GL_EXT_texture_query_lod = has_ext("GL_EXT_texture_query_lod"); - GLAD_GL_EXT_texture_rg = has_ext("GL_EXT_texture_rg"); - GLAD_GL_EXT_texture_sRGB_R8 = has_ext("GL_EXT_texture_sRGB_R8"); - GLAD_GL_EXT_texture_sRGB_RG8 = has_ext("GL_EXT_texture_sRGB_RG8"); - GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); - GLAD_GL_EXT_texture_shadow_lod = has_ext("GL_EXT_texture_shadow_lod"); - GLAD_GL_EXT_texture_storage = has_ext("GL_EXT_texture_storage"); - GLAD_GL_EXT_texture_storage_compression = has_ext("GL_EXT_texture_storage_compression"); - GLAD_GL_EXT_texture_type_2_10_10_10_REV = has_ext("GL_EXT_texture_type_2_10_10_10_REV"); - GLAD_GL_EXT_texture_view = has_ext("GL_EXT_texture_view"); - GLAD_GL_EXT_unpack_subimage = has_ext("GL_EXT_unpack_subimage"); - GLAD_GL_EXT_win32_keyed_mutex = has_ext("GL_EXT_win32_keyed_mutex"); - GLAD_GL_EXT_window_rectangles = has_ext("GL_EXT_window_rectangles"); - GLAD_GL_FJ_shader_binary_GCCSO = has_ext("GL_FJ_shader_binary_GCCSO"); - GLAD_GL_HUAWEI_program_binary = has_ext("GL_HUAWEI_program_binary"); - GLAD_GL_HUAWEI_shader_binary = has_ext("GL_HUAWEI_shader_binary"); - GLAD_GL_IMG_bindless_texture = has_ext("GL_IMG_bindless_texture"); - GLAD_GL_IMG_framebuffer_downsample = has_ext("GL_IMG_framebuffer_downsample"); - GLAD_GL_IMG_multisampled_render_to_texture = has_ext("GL_IMG_multisampled_render_to_texture"); - GLAD_GL_IMG_program_binary = has_ext("GL_IMG_program_binary"); - GLAD_GL_IMG_read_format = has_ext("GL_IMG_read_format"); - GLAD_GL_IMG_shader_binary = has_ext("GL_IMG_shader_binary"); - GLAD_GL_IMG_texture_compression_pvrtc = has_ext("GL_IMG_texture_compression_pvrtc"); - GLAD_GL_IMG_texture_compression_pvrtc2 = has_ext("GL_IMG_texture_compression_pvrtc2"); - GLAD_GL_IMG_texture_filter_cubic = has_ext("GL_IMG_texture_filter_cubic"); - GLAD_GL_INTEL_blackhole_render = has_ext("GL_INTEL_blackhole_render"); - GLAD_GL_INTEL_conservative_rasterization = has_ext("GL_INTEL_conservative_rasterization"); - GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); - GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); - GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); - GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); - GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); - GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); - GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); - GLAD_GL_KHR_parallel_shader_compile = has_ext("GL_KHR_parallel_shader_compile"); - GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); - GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); - GLAD_GL_KHR_shader_subgroup = has_ext("GL_KHR_shader_subgroup"); - GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); - GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); - GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); - GLAD_GL_MESA_bgra = has_ext("GL_MESA_bgra"); - GLAD_GL_MESA_framebuffer_flip_x = has_ext("GL_MESA_framebuffer_flip_x"); - GLAD_GL_MESA_framebuffer_flip_y = has_ext("GL_MESA_framebuffer_flip_y"); - GLAD_GL_MESA_framebuffer_swap_xy = has_ext("GL_MESA_framebuffer_swap_xy"); - GLAD_GL_MESA_program_binary_formats = has_ext("GL_MESA_program_binary_formats"); - GLAD_GL_MESA_sampler_objects = has_ext("GL_MESA_sampler_objects"); - GLAD_GL_MESA_shader_integer_functions = has_ext("GL_MESA_shader_integer_functions"); - GLAD_GL_MESA_texture_const_bandwidth = has_ext("GL_MESA_texture_const_bandwidth"); - GLAD_GL_NVX_blend_equation_advanced_multi_draw_buffers = has_ext("GL_NVX_blend_equation_advanced_multi_draw_buffers"); - GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); - GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); - GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); - GLAD_GL_NV_blend_minmax_factor = has_ext("GL_NV_blend_minmax_factor"); - GLAD_GL_NV_clip_space_w_scaling = has_ext("GL_NV_clip_space_w_scaling"); - GLAD_GL_NV_compute_shader_derivatives = has_ext("GL_NV_compute_shader_derivatives"); - GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); - GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); - GLAD_GL_NV_conservative_raster_pre_snap = has_ext("GL_NV_conservative_raster_pre_snap"); - GLAD_GL_NV_conservative_raster_pre_snap_triangles = has_ext("GL_NV_conservative_raster_pre_snap_triangles"); - GLAD_GL_NV_copy_buffer = has_ext("GL_NV_copy_buffer"); - GLAD_GL_NV_coverage_sample = has_ext("GL_NV_coverage_sample"); - GLAD_GL_NV_depth_nonlinear = has_ext("GL_NV_depth_nonlinear"); - GLAD_GL_NV_draw_buffers = has_ext("GL_NV_draw_buffers"); - GLAD_GL_NV_draw_instanced = has_ext("GL_NV_draw_instanced"); - GLAD_GL_NV_draw_vulkan_image = has_ext("GL_NV_draw_vulkan_image"); - GLAD_GL_NV_explicit_attrib_location = has_ext("GL_NV_explicit_attrib_location"); - GLAD_GL_NV_fbo_color_attachments = has_ext("GL_NV_fbo_color_attachments"); - GLAD_GL_NV_fence = has_ext("GL_NV_fence"); - GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); - GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); - GLAD_GL_NV_fragment_shader_barycentric = has_ext("GL_NV_fragment_shader_barycentric"); - GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); - GLAD_GL_NV_framebuffer_blit = has_ext("GL_NV_framebuffer_blit"); - GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); - GLAD_GL_NV_framebuffer_multisample = has_ext("GL_NV_framebuffer_multisample"); - GLAD_GL_NV_generate_mipmap_sRGB = has_ext("GL_NV_generate_mipmap_sRGB"); - GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); - GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); - GLAD_GL_NV_image_formats = has_ext("GL_NV_image_formats"); - GLAD_GL_NV_instanced_arrays = has_ext("GL_NV_instanced_arrays"); - GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); - GLAD_GL_NV_memory_attachment = has_ext("GL_NV_memory_attachment"); - GLAD_GL_NV_memory_object_sparse = has_ext("GL_NV_memory_object_sparse"); - GLAD_GL_NV_mesh_shader = has_ext("GL_NV_mesh_shader"); - GLAD_GL_NV_non_square_matrices = has_ext("GL_NV_non_square_matrices"); - GLAD_GL_NV_pack_subimage = has_ext("GL_NV_pack_subimage"); - GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); - GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); - GLAD_GL_NV_pixel_buffer_object = has_ext("GL_NV_pixel_buffer_object"); - GLAD_GL_NV_polygon_mode = has_ext("GL_NV_polygon_mode"); - GLAD_GL_NV_primitive_shading_rate = has_ext("GL_NV_primitive_shading_rate"); - GLAD_GL_NV_read_buffer = has_ext("GL_NV_read_buffer"); - GLAD_GL_NV_read_buffer_front = has_ext("GL_NV_read_buffer_front"); - GLAD_GL_NV_read_depth = has_ext("GL_NV_read_depth"); - GLAD_GL_NV_read_depth_stencil = has_ext("GL_NV_read_depth_stencil"); - GLAD_GL_NV_read_stencil = has_ext("GL_NV_read_stencil"); - GLAD_GL_NV_representative_fragment_test = has_ext("GL_NV_representative_fragment_test"); - GLAD_GL_NV_sRGB_formats = has_ext("GL_NV_sRGB_formats"); - GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); - GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); - GLAD_GL_NV_scissor_exclusive = has_ext("GL_NV_scissor_exclusive"); - GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); - GLAD_GL_NV_shader_noperspective_interpolation = has_ext("GL_NV_shader_noperspective_interpolation"); - GLAD_GL_NV_shader_subgroup_partitioned = has_ext("GL_NV_shader_subgroup_partitioned"); - GLAD_GL_NV_shader_texture_footprint = has_ext("GL_NV_shader_texture_footprint"); - GLAD_GL_NV_shading_rate_image = has_ext("GL_NV_shading_rate_image"); - GLAD_GL_NV_shadow_samplers_array = has_ext("GL_NV_shadow_samplers_array"); - GLAD_GL_NV_shadow_samplers_cube = has_ext("GL_NV_shadow_samplers_cube"); - GLAD_GL_NV_stereo_view_rendering = has_ext("GL_NV_stereo_view_rendering"); - GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); - GLAD_GL_NV_texture_border_clamp = has_ext("GL_NV_texture_border_clamp"); - GLAD_GL_NV_texture_compression_s3tc_update = has_ext("GL_NV_texture_compression_s3tc_update"); - GLAD_GL_NV_texture_npot_2D_mipmap = has_ext("GL_NV_texture_npot_2D_mipmap"); - GLAD_GL_NV_timeline_semaphore = has_ext("GL_NV_timeline_semaphore"); - GLAD_GL_NV_viewport_array = has_ext("GL_NV_viewport_array"); - GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); - GLAD_GL_NV_viewport_swizzle = has_ext("GL_NV_viewport_swizzle"); - GLAD_GL_OES_EGL_image = has_ext("GL_OES_EGL_image"); - GLAD_GL_OES_EGL_image_external = has_ext("GL_OES_EGL_image_external"); - GLAD_GL_OES_EGL_image_external_essl3 = has_ext("GL_OES_EGL_image_external_essl3"); - GLAD_GL_OES_compressed_ETC1_RGB8_sub_texture = has_ext("GL_OES_compressed_ETC1_RGB8_sub_texture"); - GLAD_GL_OES_compressed_ETC1_RGB8_texture = has_ext("GL_OES_compressed_ETC1_RGB8_texture"); - GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); - GLAD_GL_OES_copy_image = has_ext("GL_OES_copy_image"); - GLAD_GL_OES_depth24 = has_ext("GL_OES_depth24"); - GLAD_GL_OES_depth32 = has_ext("GL_OES_depth32"); - GLAD_GL_OES_depth_texture = has_ext("GL_OES_depth_texture"); - GLAD_GL_OES_draw_buffers_indexed = has_ext("GL_OES_draw_buffers_indexed"); - GLAD_GL_OES_draw_elements_base_vertex = has_ext("GL_OES_draw_elements_base_vertex"); - GLAD_GL_OES_element_index_uint = has_ext("GL_OES_element_index_uint"); - GLAD_GL_OES_fbo_render_mipmap = has_ext("GL_OES_fbo_render_mipmap"); - GLAD_GL_OES_fragment_precision_high = has_ext("GL_OES_fragment_precision_high"); - GLAD_GL_OES_geometry_point_size = has_ext("GL_OES_geometry_point_size"); - GLAD_GL_OES_geometry_shader = has_ext("GL_OES_geometry_shader"); - GLAD_GL_OES_get_program_binary = has_ext("GL_OES_get_program_binary"); - GLAD_GL_OES_gpu_shader5 = has_ext("GL_OES_gpu_shader5"); - GLAD_GL_OES_mapbuffer = has_ext("GL_OES_mapbuffer"); - GLAD_GL_OES_packed_depth_stencil = has_ext("GL_OES_packed_depth_stencil"); - GLAD_GL_OES_primitive_bounding_box = has_ext("GL_OES_primitive_bounding_box"); - GLAD_GL_OES_required_internalformat = has_ext("GL_OES_required_internalformat"); - GLAD_GL_OES_rgb8_rgba8 = has_ext("GL_OES_rgb8_rgba8"); - GLAD_GL_OES_sample_shading = has_ext("GL_OES_sample_shading"); - GLAD_GL_OES_sample_variables = has_ext("GL_OES_sample_variables"); - GLAD_GL_OES_shader_image_atomic = has_ext("GL_OES_shader_image_atomic"); - GLAD_GL_OES_shader_io_blocks = has_ext("GL_OES_shader_io_blocks"); - GLAD_GL_OES_shader_multisample_interpolation = has_ext("GL_OES_shader_multisample_interpolation"); - GLAD_GL_OES_standard_derivatives = has_ext("GL_OES_standard_derivatives"); - GLAD_GL_OES_stencil1 = has_ext("GL_OES_stencil1"); - GLAD_GL_OES_stencil4 = has_ext("GL_OES_stencil4"); - GLAD_GL_OES_surfaceless_context = has_ext("GL_OES_surfaceless_context"); - GLAD_GL_OES_tessellation_point_size = has_ext("GL_OES_tessellation_point_size"); - GLAD_GL_OES_tessellation_shader = has_ext("GL_OES_tessellation_shader"); - GLAD_GL_OES_texture_3D = has_ext("GL_OES_texture_3D"); - GLAD_GL_OES_texture_border_clamp = has_ext("GL_OES_texture_border_clamp"); - GLAD_GL_OES_texture_buffer = has_ext("GL_OES_texture_buffer"); - GLAD_GL_OES_texture_compression_astc = has_ext("GL_OES_texture_compression_astc"); - GLAD_GL_OES_texture_cube_map_array = has_ext("GL_OES_texture_cube_map_array"); - GLAD_GL_OES_texture_float = has_ext("GL_OES_texture_float"); - GLAD_GL_OES_texture_float_linear = has_ext("GL_OES_texture_float_linear"); - GLAD_GL_OES_texture_half_float = has_ext("GL_OES_texture_half_float"); - GLAD_GL_OES_texture_half_float_linear = has_ext("GL_OES_texture_half_float_linear"); - GLAD_GL_OES_texture_npot = has_ext("GL_OES_texture_npot"); - GLAD_GL_OES_texture_stencil8 = has_ext("GL_OES_texture_stencil8"); - GLAD_GL_OES_texture_storage_multisample_2d_array = has_ext("GL_OES_texture_storage_multisample_2d_array"); - GLAD_GL_OES_texture_view = has_ext("GL_OES_texture_view"); - GLAD_GL_OES_vertex_array_object = has_ext("GL_OES_vertex_array_object"); - GLAD_GL_OES_vertex_half_float = has_ext("GL_OES_vertex_half_float"); - GLAD_GL_OES_vertex_type_10_10_10_2 = has_ext("GL_OES_vertex_type_10_10_10_2"); - GLAD_GL_OES_viewport_array = has_ext("GL_OES_viewport_array"); - GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); - GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); - GLAD_GL_OVR_multiview_multisampled_render_to_texture = has_ext("GL_OVR_multiview_multisampled_render_to_texture"); - GLAD_GL_QCOM_YUV_texture_gather = has_ext("GL_QCOM_YUV_texture_gather"); - GLAD_GL_QCOM_alpha_test = has_ext("GL_QCOM_alpha_test"); - GLAD_GL_QCOM_binning_control = has_ext("GL_QCOM_binning_control"); - GLAD_GL_QCOM_driver_control = has_ext("GL_QCOM_driver_control"); - GLAD_GL_QCOM_extended_get = has_ext("GL_QCOM_extended_get"); - GLAD_GL_QCOM_extended_get2 = has_ext("GL_QCOM_extended_get2"); - GLAD_GL_QCOM_frame_extrapolation = has_ext("GL_QCOM_frame_extrapolation"); - GLAD_GL_QCOM_framebuffer_foveated = has_ext("GL_QCOM_framebuffer_foveated"); - GLAD_GL_QCOM_motion_estimation = has_ext("GL_QCOM_motion_estimation"); - GLAD_GL_QCOM_perfmon_global_mode = has_ext("GL_QCOM_perfmon_global_mode"); - GLAD_GL_QCOM_render_sRGB_R8_RG8 = has_ext("GL_QCOM_render_sRGB_R8_RG8"); - GLAD_GL_QCOM_render_shared_exponent = has_ext("GL_QCOM_render_shared_exponent"); - GLAD_GL_QCOM_shader_framebuffer_fetch_noncoherent = has_ext("GL_QCOM_shader_framebuffer_fetch_noncoherent"); - GLAD_GL_QCOM_shader_framebuffer_fetch_rate = has_ext("GL_QCOM_shader_framebuffer_fetch_rate"); - GLAD_GL_QCOM_shading_rate = has_ext("GL_QCOM_shading_rate"); - GLAD_GL_QCOM_texture_foveated = has_ext("GL_QCOM_texture_foveated"); - GLAD_GL_QCOM_texture_foveated2 = has_ext("GL_QCOM_texture_foveated2"); - GLAD_GL_QCOM_texture_foveated_subsampled_layout = has_ext("GL_QCOM_texture_foveated_subsampled_layout"); - GLAD_GL_QCOM_texture_lod_bias = has_ext("GL_QCOM_texture_lod_bias"); - GLAD_GL_QCOM_tiled_rendering = has_ext("GL_QCOM_tiled_rendering"); - GLAD_GL_QCOM_writeonly_rendering = has_ext("GL_QCOM_writeonly_rendering"); - GLAD_GL_QCOM_ycbcr_degamma = has_ext("GL_QCOM_ycbcr_degamma"); - GLAD_GL_VIV_shader_binary = has_ext("GL_VIV_shader_binary"); - free_exts(); - return 1; -} - -static void find_coreGLES2(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_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; - GLAD_GL_ES_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; - GLAD_GL_ES_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; - GLAD_GL_ES_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; - if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 2)) { - max_loaded_major = 3; - max_loaded_minor = 2; - } -} - -int gladLoadGLES2Loader(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_coreGLES2(); - load_GL_ES_VERSION_2_0(load); - load_GL_ES_VERSION_3_0(load); - load_GL_ES_VERSION_3_1(load); - load_GL_ES_VERSION_3_2(load); - - if (!find_extensionsGLES2()) return 0; - load_GL_AMD_framebuffer_multisample_advanced(load); - load_GL_AMD_performance_monitor(load); - load_GL_ANGLE_framebuffer_blit(load); - load_GL_ANGLE_framebuffer_multisample(load); - load_GL_ANGLE_instanced_arrays(load); - load_GL_ANGLE_translated_shader_source(load); - load_GL_APPLE_copy_texture_levels(load); - load_GL_APPLE_framebuffer_multisample(load); - load_GL_APPLE_sync(load); - load_GL_ARM_shader_core_properties(load); - load_GL_EXT_EGL_image_storage(load); - load_GL_EXT_base_instance(load); - load_GL_EXT_blend_func_extended(load); - load_GL_EXT_blend_minmax(load); - load_GL_EXT_buffer_storage(load); - load_GL_EXT_clear_texture(load); - load_GL_EXT_clip_control(load); - load_GL_EXT_copy_image(load); - load_GL_EXT_debug_label(load); - load_GL_EXT_debug_marker(load); - load_GL_EXT_discard_framebuffer(load); - load_GL_EXT_disjoint_timer_query(load); - load_GL_EXT_draw_buffers(load); - load_GL_EXT_draw_buffers_indexed(load); - load_GL_EXT_draw_elements_base_vertex(load); - load_GL_EXT_draw_instanced(load); - load_GL_EXT_draw_transform_feedback(load); - load_GL_EXT_external_buffer(load); - load_GL_EXT_fragment_shading_rate(load); - load_GL_EXT_framebuffer_blit_layers(load); - load_GL_EXT_geometry_shader(load); - load_GL_EXT_instanced_arrays(load); - load_GL_EXT_map_buffer_range(load); - load_GL_EXT_memory_object(load); - load_GL_EXT_memory_object_fd(load); - load_GL_EXT_memory_object_win32(load); - load_GL_EXT_mesh_shader(load); - load_GL_EXT_multi_draw_arrays(load); - load_GL_EXT_multi_draw_indirect(load); - load_GL_EXT_multisampled_render_to_texture(load); - load_GL_EXT_multiview_draw_buffers(load); - load_GL_EXT_occlusion_query_boolean(load); - load_GL_EXT_polygon_offset_clamp(load); - load_GL_EXT_primitive_bounding_box(load); - load_GL_EXT_raster_multisample(load); - load_GL_EXT_robustness(load); - load_GL_EXT_semaphore(load); - load_GL_EXT_semaphore_fd(load); - load_GL_EXT_semaphore_win32(load); - load_GL_EXT_separate_shader_objects(load); - load_GL_EXT_shader_framebuffer_fetch_non_coherent(load); - load_GL_EXT_shader_pixel_local_storage2(load); - load_GL_EXT_sparse_texture(load); - load_GL_EXT_tessellation_shader(load); - load_GL_EXT_texture_border_clamp(load); - load_GL_EXT_texture_buffer(load); - load_GL_EXT_texture_storage(load); - load_GL_EXT_texture_storage_compression(load); - load_GL_EXT_texture_view(load); - load_GL_EXT_win32_keyed_mutex(load); - load_GL_EXT_window_rectangles(load); - load_GL_IMG_bindless_texture(load); - load_GL_IMG_framebuffer_downsample(load); - load_GL_IMG_multisampled_render_to_texture(load); - load_GL_INTEL_framebuffer_CMAA(load); - load_GL_INTEL_performance_query(load); - load_GL_KHR_blend_equation_advanced(load); - load_GL_KHR_debug(load); - load_GL_KHR_parallel_shader_compile(load); - load_GL_KHR_robustness(load); - load_GL_MESA_framebuffer_flip_y(load); - load_GL_MESA_sampler_objects(load); - load_GL_NV_bindless_texture(load); - load_GL_NV_blend_equation_advanced(load); - load_GL_NV_clip_space_w_scaling(load); - load_GL_NV_conditional_render(load); - load_GL_NV_conservative_raster(load); - load_GL_NV_conservative_raster_pre_snap_triangles(load); - load_GL_NV_copy_buffer(load); - load_GL_NV_coverage_sample(load); - load_GL_NV_draw_buffers(load); - load_GL_NV_draw_instanced(load); - load_GL_NV_draw_vulkan_image(load); - load_GL_NV_fence(load); - load_GL_NV_fragment_coverage_to_color(load); - load_GL_NV_framebuffer_blit(load); - load_GL_NV_framebuffer_mixed_samples(load); - load_GL_NV_framebuffer_multisample(load); - load_GL_NV_gpu_shader5(load); - load_GL_NV_instanced_arrays(load); - load_GL_NV_internalformat_sample_query(load); - load_GL_NV_memory_attachment(load); - load_GL_NV_memory_object_sparse(load); - load_GL_NV_mesh_shader(load); - load_GL_NV_non_square_matrices(load); - load_GL_NV_path_rendering(load); - load_GL_NV_polygon_mode(load); - load_GL_NV_read_buffer(load); - load_GL_NV_sample_locations(load); - load_GL_NV_scissor_exclusive(load); - load_GL_NV_shading_rate_image(load); - load_GL_NV_texture_barrier(load); - load_GL_NV_timeline_semaphore(load); - load_GL_NV_viewport_array(load); - load_GL_NV_viewport_swizzle(load); - load_GL_OES_EGL_image(load); - load_GL_OES_EGL_image_external(load); - load_GL_OES_copy_image(load); - load_GL_OES_draw_buffers_indexed(load); - load_GL_OES_draw_elements_base_vertex(load); - load_GL_OES_geometry_shader(load); - load_GL_OES_get_program_binary(load); - load_GL_OES_mapbuffer(load); - load_GL_OES_primitive_bounding_box(load); - load_GL_OES_sample_shading(load); - load_GL_OES_tessellation_shader(load); - load_GL_OES_texture_3D(load); - load_GL_OES_texture_border_clamp(load); - load_GL_OES_texture_buffer(load); - load_GL_OES_texture_storage_multisample_2d_array(load); - load_GL_OES_texture_view(load); - load_GL_OES_vertex_array_object(load); - load_GL_OES_viewport_array(load); - load_GL_OVR_multiview(load); - load_GL_OVR_multiview_multisampled_render_to_texture(load); - load_GL_QCOM_alpha_test(load); - load_GL_QCOM_driver_control(load); - load_GL_QCOM_extended_get(load); - load_GL_QCOM_extended_get2(load); - load_GL_QCOM_frame_extrapolation(load); - load_GL_QCOM_framebuffer_foveated(load); - load_GL_QCOM_motion_estimation(load); - load_GL_QCOM_shader_framebuffer_fetch_noncoherent(load); - load_GL_QCOM_shading_rate(load); - load_GL_QCOM_texture_foveated(load); - load_GL_QCOM_tiled_rendering(load); - return GLVersion.major != 0 || GLVersion.minor != 0; -} -