From 33a3d3bc87949385a185754a6eb8a8fa41fbb6d2 Mon Sep 17 00:00:00 2001 From: David G Yu Date: Wed, 3 Feb 2021 10:17:36 -0800 Subject: [PATCH] Merged GL Api Loader fixes from USD Merged recent bug fixes from the USD implementation of the GL Api Loader. This fixes the OpenGL system framework path on macOS and also improves GL version and GL extension processing. --- glLoader/glApi.cpp | 1023 +++++++++++++++++++++++--------------------- 1 file changed, 527 insertions(+), 496 deletions(-) diff --git a/glLoader/glApi.cpp b/glLoader/glApi.cpp index 86f5b4ce..87d89784 100644 --- a/glLoader/glApi.cpp +++ b/glLoader/glApi.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef _WIN32 #define GLAPIENTRY __stdcall @@ -3138,7 +3139,7 @@ static bool loadLibrary() #ifdef _WIN32 libGL = LoadLibraryW(L"opengl32.dll"); #elif __APPLE__ - libGL = dlopen("/System/Library/Frameworks/Versions/Current/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL); + libGL = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY | RTLD_LOCAL); #else libGL = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL); #endif @@ -3188,10 +3189,11 @@ static void* loadFunction(const char *name) return result; } -static bool hasExt(const char * ext, int n, const char ** exts) +static bool hasExt(const char * ext, + const std::vector & extensions) { - for (int i=0; i 0) { - exts = (const char **)malloc(numexts * sizeof(const char *)); - for (int i=0; i extensions; + std::vector extensionsBuffer; // used when parsing extensions string + + // direct extension query is supported only for versions 3.x and greater + if (major >= 3) { + GLint numExtensions = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions); + extensions.resize(numExtensions); + for (size_t i=0; i 0) { + const char * extStr = (const char *) glGetString(GL_EXTENSIONS); + const size_t extStrLen = strlen(extStr); + + // make a copy so that we can terminate substrings + extensionsBuffer.assign(extStr, extStr+extStrLen+1); + + // identify and terminate substrings + bool inSubstring = false; + for (size_t i=0; i= 0) || major > 1; GLAPILOADER_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; GLAPILOADER_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; @@ -3238,486 +3272,486 @@ static bool loadSymbols() GLAPILOADER_GL_VERSION_4_5 = (major == 4 && minor >= 5) || major > 4; GLAPILOADER_GL_VERSION_4_6 = (major == 4 && minor >= 6) || major > 4; - GLAPILOADER_GL_AMD_blend_minmax_factor = hasExt("GL_AMD_blend_minmax_factor", numexts, exts); - GLAPILOADER_GL_AMD_conservative_depth = hasExt("GL_AMD_conservative_depth", numexts, exts); - GLAPILOADER_GL_AMD_debug_output = hasExt("GL_AMD_debug_output", numexts, exts); - GLAPILOADER_GL_AMD_depth_clamp_separate = hasExt("GL_AMD_depth_clamp_separate", numexts, exts); - GLAPILOADER_GL_AMD_draw_buffers_blend = hasExt("GL_AMD_draw_buffers_blend", numexts, exts); - GLAPILOADER_GL_AMD_framebuffer_multisample_advanced = hasExt("GL_AMD_framebuffer_multisample_advanced", numexts, exts); - GLAPILOADER_GL_AMD_framebuffer_sample_positions = hasExt("GL_AMD_framebuffer_sample_positions", numexts, exts); - GLAPILOADER_GL_AMD_gcn_shader = hasExt("GL_AMD_gcn_shader", numexts, exts); - GLAPILOADER_GL_AMD_gpu_shader_half_float = hasExt("GL_AMD_gpu_shader_half_float", numexts, exts); - GLAPILOADER_GL_AMD_gpu_shader_int16 = hasExt("GL_AMD_gpu_shader_int16", numexts, exts); - GLAPILOADER_GL_AMD_gpu_shader_int64 = hasExt("GL_AMD_gpu_shader_int64", numexts, exts); - GLAPILOADER_GL_AMD_interleaved_elements = hasExt("GL_AMD_interleaved_elements", numexts, exts); - GLAPILOADER_GL_AMD_multi_draw_indirect = hasExt("GL_AMD_multi_draw_indirect", numexts, exts); - GLAPILOADER_GL_AMD_name_gen_delete = hasExt("GL_AMD_name_gen_delete", numexts, exts); - GLAPILOADER_GL_AMD_occlusion_query_event = hasExt("GL_AMD_occlusion_query_event", numexts, exts); - GLAPILOADER_GL_AMD_performance_monitor = hasExt("GL_AMD_performance_monitor", numexts, exts); - GLAPILOADER_GL_AMD_pinned_memory = hasExt("GL_AMD_pinned_memory", numexts, exts); - GLAPILOADER_GL_AMD_query_buffer_object = hasExt("GL_AMD_query_buffer_object", numexts, exts); - GLAPILOADER_GL_AMD_sample_positions = hasExt("GL_AMD_sample_positions", numexts, exts); - GLAPILOADER_GL_AMD_seamless_cubemap_per_texture = hasExt("GL_AMD_seamless_cubemap_per_texture", numexts, exts); - GLAPILOADER_GL_AMD_shader_atomic_counter_ops = hasExt("GL_AMD_shader_atomic_counter_ops", numexts, exts); - GLAPILOADER_GL_AMD_shader_ballot = hasExt("GL_AMD_shader_ballot", numexts, exts); - GLAPILOADER_GL_AMD_shader_gpu_shader_half_float_fetch = hasExt("GL_AMD_shader_gpu_shader_half_float_fetch", numexts, exts); - GLAPILOADER_GL_AMD_shader_image_load_store_lod = hasExt("GL_AMD_shader_image_load_store_lod", numexts, exts); - GLAPILOADER_GL_AMD_shader_stencil_export = hasExt("GL_AMD_shader_stencil_export", numexts, exts); - GLAPILOADER_GL_AMD_shader_trinary_minmax = hasExt("GL_AMD_shader_trinary_minmax", numexts, exts); - GLAPILOADER_GL_AMD_shader_explicit_vertex_parameter = hasExt("GL_AMD_shader_explicit_vertex_parameter", numexts, exts); - GLAPILOADER_GL_AMD_sparse_texture = hasExt("GL_AMD_sparse_texture", numexts, exts); - GLAPILOADER_GL_AMD_stencil_operation_extended = hasExt("GL_AMD_stencil_operation_extended", numexts, exts); - GLAPILOADER_GL_AMD_texture_gather_bias_lod = hasExt("GL_AMD_texture_gather_bias_lod", numexts, exts); - GLAPILOADER_GL_AMD_texture_texture4 = hasExt("GL_AMD_texture_texture4", numexts, exts); - GLAPILOADER_GL_AMD_transform_feedback3_lines_triangles = hasExt("GL_AMD_transform_feedback3_lines_triangles", numexts, exts); - GLAPILOADER_GL_AMD_transform_feedback4 = hasExt("GL_AMD_transform_feedback4", numexts, exts); - GLAPILOADER_GL_AMD_vertex_shader_layer = hasExt("GL_AMD_vertex_shader_layer", numexts, exts); - GLAPILOADER_GL_AMD_vertex_shader_tessellator = hasExt("GL_AMD_vertex_shader_tessellator", numexts, exts); - GLAPILOADER_GL_AMD_vertex_shader_viewport_index = hasExt("GL_AMD_vertex_shader_viewport_index", numexts, exts); - GLAPILOADER_GL_APPLE_aux_depth_stencil = hasExt("GL_APPLE_aux_depth_stencil", numexts, exts); - GLAPILOADER_GL_APPLE_client_storage = hasExt("GL_APPLE_client_storage", numexts, exts); - GLAPILOADER_GL_APPLE_element_array = hasExt("GL_APPLE_element_array", numexts, exts); - GLAPILOADER_GL_APPLE_fence = hasExt("GL_APPLE_fence", numexts, exts); - GLAPILOADER_GL_APPLE_float_pixels = hasExt("GL_APPLE_float_pixels", numexts, exts); - GLAPILOADER_GL_APPLE_flush_buffer_range = hasExt("GL_APPLE_flush_buffer_range", numexts, exts); - GLAPILOADER_GL_APPLE_object_purgeable = hasExt("GL_APPLE_object_purgeable", numexts, exts); - GLAPILOADER_GL_APPLE_rgb_422 = hasExt("GL_APPLE_rgb_422", numexts, exts); - GLAPILOADER_GL_APPLE_row_bytes = hasExt("GL_APPLE_row_bytes", numexts, exts); - GLAPILOADER_GL_APPLE_specular_vector = hasExt("GL_APPLE_specular_vector", numexts, exts); - GLAPILOADER_GL_APPLE_texture_range = hasExt("GL_APPLE_texture_range", numexts, exts); - GLAPILOADER_GL_APPLE_transform_hint = hasExt("GL_APPLE_transform_hint", numexts, exts); - GLAPILOADER_GL_APPLE_vertex_array_object = hasExt("GL_APPLE_vertex_array_object", numexts, exts); - GLAPILOADER_GL_APPLE_vertex_array_range = hasExt("GL_APPLE_vertex_array_range", numexts, exts); - GLAPILOADER_GL_APPLE_vertex_program_evaluators = hasExt("GL_APPLE_vertex_program_evaluators", numexts, exts); - GLAPILOADER_GL_APPLE_ycbcr_422 = hasExt("GL_APPLE_ycbcr_422", numexts, exts); - GLAPILOADER_GL_ARB_ES2_compatibility = hasExt("GL_ARB_ES2_compatibility", numexts, exts); - GLAPILOADER_GL_ARB_ES3_1_compatibility = hasExt("GL_ARB_ES3_1_compatibility", numexts, exts); - GLAPILOADER_GL_ARB_ES3_2_compatibility = hasExt("GL_ARB_ES3_2_compatibility", numexts, exts); - GLAPILOADER_GL_ARB_ES3_compatibility = hasExt("GL_ARB_ES3_compatibility", numexts, exts); - GLAPILOADER_GL_ARB_arrays_of_arrays = hasExt("GL_ARB_arrays_of_arrays", numexts, exts); - GLAPILOADER_GL_ARB_base_instance = hasExt("GL_ARB_base_instance", numexts, exts); - GLAPILOADER_GL_ARB_bindless_texture = hasExt("GL_ARB_bindless_texture", numexts, exts); - GLAPILOADER_GL_ARB_blend_func_extended = hasExt("GL_ARB_blend_func_extended", numexts, exts); - GLAPILOADER_GL_ARB_buffer_storage = hasExt("GL_ARB_buffer_storage", numexts, exts); - GLAPILOADER_GL_ARB_cl_event = hasExt("GL_ARB_cl_event", numexts, exts); - GLAPILOADER_GL_ARB_clear_buffer_object = hasExt("GL_ARB_clear_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_clear_texture = hasExt("GL_ARB_clear_texture", numexts, exts); - GLAPILOADER_GL_ARB_clip_control = hasExt("GL_ARB_clip_control", numexts, exts); - GLAPILOADER_GL_ARB_color_buffer_float = hasExt("GL_ARB_color_buffer_float", numexts, exts); - GLAPILOADER_GL_ARB_compatibility = hasExt("GL_ARB_compatibility", numexts, exts); - GLAPILOADER_GL_ARB_compressed_texture_pixel_storage = hasExt("GL_ARB_compressed_texture_pixel_storage", numexts, exts); - GLAPILOADER_GL_ARB_compute_shader = hasExt("GL_ARB_compute_shader", numexts, exts); - GLAPILOADER_GL_ARB_compute_variable_group_size = hasExt("GL_ARB_compute_variable_group_size", numexts, exts); - GLAPILOADER_GL_ARB_conditional_render_inverted = hasExt("GL_ARB_conditional_render_inverted", numexts, exts); - GLAPILOADER_GL_ARB_conservative_depth = hasExt("GL_ARB_conservative_depth", numexts, exts); - GLAPILOADER_GL_ARB_copy_buffer = hasExt("GL_ARB_copy_buffer", numexts, exts); - GLAPILOADER_GL_ARB_copy_image = hasExt("GL_ARB_copy_image", numexts, exts); - GLAPILOADER_GL_ARB_cull_distance = hasExt("GL_ARB_cull_distance", numexts, exts); - GLAPILOADER_GL_ARB_debug_output = hasExt("GL_ARB_debug_output", numexts, exts); - GLAPILOADER_GL_ARB_depth_buffer_float = hasExt("GL_ARB_depth_buffer_float", numexts, exts); - GLAPILOADER_GL_ARB_depth_clamp = hasExt("GL_ARB_depth_clamp", numexts, exts); - GLAPILOADER_GL_ARB_depth_texture = hasExt("GL_ARB_depth_texture", numexts, exts); - GLAPILOADER_GL_ARB_derivative_control = hasExt("GL_ARB_derivative_control", numexts, exts); - GLAPILOADER_GL_ARB_direct_state_access = hasExt("GL_ARB_direct_state_access", numexts, exts); - GLAPILOADER_GL_ARB_draw_buffers = hasExt("GL_ARB_draw_buffers", numexts, exts); - GLAPILOADER_GL_ARB_draw_buffers_blend = hasExt("GL_ARB_draw_buffers_blend", numexts, exts); - GLAPILOADER_GL_ARB_draw_elements_base_vertex = hasExt("GL_ARB_draw_elements_base_vertex", numexts, exts); - GLAPILOADER_GL_ARB_draw_indirect = hasExt("GL_ARB_draw_indirect", numexts, exts); - GLAPILOADER_GL_ARB_draw_instanced = hasExt("GL_ARB_draw_instanced", numexts, exts); - GLAPILOADER_GL_ARB_enhanced_layouts = hasExt("GL_ARB_enhanced_layouts", numexts, exts); - GLAPILOADER_GL_ARB_explicit_attrib_location = hasExt("GL_ARB_explicit_attrib_location", numexts, exts); - GLAPILOADER_GL_ARB_explicit_uniform_location = hasExt("GL_ARB_explicit_uniform_location", numexts, exts); - GLAPILOADER_GL_ARB_fragment_coord_conventions = hasExt("GL_ARB_fragment_coord_conventions", numexts, exts); - GLAPILOADER_GL_ARB_fragment_layer_viewport = hasExt("GL_ARB_fragment_layer_viewport", numexts, exts); - GLAPILOADER_GL_ARB_fragment_program = hasExt("GL_ARB_fragment_program", numexts, exts); - GLAPILOADER_GL_ARB_fragment_program_shadow = hasExt("GL_ARB_fragment_program_shadow", numexts, exts); - GLAPILOADER_GL_ARB_fragment_shader = hasExt("GL_ARB_fragment_shader", numexts, exts); - GLAPILOADER_GL_ARB_fragment_shader_interlock = hasExt("GL_ARB_fragment_shader_interlock", numexts, exts); - GLAPILOADER_GL_ARB_framebuffer_no_attachments = hasExt("GL_ARB_framebuffer_no_attachments", numexts, exts); - GLAPILOADER_GL_ARB_framebuffer_object = hasExt("GL_ARB_framebuffer_object", numexts, exts); - GLAPILOADER_GL_ARB_framebuffer_sRGB = hasExt("GL_ARB_framebuffer_sRGB", numexts, exts); - GLAPILOADER_GL_ARB_geometry_shader4 = hasExt("GL_ARB_geometry_shader4", numexts, exts); - GLAPILOADER_GL_ARB_get_program_binary = hasExt("GL_ARB_get_program_binary", numexts, exts); - GLAPILOADER_GL_ARB_get_texture_sub_image = hasExt("GL_ARB_get_texture_sub_image", numexts, exts); - GLAPILOADER_GL_ARB_gl_spirv = hasExt("GL_ARB_gl_spirv", numexts, exts); - GLAPILOADER_GL_ARB_gpu_shader5 = hasExt("GL_ARB_gpu_shader5", numexts, exts); - GLAPILOADER_GL_ARB_gpu_shader_fp64 = hasExt("GL_ARB_gpu_shader_fp64", numexts, exts); - GLAPILOADER_GL_ARB_gpu_shader_int64 = hasExt("GL_ARB_gpu_shader_int64", numexts, exts); - GLAPILOADER_GL_ARB_half_float_pixel = hasExt("GL_ARB_half_float_pixel", numexts, exts); - GLAPILOADER_GL_ARB_half_float_vertex = hasExt("GL_ARB_half_float_vertex", numexts, exts); - GLAPILOADER_GL_ARB_imaging = hasExt("GL_ARB_imaging", numexts, exts); - GLAPILOADER_GL_ARB_indirect_parameters = hasExt("GL_ARB_indirect_parameters", numexts, exts); - GLAPILOADER_GL_ARB_instanced_arrays = hasExt("GL_ARB_instanced_arrays", numexts, exts); - GLAPILOADER_GL_ARB_internalformat_query = hasExt("GL_ARB_internalformat_query", numexts, exts); - GLAPILOADER_GL_ARB_internalformat_query2 = hasExt("GL_ARB_internalformat_query2", numexts, exts); - GLAPILOADER_GL_ARB_invalidate_subdata = hasExt("GL_ARB_invalidate_subdata", numexts, exts); - GLAPILOADER_GL_ARB_map_buffer_alignment = hasExt("GL_ARB_map_buffer_alignment", numexts, exts); - GLAPILOADER_GL_ARB_map_buffer_range = hasExt("GL_ARB_map_buffer_range", numexts, exts); - GLAPILOADER_GL_ARB_matrix_palette = hasExt("GL_ARB_matrix_palette", numexts, exts); - GLAPILOADER_GL_ARB_multi_bind = hasExt("GL_ARB_multi_bind", numexts, exts); - GLAPILOADER_GL_ARB_multi_draw_indirect = hasExt("GL_ARB_multi_draw_indirect", numexts, exts); - GLAPILOADER_GL_ARB_multisample = hasExt("GL_ARB_multisample", numexts, exts); - GLAPILOADER_GL_ARB_multitexture = hasExt("GL_ARB_multitexture", numexts, exts); - GLAPILOADER_GL_ARB_occlusion_query = hasExt("GL_ARB_occlusion_query", numexts, exts); - GLAPILOADER_GL_ARB_occlusion_query2 = hasExt("GL_ARB_occlusion_query2", numexts, exts); - GLAPILOADER_GL_ARB_parallel_shader_compile = hasExt("GL_ARB_parallel_shader_compile", numexts, exts); - GLAPILOADER_GL_ARB_pipeline_statistics_query = hasExt("GL_ARB_pipeline_statistics_query", numexts, exts); - GLAPILOADER_GL_ARB_pixel_buffer_object = hasExt("GL_ARB_pixel_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_point_parameters = hasExt("GL_ARB_point_parameters", numexts, exts); - GLAPILOADER_GL_ARB_point_sprite = hasExt("GL_ARB_point_sprite", numexts, exts); - GLAPILOADER_GL_ARB_polygon_offset_clamp = hasExt("GL_ARB_polygon_offset_clamp", numexts, exts); - GLAPILOADER_GL_ARB_post_depth_coverage = hasExt("GL_ARB_post_depth_coverage", numexts, exts); - GLAPILOADER_GL_ARB_program_interface_query = hasExt("GL_ARB_program_interface_query", numexts, exts); - GLAPILOADER_GL_ARB_provoking_vertex = hasExt("GL_ARB_provoking_vertex", numexts, exts); - GLAPILOADER_GL_ARB_query_buffer_object = hasExt("GL_ARB_query_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_robust_buffer_access_behavior = hasExt("GL_ARB_robust_buffer_access_behavior", numexts, exts); - GLAPILOADER_GL_ARB_robustness = hasExt("GL_ARB_robustness", numexts, exts); - GLAPILOADER_GL_ARB_robustness_isolation = hasExt("GL_ARB_robustness_isolation", numexts, exts); - GLAPILOADER_GL_ARB_sample_locations = hasExt("GL_ARB_sample_locations", numexts, exts); - GLAPILOADER_GL_ARB_sample_shading = hasExt("GL_ARB_sample_shading", numexts, exts); - GLAPILOADER_GL_ARB_sampler_objects = hasExt("GL_ARB_sampler_objects", numexts, exts); - GLAPILOADER_GL_ARB_seamless_cube_map = hasExt("GL_ARB_seamless_cube_map", numexts, exts); - GLAPILOADER_GL_ARB_seamless_cubemap_per_texture = hasExt("GL_ARB_seamless_cubemap_per_texture", numexts, exts); - GLAPILOADER_GL_ARB_separate_shader_objects = hasExt("GL_ARB_separate_shader_objects", numexts, exts); - GLAPILOADER_GL_ARB_shader_atomic_counter_ops = hasExt("GL_ARB_shader_atomic_counter_ops", numexts, exts); - GLAPILOADER_GL_ARB_shader_atomic_counters = hasExt("GL_ARB_shader_atomic_counters", numexts, exts); - GLAPILOADER_GL_ARB_shader_ballot = hasExt("GL_ARB_shader_ballot", numexts, exts); - GLAPILOADER_GL_ARB_shader_bit_encoding = hasExt("GL_ARB_shader_bit_encoding", numexts, exts); - GLAPILOADER_GL_ARB_shader_clock = hasExt("GL_ARB_shader_clock", numexts, exts); - GLAPILOADER_GL_ARB_shader_draw_parameters = hasExt("GL_ARB_shader_draw_parameters", numexts, exts); - GLAPILOADER_GL_ARB_shader_group_vote = hasExt("GL_ARB_shader_group_vote", numexts, exts); - GLAPILOADER_GL_ARB_shader_image_load_store = hasExt("GL_ARB_shader_image_load_store", numexts, exts); - GLAPILOADER_GL_ARB_shader_image_size = hasExt("GL_ARB_shader_image_size", numexts, exts); - GLAPILOADER_GL_ARB_shader_objects = hasExt("GL_ARB_shader_objects", numexts, exts); - GLAPILOADER_GL_ARB_shader_precision = hasExt("GL_ARB_shader_precision", numexts, exts); - GLAPILOADER_GL_ARB_shader_stencil_export = hasExt("GL_ARB_shader_stencil_export", numexts, exts); - GLAPILOADER_GL_ARB_shader_storage_buffer_object = hasExt("GL_ARB_shader_storage_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_shader_subroutine = hasExt("GL_ARB_shader_subroutine", numexts, exts); - GLAPILOADER_GL_ARB_shader_texture_image_samples = hasExt("GL_ARB_shader_texture_image_samples", numexts, exts); - GLAPILOADER_GL_ARB_shader_texture_lod = hasExt("GL_ARB_shader_texture_lod", numexts, exts); - GLAPILOADER_GL_ARB_shader_viewport_layer_array = hasExt("GL_ARB_shader_viewport_layer_array", numexts, exts); - GLAPILOADER_GL_ARB_shading_language_100 = hasExt("GL_ARB_shading_language_100", numexts, exts); - GLAPILOADER_GL_ARB_shading_language_420pack = hasExt("GL_ARB_shading_language_420pack", numexts, exts); - GLAPILOADER_GL_ARB_shading_language_include = hasExt("GL_ARB_shading_language_include", numexts, exts); - GLAPILOADER_GL_ARB_shading_language_packing = hasExt("GL_ARB_shading_language_packing", numexts, exts); - GLAPILOADER_GL_ARB_shadow = hasExt("GL_ARB_shadow", numexts, exts); - GLAPILOADER_GL_ARB_shadow_ambient = hasExt("GL_ARB_shadow_ambient", numexts, exts); - GLAPILOADER_GL_ARB_sparse_buffer = hasExt("GL_ARB_sparse_buffer", numexts, exts); - GLAPILOADER_GL_ARB_sparse_texture = hasExt("GL_ARB_sparse_texture", numexts, exts); - GLAPILOADER_GL_ARB_sparse_texture2 = hasExt("GL_ARB_sparse_texture2", numexts, exts); - GLAPILOADER_GL_ARB_sparse_texture_clamp = hasExt("GL_ARB_sparse_texture_clamp", numexts, exts); - GLAPILOADER_GL_ARB_spirv_extensions = hasExt("GL_ARB_spirv_extensions", numexts, exts); - GLAPILOADER_GL_ARB_stencil_texturing = hasExt("GL_ARB_stencil_texturing", numexts, exts); - GLAPILOADER_GL_ARB_sync = hasExt("GL_ARB_sync", numexts, exts); - GLAPILOADER_GL_ARB_tessellation_shader = hasExt("GL_ARB_tessellation_shader", numexts, exts); - GLAPILOADER_GL_ARB_texture_barrier = hasExt("GL_ARB_texture_barrier", numexts, exts); - GLAPILOADER_GL_ARB_texture_border_clamp = hasExt("GL_ARB_texture_border_clamp", numexts, exts); - GLAPILOADER_GL_ARB_texture_buffer_object = hasExt("GL_ARB_texture_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_texture_buffer_object_rgb32 = hasExt("GL_ARB_texture_buffer_object_rgb32", numexts, exts); - GLAPILOADER_GL_ARB_texture_buffer_range = hasExt("GL_ARB_texture_buffer_range", numexts, exts); - GLAPILOADER_GL_ARB_texture_compression = hasExt("GL_ARB_texture_compression", numexts, exts); - GLAPILOADER_GL_ARB_texture_compression_bptc = hasExt("GL_ARB_texture_compression_bptc", numexts, exts); - GLAPILOADER_GL_ARB_texture_compression_rgtc = hasExt("GL_ARB_texture_compression_rgtc", numexts, exts); - GLAPILOADER_GL_ARB_texture_cube_map = hasExt("GL_ARB_texture_cube_map", numexts, exts); - GLAPILOADER_GL_ARB_texture_cube_map_array = hasExt("GL_ARB_texture_cube_map_array", numexts, exts); - GLAPILOADER_GL_ARB_texture_env_add = hasExt("GL_ARB_texture_env_add", numexts, exts); - GLAPILOADER_GL_ARB_texture_env_combine = hasExt("GL_ARB_texture_env_combine", numexts, exts); - GLAPILOADER_GL_ARB_texture_env_crossbar = hasExt("GL_ARB_texture_env_crossbar", numexts, exts); - GLAPILOADER_GL_ARB_texture_env_dot3 = hasExt("GL_ARB_texture_env_dot3", numexts, exts); - GLAPILOADER_GL_ARB_texture_filter_anisotropic = hasExt("GL_ARB_texture_filter_anisotropic", numexts, exts); - GLAPILOADER_GL_ARB_texture_filter_minmax = hasExt("GL_ARB_texture_filter_minmax", numexts, exts); - GLAPILOADER_GL_ARB_texture_float = hasExt("GL_ARB_texture_float", numexts, exts); - GLAPILOADER_GL_ARB_texture_gather = hasExt("GL_ARB_texture_gather", numexts, exts); - GLAPILOADER_GL_ARB_texture_mirror_clamp_to_edge = hasExt("GL_ARB_texture_mirror_clamp_to_edge", numexts, exts); - GLAPILOADER_GL_ARB_texture_mirrored_repeat = hasExt("GL_ARB_texture_mirrored_repeat", numexts, exts); - GLAPILOADER_GL_ARB_texture_multisample = hasExt("GL_ARB_texture_multisample", numexts, exts); - GLAPILOADER_GL_ARB_texture_non_power_of_two = hasExt("GL_ARB_texture_non_power_of_two", numexts, exts); - GLAPILOADER_GL_ARB_texture_query_levels = hasExt("GL_ARB_texture_query_levels", numexts, exts); - GLAPILOADER_GL_ARB_texture_query_lod = hasExt("GL_ARB_texture_query_lod", numexts, exts); - GLAPILOADER_GL_ARB_texture_rectangle = hasExt("GL_ARB_texture_rectangle", numexts, exts); - GLAPILOADER_GL_ARB_texture_rg = hasExt("GL_ARB_texture_rg", numexts, exts); - GLAPILOADER_GL_ARB_texture_rgb10_a2ui = hasExt("GL_ARB_texture_rgb10_a2ui", numexts, exts); - GLAPILOADER_GL_ARB_texture_stencil8 = hasExt("GL_ARB_texture_stencil8", numexts, exts); - GLAPILOADER_GL_ARB_texture_storage = hasExt("GL_ARB_texture_storage", numexts, exts); - GLAPILOADER_GL_ARB_texture_storage_multisample = hasExt("GL_ARB_texture_storage_multisample", numexts, exts); - GLAPILOADER_GL_ARB_texture_swizzle = hasExt("GL_ARB_texture_swizzle", numexts, exts); - GLAPILOADER_GL_ARB_texture_view = hasExt("GL_ARB_texture_view", numexts, exts); - GLAPILOADER_GL_ARB_timer_query = hasExt("GL_ARB_timer_query", numexts, exts); - GLAPILOADER_GL_ARB_transform_feedback2 = hasExt("GL_ARB_transform_feedback2", numexts, exts); - GLAPILOADER_GL_ARB_transform_feedback3 = hasExt("GL_ARB_transform_feedback3", numexts, exts); - GLAPILOADER_GL_ARB_transform_feedback_instanced = hasExt("GL_ARB_transform_feedback_instanced", numexts, exts); - GLAPILOADER_GL_ARB_transform_feedback_overflow_query = hasExt("GL_ARB_transform_feedback_overflow_query", numexts, exts); - GLAPILOADER_GL_ARB_transpose_matrix = hasExt("GL_ARB_transpose_matrix", numexts, exts); - GLAPILOADER_GL_ARB_uniform_buffer_object = hasExt("GL_ARB_uniform_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_vertex_array_bgra = hasExt("GL_ARB_vertex_array_bgra", numexts, exts); - GLAPILOADER_GL_ARB_vertex_array_object = hasExt("GL_ARB_vertex_array_object", numexts, exts); - GLAPILOADER_GL_ARB_vertex_attrib_64bit = hasExt("GL_ARB_vertex_attrib_64bit", numexts, exts); - GLAPILOADER_GL_ARB_vertex_attrib_binding = hasExt("GL_ARB_vertex_attrib_binding", numexts, exts); - GLAPILOADER_GL_ARB_vertex_blend = hasExt("GL_ARB_vertex_blend", numexts, exts); - GLAPILOADER_GL_ARB_vertex_buffer_object = hasExt("GL_ARB_vertex_buffer_object", numexts, exts); - GLAPILOADER_GL_ARB_vertex_program = hasExt("GL_ARB_vertex_program", numexts, exts); - GLAPILOADER_GL_ARB_vertex_shader = hasExt("GL_ARB_vertex_shader", numexts, exts); - GLAPILOADER_GL_ARB_vertex_type_10f_11f_11f_rev = hasExt("GL_ARB_vertex_type_10f_11f_11f_rev", numexts, exts); - GLAPILOADER_GL_ARB_vertex_type_2_10_10_10_rev = hasExt("GL_ARB_vertex_type_2_10_10_10_rev", numexts, exts); - GLAPILOADER_GL_ARB_viewport_array = hasExt("GL_ARB_viewport_array", numexts, exts); - GLAPILOADER_GL_ARB_window_pos = hasExt("GL_ARB_window_pos", numexts, exts); - GLAPILOADER_GL_EXT_422_pixels = hasExt("GL_EXT_422_pixels", numexts, exts); - GLAPILOADER_GL_EXT_EGL_image_storage = hasExt("GL_EXT_EGL_image_storage", numexts, exts); - GLAPILOADER_GL_EXT_EGL_sync = hasExt("GL_EXT_EGL_sync", numexts, exts); - GLAPILOADER_GL_EXT_abgr = hasExt("GL_EXT_abgr", numexts, exts); - GLAPILOADER_GL_EXT_bgra = hasExt("GL_EXT_bgra", numexts, exts); - GLAPILOADER_GL_EXT_bindable_uniform = hasExt("GL_EXT_bindable_uniform", numexts, exts); - GLAPILOADER_GL_EXT_blend_color = hasExt("GL_EXT_blend_color", numexts, exts); - GLAPILOADER_GL_EXT_blend_equation_separate = hasExt("GL_EXT_blend_equation_separate", numexts, exts); - GLAPILOADER_GL_EXT_blend_func_separate = hasExt("GL_EXT_blend_func_separate", numexts, exts); - GLAPILOADER_GL_EXT_blend_logic_op = hasExt("GL_EXT_blend_logic_op", numexts, exts); - GLAPILOADER_GL_EXT_blend_minmax = hasExt("GL_EXT_blend_minmax", numexts, exts); - GLAPILOADER_GL_EXT_blend_subtract = hasExt("GL_EXT_blend_subtract", numexts, exts); - GLAPILOADER_GL_EXT_clip_volume_hint = hasExt("GL_EXT_clip_volume_hint", numexts, exts); - GLAPILOADER_GL_EXT_cmyka = hasExt("GL_EXT_cmyka", numexts, exts); - GLAPILOADER_GL_EXT_color_subtable = hasExt("GL_EXT_color_subtable", numexts, exts); - GLAPILOADER_GL_EXT_compiled_vertex_array = hasExt("GL_EXT_compiled_vertex_array", numexts, exts); - GLAPILOADER_GL_EXT_convolution = hasExt("GL_EXT_convolution", numexts, exts); - GLAPILOADER_GL_EXT_coordinate_frame = hasExt("GL_EXT_coordinate_frame", numexts, exts); - GLAPILOADER_GL_EXT_copy_texture = hasExt("GL_EXT_copy_texture", numexts, exts); - GLAPILOADER_GL_EXT_cull_vertex = hasExt("GL_EXT_cull_vertex", numexts, exts); - GLAPILOADER_GL_EXT_debug_label = hasExt("GL_EXT_debug_label", numexts, exts); - GLAPILOADER_GL_EXT_debug_marker = hasExt("GL_EXT_debug_marker", numexts, exts); - GLAPILOADER_GL_EXT_depth_bounds_test = hasExt("GL_EXT_depth_bounds_test", numexts, exts); - GLAPILOADER_GL_EXT_direct_state_access = hasExt("GL_EXT_direct_state_access", numexts, exts); - GLAPILOADER_GL_EXT_draw_buffers2 = hasExt("GL_EXT_draw_buffers2", numexts, exts); - GLAPILOADER_GL_EXT_draw_instanced = hasExt("GL_EXT_draw_instanced", numexts, exts); - GLAPILOADER_GL_EXT_draw_range_elements = hasExt("GL_EXT_draw_range_elements", numexts, exts); - GLAPILOADER_GL_EXT_external_buffer = hasExt("GL_EXT_external_buffer", numexts, exts); - GLAPILOADER_GL_EXT_fog_coord = hasExt("GL_EXT_fog_coord", numexts, exts); - GLAPILOADER_GL_EXT_framebuffer_blit = hasExt("GL_EXT_framebuffer_blit", numexts, exts); - GLAPILOADER_GL_EXT_framebuffer_multisample = hasExt("GL_EXT_framebuffer_multisample", numexts, exts); - GLAPILOADER_GL_EXT_framebuffer_multisample_blit_scaled = hasExt("GL_EXT_framebuffer_multisample_blit_scaled", numexts, exts); - GLAPILOADER_GL_EXT_framebuffer_object = hasExt("GL_EXT_framebuffer_object", numexts, exts); - GLAPILOADER_GL_EXT_framebuffer_sRGB = hasExt("GL_EXT_framebuffer_sRGB", numexts, exts); - GLAPILOADER_GL_EXT_geometry_shader4 = hasExt("GL_EXT_geometry_shader4", numexts, exts); - GLAPILOADER_GL_EXT_gpu_program_parameters = hasExt("GL_EXT_gpu_program_parameters", numexts, exts); - GLAPILOADER_GL_EXT_gpu_shader4 = hasExt("GL_EXT_gpu_shader4", numexts, exts); - GLAPILOADER_GL_EXT_histogram = hasExt("GL_EXT_histogram", numexts, exts); - GLAPILOADER_GL_EXT_index_array_formats = hasExt("GL_EXT_index_array_formats", numexts, exts); - GLAPILOADER_GL_EXT_index_func = hasExt("GL_EXT_index_func", numexts, exts); - GLAPILOADER_GL_EXT_index_material = hasExt("GL_EXT_index_material", numexts, exts); - GLAPILOADER_GL_EXT_index_texture = hasExt("GL_EXT_index_texture", numexts, exts); - GLAPILOADER_GL_EXT_light_texture = hasExt("GL_EXT_light_texture", numexts, exts); - GLAPILOADER_GL_EXT_memory_object = hasExt("GL_EXT_memory_object", numexts, exts); - GLAPILOADER_GL_EXT_memory_object_fd = hasExt("GL_EXT_memory_object_fd", numexts, exts); - GLAPILOADER_GL_EXT_memory_object_win32 = hasExt("GL_EXT_memory_object_win32", numexts, exts); - GLAPILOADER_GL_EXT_misc_attribute = hasExt("GL_EXT_misc_attribute", numexts, exts); - GLAPILOADER_GL_EXT_multi_draw_arrays = hasExt("GL_EXT_multi_draw_arrays", numexts, exts); - GLAPILOADER_GL_EXT_multisample = hasExt("GL_EXT_multisample", numexts, exts); - GLAPILOADER_GL_EXT_multiview_tessellation_geometry_shader = hasExt("GL_EXT_multiview_tessellation_geometry_shader", numexts, exts); - GLAPILOADER_GL_EXT_multiview_texture_multisample = hasExt("GL_EXT_multiview_texture_multisample", numexts, exts); - GLAPILOADER_GL_EXT_multiview_timer_query = hasExt("GL_EXT_multiview_timer_query", numexts, exts); - GLAPILOADER_GL_EXT_packed_depth_stencil = hasExt("GL_EXT_packed_depth_stencil", numexts, exts); - GLAPILOADER_GL_EXT_packed_float = hasExt("GL_EXT_packed_float", numexts, exts); - GLAPILOADER_GL_EXT_packed_pixels = hasExt("GL_EXT_packed_pixels", numexts, exts); - GLAPILOADER_GL_EXT_paletted_texture = hasExt("GL_EXT_paletted_texture", numexts, exts); - GLAPILOADER_GL_EXT_pixel_buffer_object = hasExt("GL_EXT_pixel_buffer_object", numexts, exts); - GLAPILOADER_GL_EXT_pixel_transform = hasExt("GL_EXT_pixel_transform", numexts, exts); - GLAPILOADER_GL_EXT_pixel_transform_color_table = hasExt("GL_EXT_pixel_transform_color_table", numexts, exts); - GLAPILOADER_GL_EXT_point_parameters = hasExt("GL_EXT_point_parameters", numexts, exts); - GLAPILOADER_GL_EXT_polygon_offset = hasExt("GL_EXT_polygon_offset", numexts, exts); - GLAPILOADER_GL_EXT_polygon_offset_clamp = hasExt("GL_EXT_polygon_offset_clamp", numexts, exts); - GLAPILOADER_GL_EXT_post_depth_coverage = hasExt("GL_EXT_post_depth_coverage", numexts, exts); - GLAPILOADER_GL_EXT_provoking_vertex = hasExt("GL_EXT_provoking_vertex", numexts, exts); - GLAPILOADER_GL_EXT_raster_multisample = hasExt("GL_EXT_raster_multisample", numexts, exts); - GLAPILOADER_GL_EXT_rescale_normal = hasExt("GL_EXT_rescale_normal", numexts, exts); - GLAPILOADER_GL_EXT_semaphore = hasExt("GL_EXT_semaphore", numexts, exts); - GLAPILOADER_GL_EXT_semaphore_fd = hasExt("GL_EXT_semaphore_fd", numexts, exts); - GLAPILOADER_GL_EXT_semaphore_win32 = hasExt("GL_EXT_semaphore_win32", numexts, exts); - GLAPILOADER_GL_EXT_secondary_color = hasExt("GL_EXT_secondary_color", numexts, exts); - GLAPILOADER_GL_EXT_separate_shader_objects = hasExt("GL_EXT_separate_shader_objects", numexts, exts); - GLAPILOADER_GL_EXT_separate_specular_color = hasExt("GL_EXT_separate_specular_color", numexts, exts); - GLAPILOADER_GL_EXT_shader_framebuffer_fetch = hasExt("GL_EXT_shader_framebuffer_fetch", numexts, exts); - GLAPILOADER_GL_EXT_shader_framebuffer_fetch_non_coherent = hasExt("GL_EXT_shader_framebuffer_fetch_non_coherent", numexts, exts); - GLAPILOADER_GL_EXT_shader_image_load_formatted = hasExt("GL_EXT_shader_image_load_formatted", numexts, exts); - GLAPILOADER_GL_EXT_shader_image_load_store = hasExt("GL_EXT_shader_image_load_store", numexts, exts); - GLAPILOADER_GL_EXT_shader_integer_mix = hasExt("GL_EXT_shader_integer_mix", numexts, exts); - GLAPILOADER_GL_EXT_shadow_funcs = hasExt("GL_EXT_shadow_funcs", numexts, exts); - GLAPILOADER_GL_EXT_shared_texture_palette = hasExt("GL_EXT_shared_texture_palette", numexts, exts); - GLAPILOADER_GL_EXT_sparse_texture2 = hasExt("GL_EXT_sparse_texture2", numexts, exts); - GLAPILOADER_GL_EXT_stencil_clear_tag = hasExt("GL_EXT_stencil_clear_tag", numexts, exts); - GLAPILOADER_GL_EXT_stencil_two_side = hasExt("GL_EXT_stencil_two_side", numexts, exts); - GLAPILOADER_GL_EXT_stencil_wrap = hasExt("GL_EXT_stencil_wrap", numexts, exts); - GLAPILOADER_GL_EXT_subtexture = hasExt("GL_EXT_subtexture", numexts, exts); - GLAPILOADER_GL_EXT_texture = hasExt("GL_EXT_texture", numexts, exts); - GLAPILOADER_GL_EXT_texture3D = hasExt("GL_EXT_texture3D", numexts, exts); - GLAPILOADER_GL_EXT_texture_array = hasExt("GL_EXT_texture_array", numexts, exts); - GLAPILOADER_GL_EXT_texture_buffer_object = hasExt("GL_EXT_texture_buffer_object", numexts, exts); - GLAPILOADER_GL_EXT_texture_compression_latc = hasExt("GL_EXT_texture_compression_latc", numexts, exts); - GLAPILOADER_GL_EXT_texture_compression_rgtc = hasExt("GL_EXT_texture_compression_rgtc", numexts, exts); - GLAPILOADER_GL_EXT_texture_compression_s3tc = hasExt("GL_EXT_texture_compression_s3tc", numexts, exts); - GLAPILOADER_GL_EXT_texture_cube_map = hasExt("GL_EXT_texture_cube_map", numexts, exts); - GLAPILOADER_GL_EXT_texture_env_add = hasExt("GL_EXT_texture_env_add", numexts, exts); - GLAPILOADER_GL_EXT_texture_env_combine = hasExt("GL_EXT_texture_env_combine", numexts, exts); - GLAPILOADER_GL_EXT_texture_env_dot3 = hasExt("GL_EXT_texture_env_dot3", numexts, exts); - GLAPILOADER_GL_EXT_texture_filter_anisotropic = hasExt("GL_EXT_texture_filter_anisotropic", numexts, exts); - GLAPILOADER_GL_EXT_texture_filter_minmax = hasExt("GL_EXT_texture_filter_minmax", numexts, exts); - GLAPILOADER_GL_EXT_texture_integer = hasExt("GL_EXT_texture_integer", numexts, exts); - GLAPILOADER_GL_EXT_texture_lod_bias = hasExt("GL_EXT_texture_lod_bias", numexts, exts); - GLAPILOADER_GL_EXT_texture_mirror_clamp = hasExt("GL_EXT_texture_mirror_clamp", numexts, exts); - GLAPILOADER_GL_EXT_texture_object = hasExt("GL_EXT_texture_object", numexts, exts); - GLAPILOADER_GL_EXT_texture_perturb_normal = hasExt("GL_EXT_texture_perturb_normal", numexts, exts); - GLAPILOADER_GL_EXT_texture_sRGB = hasExt("GL_EXT_texture_sRGB", numexts, exts); - GLAPILOADER_GL_EXT_texture_sRGB_R8 = hasExt("GL_EXT_texture_sRGB_R8", numexts, exts); - GLAPILOADER_GL_EXT_texture_sRGB_decode = hasExt("GL_EXT_texture_sRGB_decode", numexts, exts); - GLAPILOADER_GL_EXT_texture_shared_exponent = hasExt("GL_EXT_texture_shared_exponent", numexts, exts); - GLAPILOADER_GL_EXT_texture_snorm = hasExt("GL_EXT_texture_snorm", numexts, exts); - GLAPILOADER_GL_EXT_texture_swizzle = hasExt("GL_EXT_texture_swizzle", numexts, exts); - GLAPILOADER_GL_EXT_timer_query = hasExt("GL_EXT_timer_query", numexts, exts); - GLAPILOADER_GL_EXT_transform_feedback = hasExt("GL_EXT_transform_feedback", numexts, exts); - GLAPILOADER_GL_EXT_vertex_array = hasExt("GL_EXT_vertex_array", numexts, exts); - GLAPILOADER_GL_EXT_vertex_array_bgra = hasExt("GL_EXT_vertex_array_bgra", numexts, exts); - GLAPILOADER_GL_EXT_vertex_attrib_64bit = hasExt("GL_EXT_vertex_attrib_64bit", numexts, exts); - GLAPILOADER_GL_EXT_vertex_shader = hasExt("GL_EXT_vertex_shader", numexts, exts); - GLAPILOADER_GL_EXT_vertex_weighting = hasExt("GL_EXT_vertex_weighting", numexts, exts); - GLAPILOADER_GL_EXT_win32_keyed_mutex = hasExt("GL_EXT_win32_keyed_mutex", numexts, exts); - GLAPILOADER_GL_EXT_window_rectangles = hasExt("GL_EXT_window_rectangles", numexts, exts); - GLAPILOADER_GL_EXT_x11_sync_object = hasExt("GL_EXT_x11_sync_object", numexts, exts); - GLAPILOADER_GL_INTEL_conservative_rasterization = hasExt("GL_INTEL_conservative_rasterization", numexts, exts); - GLAPILOADER_GL_INTEL_fragment_shader_ordering = hasExt("GL_INTEL_fragment_shader_ordering", numexts, exts); - GLAPILOADER_GL_INTEL_framebuffer_CMAA = hasExt("GL_INTEL_framebuffer_CMAA", numexts, exts); - GLAPILOADER_GL_INTEL_map_texture = hasExt("GL_INTEL_map_texture", numexts, exts); - GLAPILOADER_GL_INTEL_blackhole_render = hasExt("GL_INTEL_blackhole_render", numexts, exts); - GLAPILOADER_GL_INTEL_parallel_arrays = hasExt("GL_INTEL_parallel_arrays", numexts, exts); - GLAPILOADER_GL_INTEL_performance_query = hasExt("GL_INTEL_performance_query", numexts, exts); - GLAPILOADER_GL_KHR_blend_equation_advanced = hasExt("GL_KHR_blend_equation_advanced", numexts, exts); - GLAPILOADER_GL_KHR_blend_equation_advanced_coherent = hasExt("GL_KHR_blend_equation_advanced_coherent", numexts, exts); - GLAPILOADER_GL_KHR_context_flush_control = hasExt("GL_KHR_context_flush_control", numexts, exts); - GLAPILOADER_GL_KHR_debug = hasExt("GL_KHR_debug", numexts, exts); - GLAPILOADER_GL_KHR_no_error = hasExt("GL_KHR_no_error", numexts, exts); - GLAPILOADER_GL_KHR_robust_buffer_access_behavior = hasExt("GL_KHR_robust_buffer_access_behavior", numexts, exts); - GLAPILOADER_GL_KHR_robustness = hasExt("GL_KHR_robustness", numexts, exts); - GLAPILOADER_GL_KHR_shader_subgroup = hasExt("GL_KHR_shader_subgroup", numexts, exts); - GLAPILOADER_GL_KHR_texture_compression_astc_hdr = hasExt("GL_KHR_texture_compression_astc_hdr", numexts, exts); - GLAPILOADER_GL_KHR_texture_compression_astc_ldr = hasExt("GL_KHR_texture_compression_astc_ldr", numexts, exts); - GLAPILOADER_GL_KHR_texture_compression_astc_sliced_3d = hasExt("GL_KHR_texture_compression_astc_sliced_3d", numexts, exts); - GLAPILOADER_GL_KHR_parallel_shader_compile = hasExt("GL_KHR_parallel_shader_compile", numexts, exts); - GLAPILOADER_GL_NV_alpha_to_coverage_dither_control = hasExt("GL_NV_alpha_to_coverage_dither_control", numexts, exts); - GLAPILOADER_GL_NV_bindless_multi_draw_indirect = hasExt("GL_NV_bindless_multi_draw_indirect", numexts, exts); - GLAPILOADER_GL_NV_bindless_multi_draw_indirect_count = hasExt("GL_NV_bindless_multi_draw_indirect_count", numexts, exts); - GLAPILOADER_GL_NV_bindless_texture = hasExt("GL_NV_bindless_texture", numexts, exts); - GLAPILOADER_GL_NV_blend_equation_advanced = hasExt("GL_NV_blend_equation_advanced", numexts, exts); - GLAPILOADER_GL_NV_blend_equation_advanced_coherent = hasExt("GL_NV_blend_equation_advanced_coherent", numexts, exts); - GLAPILOADER_GL_NV_blend_minmax_factor = hasExt("GL_NV_blend_minmax_factor", numexts, exts); - GLAPILOADER_GL_NV_blend_square = hasExt("GL_NV_blend_square", numexts, exts); - GLAPILOADER_GL_NV_clip_space_w_scaling = hasExt("GL_NV_clip_space_w_scaling", numexts, exts); - GLAPILOADER_GL_NV_command_list = hasExt("GL_NV_command_list", numexts, exts); - GLAPILOADER_GL_NV_compute_program5 = hasExt("GL_NV_compute_program5", numexts, exts); - GLAPILOADER_GL_NV_compute_shader_derivatives = hasExt("GL_NV_compute_shader_derivatives", numexts, exts); - GLAPILOADER_GL_NV_conditional_render = hasExt("GL_NV_conditional_render", numexts, exts); - GLAPILOADER_GL_NV_conservative_raster = hasExt("GL_NV_conservative_raster", numexts, exts); - GLAPILOADER_GL_NV_conservative_raster_dilate = hasExt("GL_NV_conservative_raster_dilate", numexts, exts); - GLAPILOADER_GL_NV_conservative_raster_pre_snap = hasExt("GL_NV_conservative_raster_pre_snap", numexts, exts); - GLAPILOADER_GL_NV_conservative_raster_pre_snap_triangles = hasExt("GL_NV_conservative_raster_pre_snap_triangles", numexts, exts); - GLAPILOADER_GL_NV_conservative_raster_underestimation = hasExt("GL_NV_conservative_raster_underestimation", numexts, exts); - GLAPILOADER_GL_NV_copy_depth_to_color = hasExt("GL_NV_copy_depth_to_color", numexts, exts); - GLAPILOADER_GL_NV_copy_image = hasExt("GL_NV_copy_image", numexts, exts); - GLAPILOADER_GL_NV_deep_texture3D = hasExt("GL_NV_deep_texture3D", numexts, exts); - GLAPILOADER_GL_NV_depth_buffer_float = hasExt("GL_NV_depth_buffer_float", numexts, exts); - GLAPILOADER_GL_NV_depth_clamp = hasExt("GL_NV_depth_clamp", numexts, exts); - GLAPILOADER_GL_NV_draw_texture = hasExt("GL_NV_draw_texture", numexts, exts); - GLAPILOADER_GL_NV_draw_vulkan_image = hasExt("GL_NV_draw_vulkan_image", numexts, exts); - GLAPILOADER_GL_NV_evaluators = hasExt("GL_NV_evaluators", numexts, exts); - GLAPILOADER_GL_NV_explicit_multisample = hasExt("GL_NV_explicit_multisample", numexts, exts); - GLAPILOADER_GL_NV_fence = hasExt("GL_NV_fence", numexts, exts); - GLAPILOADER_GL_NV_fill_rectangle = hasExt("GL_NV_fill_rectangle", numexts, exts); - GLAPILOADER_GL_NV_float_buffer = hasExt("GL_NV_float_buffer", numexts, exts); - GLAPILOADER_GL_NV_fog_distance = hasExt("GL_NV_fog_distance", numexts, exts); - GLAPILOADER_GL_NV_fragment_coverage_to_color = hasExt("GL_NV_fragment_coverage_to_color", numexts, exts); - GLAPILOADER_GL_NV_fragment_program = hasExt("GL_NV_fragment_program", numexts, exts); - GLAPILOADER_GL_NV_fragment_program2 = hasExt("GL_NV_fragment_program2", numexts, exts); - GLAPILOADER_GL_NV_fragment_program4 = hasExt("GL_NV_fragment_program4", numexts, exts); - GLAPILOADER_GL_NV_fragment_program_option = hasExt("GL_NV_fragment_program_option", numexts, exts); - GLAPILOADER_GL_NV_fragment_shader_barycentric = hasExt("GL_NV_fragment_shader_barycentric", numexts, exts); - GLAPILOADER_GL_NV_fragment_shader_interlock = hasExt("GL_NV_fragment_shader_interlock", numexts, exts); - GLAPILOADER_GL_NV_framebuffer_mixed_samples = hasExt("GL_NV_framebuffer_mixed_samples", numexts, exts); - GLAPILOADER_GL_NV_framebuffer_multisample_coverage = hasExt("GL_NV_framebuffer_multisample_coverage", numexts, exts); - GLAPILOADER_GL_NV_geometry_program4 = hasExt("GL_NV_geometry_program4", numexts, exts); - GLAPILOADER_GL_NV_geometry_shader4 = hasExt("GL_NV_geometry_shader4", numexts, exts); - GLAPILOADER_GL_NV_geometry_shader_passthrough = hasExt("GL_NV_geometry_shader_passthrough", numexts, exts); - GLAPILOADER_GL_NV_gpu_program4 = hasExt("GL_NV_gpu_program4", numexts, exts); - GLAPILOADER_GL_NV_gpu_program5 = hasExt("GL_NV_gpu_program5", numexts, exts); - GLAPILOADER_GL_NV_gpu_program5_mem_extended = hasExt("GL_NV_gpu_program5_mem_extended", numexts, exts); - GLAPILOADER_GL_NV_gpu_shader5 = hasExt("GL_NV_gpu_shader5", numexts, exts); - GLAPILOADER_GL_NV_half_float = hasExt("GL_NV_half_float", numexts, exts); - GLAPILOADER_GL_NV_internalformat_sample_query = hasExt("GL_NV_internalformat_sample_query", numexts, exts); - GLAPILOADER_GL_NV_light_max_exponent = hasExt("GL_NV_light_max_exponent", numexts, exts); - GLAPILOADER_GL_NV_gpu_multicast = hasExt("GL_NV_gpu_multicast", numexts, exts); - GLAPILOADER_GL_NV_memory_attachment = hasExt("GL_NV_memory_attachment", numexts, exts); - GLAPILOADER_GL_NV_mesh_shader = hasExt("GL_NV_mesh_shader", numexts, exts); - GLAPILOADER_GL_NV_multisample_coverage = hasExt("GL_NV_multisample_coverage", numexts, exts); - GLAPILOADER_GL_NV_multisample_filter_hint = hasExt("GL_NV_multisample_filter_hint", numexts, exts); - GLAPILOADER_GL_NV_occlusion_query = hasExt("GL_NV_occlusion_query", numexts, exts); - GLAPILOADER_GL_NV_packed_depth_stencil = hasExt("GL_NV_packed_depth_stencil", numexts, exts); - GLAPILOADER_GL_NV_parameter_buffer_object = hasExt("GL_NV_parameter_buffer_object", numexts, exts); - GLAPILOADER_GL_NV_parameter_buffer_object2 = hasExt("GL_NV_parameter_buffer_object2", numexts, exts); - GLAPILOADER_GL_NV_path_rendering = hasExt("GL_NV_path_rendering", numexts, exts); - GLAPILOADER_GL_NV_path_rendering_shared_edge = hasExt("GL_NV_path_rendering_shared_edge", numexts, exts); - GLAPILOADER_GL_NV_pixel_data_range = hasExt("GL_NV_pixel_data_range", numexts, exts); - GLAPILOADER_GL_NV_point_sprite = hasExt("GL_NV_point_sprite", numexts, exts); - GLAPILOADER_GL_NV_present_video = hasExt("GL_NV_present_video", numexts, exts); - GLAPILOADER_GL_NV_primitive_restart = hasExt("GL_NV_primitive_restart", numexts, exts); - GLAPILOADER_GL_NV_query_resource = hasExt("GL_NV_query_resource", numexts, exts); - GLAPILOADER_GL_NV_query_resource_tag = hasExt("GL_NV_query_resource_tag", numexts, exts); - GLAPILOADER_GL_NV_register_combiners = hasExt("GL_NV_register_combiners", numexts, exts); - GLAPILOADER_GL_NV_register_combiners2 = hasExt("GL_NV_register_combiners2", numexts, exts); - GLAPILOADER_GL_NV_representative_fragment_test = hasExt("GL_NV_representative_fragment_test", numexts, exts); - GLAPILOADER_GL_NV_robustness_video_memory_purge = hasExt("GL_NV_robustness_video_memory_purge", numexts, exts); - GLAPILOADER_GL_NV_sample_locations = hasExt("GL_NV_sample_locations", numexts, exts); - GLAPILOADER_GL_NV_sample_mask_override_coverage = hasExt("GL_NV_sample_mask_override_coverage", numexts, exts); - GLAPILOADER_GL_NV_scissor_exclusive = hasExt("GL_NV_scissor_exclusive", numexts, exts); - GLAPILOADER_GL_NV_shader_atomic_counters = hasExt("GL_NV_shader_atomic_counters", numexts, exts); - GLAPILOADER_GL_NV_shader_atomic_float = hasExt("GL_NV_shader_atomic_float", numexts, exts); - GLAPILOADER_GL_NV_shader_atomic_float64 = hasExt("GL_NV_shader_atomic_float64", numexts, exts); - GLAPILOADER_GL_NV_shader_atomic_fp16_vector = hasExt("GL_NV_shader_atomic_fp16_vector", numexts, exts); - GLAPILOADER_GL_NV_shader_atomic_int64 = hasExt("GL_NV_shader_atomic_int64", numexts, exts); - GLAPILOADER_GL_NV_shader_buffer_load = hasExt("GL_NV_shader_buffer_load", numexts, exts); - GLAPILOADER_GL_NV_shader_buffer_store = hasExt("GL_NV_shader_buffer_store", numexts, exts); - GLAPILOADER_GL_NV_shader_storage_buffer_object = hasExt("GL_NV_shader_storage_buffer_object", numexts, exts); - GLAPILOADER_GL_NV_shader_subgroup_partitioned = hasExt("GL_NV_shader_subgroup_partitioned", numexts, exts); - GLAPILOADER_GL_NV_shader_texture_footprint = hasExt("GL_NV_shader_texture_footprint", numexts, exts); - GLAPILOADER_GL_NV_shader_thread_group = hasExt("GL_NV_shader_thread_group", numexts, exts); - GLAPILOADER_GL_NV_shader_thread_shuffle = hasExt("GL_NV_shader_thread_shuffle", numexts, exts); - GLAPILOADER_GL_NV_shading_rate_image = hasExt("GL_NV_shading_rate_image", numexts, exts); - GLAPILOADER_GL_NV_stereo_view_rendering = hasExt("GL_NV_stereo_view_rendering", numexts, exts); - GLAPILOADER_GL_NV_tessellation_program5 = hasExt("GL_NV_tessellation_program5", numexts, exts); - GLAPILOADER_GL_NV_texgen_emboss = hasExt("GL_NV_texgen_emboss", numexts, exts); - GLAPILOADER_GL_NV_texgen_reflection = hasExt("GL_NV_texgen_reflection", numexts, exts); - GLAPILOADER_GL_NV_texture_barrier = hasExt("GL_NV_texture_barrier", numexts, exts); - GLAPILOADER_GL_NV_texture_compression_vtc = hasExt("GL_NV_texture_compression_vtc", numexts, exts); - GLAPILOADER_GL_NV_texture_env_combine4 = hasExt("GL_NV_texture_env_combine4", numexts, exts); - GLAPILOADER_GL_NV_texture_expand_normal = hasExt("GL_NV_texture_expand_normal", numexts, exts); - GLAPILOADER_GL_NV_texture_multisample = hasExt("GL_NV_texture_multisample", numexts, exts); - GLAPILOADER_GL_NV_texture_rectangle = hasExt("GL_NV_texture_rectangle", numexts, exts); - GLAPILOADER_GL_NV_texture_rectangle_compressed = hasExt("GL_NV_texture_rectangle_compressed", numexts, exts); - GLAPILOADER_GL_NV_texture_shader = hasExt("GL_NV_texture_shader", numexts, exts); - GLAPILOADER_GL_NV_texture_shader2 = hasExt("GL_NV_texture_shader2", numexts, exts); - GLAPILOADER_GL_NV_texture_shader3 = hasExt("GL_NV_texture_shader3", numexts, exts); - GLAPILOADER_GL_NV_transform_feedback = hasExt("GL_NV_transform_feedback", numexts, exts); - GLAPILOADER_GL_NV_transform_feedback2 = hasExt("GL_NV_transform_feedback2", numexts, exts); - GLAPILOADER_GL_NV_uniform_buffer_unified_memory = hasExt("GL_NV_uniform_buffer_unified_memory", numexts, exts); - GLAPILOADER_GL_NV_vdpau_interop = hasExt("GL_NV_vdpau_interop", numexts, exts); - GLAPILOADER_GL_NV_vdpau_interop2 = hasExt("GL_NV_vdpau_interop2", numexts, exts); - GLAPILOADER_GL_NV_vertex_array_range = hasExt("GL_NV_vertex_array_range", numexts, exts); - GLAPILOADER_GL_NV_vertex_array_range2 = hasExt("GL_NV_vertex_array_range2", numexts, exts); - GLAPILOADER_GL_NV_vertex_attrib_integer_64bit = hasExt("GL_NV_vertex_attrib_integer_64bit", numexts, exts); - GLAPILOADER_GL_NV_vertex_buffer_unified_memory = hasExt("GL_NV_vertex_buffer_unified_memory", numexts, exts); - GLAPILOADER_GL_NV_vertex_program = hasExt("GL_NV_vertex_program", numexts, exts); - GLAPILOADER_GL_NV_vertex_program1_1 = hasExt("GL_NV_vertex_program1_1", numexts, exts); - GLAPILOADER_GL_NV_vertex_program2 = hasExt("GL_NV_vertex_program2", numexts, exts); - GLAPILOADER_GL_NV_vertex_program2_option = hasExt("GL_NV_vertex_program2_option", numexts, exts); - GLAPILOADER_GL_NV_vertex_program3 = hasExt("GL_NV_vertex_program3", numexts, exts); - GLAPILOADER_GL_NV_vertex_program4 = hasExt("GL_NV_vertex_program4", numexts, exts); - GLAPILOADER_GL_NV_video_capture = hasExt("GL_NV_video_capture", numexts, exts); - GLAPILOADER_GL_NV_viewport_array2 = hasExt("GL_NV_viewport_array2", numexts, exts); - GLAPILOADER_GL_NV_viewport_swizzle = hasExt("GL_NV_viewport_swizzle", numexts, exts); - GLAPILOADER_GL_EXT_texture_shadow_lod = hasExt("GL_EXT_texture_shadow_lod", numexts, exts); + GLAPILOADER_GL_AMD_blend_minmax_factor = hasExt("GL_AMD_blend_minmax_factor", extensions); + GLAPILOADER_GL_AMD_conservative_depth = hasExt("GL_AMD_conservative_depth", extensions); + GLAPILOADER_GL_AMD_debug_output = hasExt("GL_AMD_debug_output", extensions); + GLAPILOADER_GL_AMD_depth_clamp_separate = hasExt("GL_AMD_depth_clamp_separate", extensions); + GLAPILOADER_GL_AMD_draw_buffers_blend = hasExt("GL_AMD_draw_buffers_blend", extensions); + GLAPILOADER_GL_AMD_framebuffer_multisample_advanced = hasExt("GL_AMD_framebuffer_multisample_advanced", extensions); + GLAPILOADER_GL_AMD_framebuffer_sample_positions = hasExt("GL_AMD_framebuffer_sample_positions", extensions); + GLAPILOADER_GL_AMD_gcn_shader = hasExt("GL_AMD_gcn_shader", extensions); + GLAPILOADER_GL_AMD_gpu_shader_half_float = hasExt("GL_AMD_gpu_shader_half_float", extensions); + GLAPILOADER_GL_AMD_gpu_shader_int16 = hasExt("GL_AMD_gpu_shader_int16", extensions); + GLAPILOADER_GL_AMD_gpu_shader_int64 = hasExt("GL_AMD_gpu_shader_int64", extensions); + GLAPILOADER_GL_AMD_interleaved_elements = hasExt("GL_AMD_interleaved_elements", extensions); + GLAPILOADER_GL_AMD_multi_draw_indirect = hasExt("GL_AMD_multi_draw_indirect", extensions); + GLAPILOADER_GL_AMD_name_gen_delete = hasExt("GL_AMD_name_gen_delete", extensions); + GLAPILOADER_GL_AMD_occlusion_query_event = hasExt("GL_AMD_occlusion_query_event", extensions); + GLAPILOADER_GL_AMD_performance_monitor = hasExt("GL_AMD_performance_monitor", extensions); + GLAPILOADER_GL_AMD_pinned_memory = hasExt("GL_AMD_pinned_memory", extensions); + GLAPILOADER_GL_AMD_query_buffer_object = hasExt("GL_AMD_query_buffer_object", extensions); + GLAPILOADER_GL_AMD_sample_positions = hasExt("GL_AMD_sample_positions", extensions); + GLAPILOADER_GL_AMD_seamless_cubemap_per_texture = hasExt("GL_AMD_seamless_cubemap_per_texture", extensions); + GLAPILOADER_GL_AMD_shader_atomic_counter_ops = hasExt("GL_AMD_shader_atomic_counter_ops", extensions); + GLAPILOADER_GL_AMD_shader_ballot = hasExt("GL_AMD_shader_ballot", extensions); + GLAPILOADER_GL_AMD_shader_gpu_shader_half_float_fetch = hasExt("GL_AMD_shader_gpu_shader_half_float_fetch", extensions); + GLAPILOADER_GL_AMD_shader_image_load_store_lod = hasExt("GL_AMD_shader_image_load_store_lod", extensions); + GLAPILOADER_GL_AMD_shader_stencil_export = hasExt("GL_AMD_shader_stencil_export", extensions); + GLAPILOADER_GL_AMD_shader_trinary_minmax = hasExt("GL_AMD_shader_trinary_minmax", extensions); + GLAPILOADER_GL_AMD_shader_explicit_vertex_parameter = hasExt("GL_AMD_shader_explicit_vertex_parameter", extensions); + GLAPILOADER_GL_AMD_sparse_texture = hasExt("GL_AMD_sparse_texture", extensions); + GLAPILOADER_GL_AMD_stencil_operation_extended = hasExt("GL_AMD_stencil_operation_extended", extensions); + GLAPILOADER_GL_AMD_texture_gather_bias_lod = hasExt("GL_AMD_texture_gather_bias_lod", extensions); + GLAPILOADER_GL_AMD_texture_texture4 = hasExt("GL_AMD_texture_texture4", extensions); + GLAPILOADER_GL_AMD_transform_feedback3_lines_triangles = hasExt("GL_AMD_transform_feedback3_lines_triangles", extensions); + GLAPILOADER_GL_AMD_transform_feedback4 = hasExt("GL_AMD_transform_feedback4", extensions); + GLAPILOADER_GL_AMD_vertex_shader_layer = hasExt("GL_AMD_vertex_shader_layer", extensions); + GLAPILOADER_GL_AMD_vertex_shader_tessellator = hasExt("GL_AMD_vertex_shader_tessellator", extensions); + GLAPILOADER_GL_AMD_vertex_shader_viewport_index = hasExt("GL_AMD_vertex_shader_viewport_index", extensions); + GLAPILOADER_GL_APPLE_aux_depth_stencil = hasExt("GL_APPLE_aux_depth_stencil", extensions); + GLAPILOADER_GL_APPLE_client_storage = hasExt("GL_APPLE_client_storage", extensions); + GLAPILOADER_GL_APPLE_element_array = hasExt("GL_APPLE_element_array", extensions); + GLAPILOADER_GL_APPLE_fence = hasExt("GL_APPLE_fence", extensions); + GLAPILOADER_GL_APPLE_float_pixels = hasExt("GL_APPLE_float_pixels", extensions); + GLAPILOADER_GL_APPLE_flush_buffer_range = hasExt("GL_APPLE_flush_buffer_range", extensions); + GLAPILOADER_GL_APPLE_object_purgeable = hasExt("GL_APPLE_object_purgeable", extensions); + GLAPILOADER_GL_APPLE_rgb_422 = hasExt("GL_APPLE_rgb_422", extensions); + GLAPILOADER_GL_APPLE_row_bytes = hasExt("GL_APPLE_row_bytes", extensions); + GLAPILOADER_GL_APPLE_specular_vector = hasExt("GL_APPLE_specular_vector", extensions); + GLAPILOADER_GL_APPLE_texture_range = hasExt("GL_APPLE_texture_range", extensions); + GLAPILOADER_GL_APPLE_transform_hint = hasExt("GL_APPLE_transform_hint", extensions); + GLAPILOADER_GL_APPLE_vertex_array_object = hasExt("GL_APPLE_vertex_array_object", extensions); + GLAPILOADER_GL_APPLE_vertex_array_range = hasExt("GL_APPLE_vertex_array_range", extensions); + GLAPILOADER_GL_APPLE_vertex_program_evaluators = hasExt("GL_APPLE_vertex_program_evaluators", extensions); + GLAPILOADER_GL_APPLE_ycbcr_422 = hasExt("GL_APPLE_ycbcr_422", extensions); + GLAPILOADER_GL_ARB_ES2_compatibility = hasExt("GL_ARB_ES2_compatibility", extensions); + GLAPILOADER_GL_ARB_ES3_1_compatibility = hasExt("GL_ARB_ES3_1_compatibility", extensions); + GLAPILOADER_GL_ARB_ES3_2_compatibility = hasExt("GL_ARB_ES3_2_compatibility", extensions); + GLAPILOADER_GL_ARB_ES3_compatibility = hasExt("GL_ARB_ES3_compatibility", extensions); + GLAPILOADER_GL_ARB_arrays_of_arrays = hasExt("GL_ARB_arrays_of_arrays", extensions); + GLAPILOADER_GL_ARB_base_instance = hasExt("GL_ARB_base_instance", extensions); + GLAPILOADER_GL_ARB_bindless_texture = hasExt("GL_ARB_bindless_texture", extensions); + GLAPILOADER_GL_ARB_blend_func_extended = hasExt("GL_ARB_blend_func_extended", extensions); + GLAPILOADER_GL_ARB_buffer_storage = hasExt("GL_ARB_buffer_storage", extensions); + GLAPILOADER_GL_ARB_cl_event = hasExt("GL_ARB_cl_event", extensions); + GLAPILOADER_GL_ARB_clear_buffer_object = hasExt("GL_ARB_clear_buffer_object", extensions); + GLAPILOADER_GL_ARB_clear_texture = hasExt("GL_ARB_clear_texture", extensions); + GLAPILOADER_GL_ARB_clip_control = hasExt("GL_ARB_clip_control", extensions); + GLAPILOADER_GL_ARB_color_buffer_float = hasExt("GL_ARB_color_buffer_float", extensions); + GLAPILOADER_GL_ARB_compatibility = hasExt("GL_ARB_compatibility", extensions); + GLAPILOADER_GL_ARB_compressed_texture_pixel_storage = hasExt("GL_ARB_compressed_texture_pixel_storage", extensions); + GLAPILOADER_GL_ARB_compute_shader = hasExt("GL_ARB_compute_shader", extensions); + GLAPILOADER_GL_ARB_compute_variable_group_size = hasExt("GL_ARB_compute_variable_group_size", extensions); + GLAPILOADER_GL_ARB_conditional_render_inverted = hasExt("GL_ARB_conditional_render_inverted", extensions); + GLAPILOADER_GL_ARB_conservative_depth = hasExt("GL_ARB_conservative_depth", extensions); + GLAPILOADER_GL_ARB_copy_buffer = hasExt("GL_ARB_copy_buffer", extensions); + GLAPILOADER_GL_ARB_copy_image = hasExt("GL_ARB_copy_image", extensions); + GLAPILOADER_GL_ARB_cull_distance = hasExt("GL_ARB_cull_distance", extensions); + GLAPILOADER_GL_ARB_debug_output = hasExt("GL_ARB_debug_output", extensions); + GLAPILOADER_GL_ARB_depth_buffer_float = hasExt("GL_ARB_depth_buffer_float", extensions); + GLAPILOADER_GL_ARB_depth_clamp = hasExt("GL_ARB_depth_clamp", extensions); + GLAPILOADER_GL_ARB_depth_texture = hasExt("GL_ARB_depth_texture", extensions); + GLAPILOADER_GL_ARB_derivative_control = hasExt("GL_ARB_derivative_control", extensions); + GLAPILOADER_GL_ARB_direct_state_access = hasExt("GL_ARB_direct_state_access", extensions); + GLAPILOADER_GL_ARB_draw_buffers = hasExt("GL_ARB_draw_buffers", extensions); + GLAPILOADER_GL_ARB_draw_buffers_blend = hasExt("GL_ARB_draw_buffers_blend", extensions); + GLAPILOADER_GL_ARB_draw_elements_base_vertex = hasExt("GL_ARB_draw_elements_base_vertex", extensions); + GLAPILOADER_GL_ARB_draw_indirect = hasExt("GL_ARB_draw_indirect", extensions); + GLAPILOADER_GL_ARB_draw_instanced = hasExt("GL_ARB_draw_instanced", extensions); + GLAPILOADER_GL_ARB_enhanced_layouts = hasExt("GL_ARB_enhanced_layouts", extensions); + GLAPILOADER_GL_ARB_explicit_attrib_location = hasExt("GL_ARB_explicit_attrib_location", extensions); + GLAPILOADER_GL_ARB_explicit_uniform_location = hasExt("GL_ARB_explicit_uniform_location", extensions); + GLAPILOADER_GL_ARB_fragment_coord_conventions = hasExt("GL_ARB_fragment_coord_conventions", extensions); + GLAPILOADER_GL_ARB_fragment_layer_viewport = hasExt("GL_ARB_fragment_layer_viewport", extensions); + GLAPILOADER_GL_ARB_fragment_program = hasExt("GL_ARB_fragment_program", extensions); + GLAPILOADER_GL_ARB_fragment_program_shadow = hasExt("GL_ARB_fragment_program_shadow", extensions); + GLAPILOADER_GL_ARB_fragment_shader = hasExt("GL_ARB_fragment_shader", extensions); + GLAPILOADER_GL_ARB_fragment_shader_interlock = hasExt("GL_ARB_fragment_shader_interlock", extensions); + GLAPILOADER_GL_ARB_framebuffer_no_attachments = hasExt("GL_ARB_framebuffer_no_attachments", extensions); + GLAPILOADER_GL_ARB_framebuffer_object = hasExt("GL_ARB_framebuffer_object", extensions); + GLAPILOADER_GL_ARB_framebuffer_sRGB = hasExt("GL_ARB_framebuffer_sRGB", extensions); + GLAPILOADER_GL_ARB_geometry_shader4 = hasExt("GL_ARB_geometry_shader4", extensions); + GLAPILOADER_GL_ARB_get_program_binary = hasExt("GL_ARB_get_program_binary", extensions); + GLAPILOADER_GL_ARB_get_texture_sub_image = hasExt("GL_ARB_get_texture_sub_image", extensions); + GLAPILOADER_GL_ARB_gl_spirv = hasExt("GL_ARB_gl_spirv", extensions); + GLAPILOADER_GL_ARB_gpu_shader5 = hasExt("GL_ARB_gpu_shader5", extensions); + GLAPILOADER_GL_ARB_gpu_shader_fp64 = hasExt("GL_ARB_gpu_shader_fp64", extensions); + GLAPILOADER_GL_ARB_gpu_shader_int64 = hasExt("GL_ARB_gpu_shader_int64", extensions); + GLAPILOADER_GL_ARB_half_float_pixel = hasExt("GL_ARB_half_float_pixel", extensions); + GLAPILOADER_GL_ARB_half_float_vertex = hasExt("GL_ARB_half_float_vertex", extensions); + GLAPILOADER_GL_ARB_imaging = hasExt("GL_ARB_imaging", extensions); + GLAPILOADER_GL_ARB_indirect_parameters = hasExt("GL_ARB_indirect_parameters", extensions); + GLAPILOADER_GL_ARB_instanced_arrays = hasExt("GL_ARB_instanced_arrays", extensions); + GLAPILOADER_GL_ARB_internalformat_query = hasExt("GL_ARB_internalformat_query", extensions); + GLAPILOADER_GL_ARB_internalformat_query2 = hasExt("GL_ARB_internalformat_query2", extensions); + GLAPILOADER_GL_ARB_invalidate_subdata = hasExt("GL_ARB_invalidate_subdata", extensions); + GLAPILOADER_GL_ARB_map_buffer_alignment = hasExt("GL_ARB_map_buffer_alignment", extensions); + GLAPILOADER_GL_ARB_map_buffer_range = hasExt("GL_ARB_map_buffer_range", extensions); + GLAPILOADER_GL_ARB_matrix_palette = hasExt("GL_ARB_matrix_palette", extensions); + GLAPILOADER_GL_ARB_multi_bind = hasExt("GL_ARB_multi_bind", extensions); + GLAPILOADER_GL_ARB_multi_draw_indirect = hasExt("GL_ARB_multi_draw_indirect", extensions); + GLAPILOADER_GL_ARB_multisample = hasExt("GL_ARB_multisample", extensions); + GLAPILOADER_GL_ARB_multitexture = hasExt("GL_ARB_multitexture", extensions); + GLAPILOADER_GL_ARB_occlusion_query = hasExt("GL_ARB_occlusion_query", extensions); + GLAPILOADER_GL_ARB_occlusion_query2 = hasExt("GL_ARB_occlusion_query2", extensions); + GLAPILOADER_GL_ARB_parallel_shader_compile = hasExt("GL_ARB_parallel_shader_compile", extensions); + GLAPILOADER_GL_ARB_pipeline_statistics_query = hasExt("GL_ARB_pipeline_statistics_query", extensions); + GLAPILOADER_GL_ARB_pixel_buffer_object = hasExt("GL_ARB_pixel_buffer_object", extensions); + GLAPILOADER_GL_ARB_point_parameters = hasExt("GL_ARB_point_parameters", extensions); + GLAPILOADER_GL_ARB_point_sprite = hasExt("GL_ARB_point_sprite", extensions); + GLAPILOADER_GL_ARB_polygon_offset_clamp = hasExt("GL_ARB_polygon_offset_clamp", extensions); + GLAPILOADER_GL_ARB_post_depth_coverage = hasExt("GL_ARB_post_depth_coverage", extensions); + GLAPILOADER_GL_ARB_program_interface_query = hasExt("GL_ARB_program_interface_query", extensions); + GLAPILOADER_GL_ARB_provoking_vertex = hasExt("GL_ARB_provoking_vertex", extensions); + GLAPILOADER_GL_ARB_query_buffer_object = hasExt("GL_ARB_query_buffer_object", extensions); + GLAPILOADER_GL_ARB_robust_buffer_access_behavior = hasExt("GL_ARB_robust_buffer_access_behavior", extensions); + GLAPILOADER_GL_ARB_robustness = hasExt("GL_ARB_robustness", extensions); + GLAPILOADER_GL_ARB_robustness_isolation = hasExt("GL_ARB_robustness_isolation", extensions); + GLAPILOADER_GL_ARB_sample_locations = hasExt("GL_ARB_sample_locations", extensions); + GLAPILOADER_GL_ARB_sample_shading = hasExt("GL_ARB_sample_shading", extensions); + GLAPILOADER_GL_ARB_sampler_objects = hasExt("GL_ARB_sampler_objects", extensions); + GLAPILOADER_GL_ARB_seamless_cube_map = hasExt("GL_ARB_seamless_cube_map", extensions); + GLAPILOADER_GL_ARB_seamless_cubemap_per_texture = hasExt("GL_ARB_seamless_cubemap_per_texture", extensions); + GLAPILOADER_GL_ARB_separate_shader_objects = hasExt("GL_ARB_separate_shader_objects", extensions); + GLAPILOADER_GL_ARB_shader_atomic_counter_ops = hasExt("GL_ARB_shader_atomic_counter_ops", extensions); + GLAPILOADER_GL_ARB_shader_atomic_counters = hasExt("GL_ARB_shader_atomic_counters", extensions); + GLAPILOADER_GL_ARB_shader_ballot = hasExt("GL_ARB_shader_ballot", extensions); + GLAPILOADER_GL_ARB_shader_bit_encoding = hasExt("GL_ARB_shader_bit_encoding", extensions); + GLAPILOADER_GL_ARB_shader_clock = hasExt("GL_ARB_shader_clock", extensions); + GLAPILOADER_GL_ARB_shader_draw_parameters = hasExt("GL_ARB_shader_draw_parameters", extensions); + GLAPILOADER_GL_ARB_shader_group_vote = hasExt("GL_ARB_shader_group_vote", extensions); + GLAPILOADER_GL_ARB_shader_image_load_store = hasExt("GL_ARB_shader_image_load_store", extensions); + GLAPILOADER_GL_ARB_shader_image_size = hasExt("GL_ARB_shader_image_size", extensions); + GLAPILOADER_GL_ARB_shader_objects = hasExt("GL_ARB_shader_objects", extensions); + GLAPILOADER_GL_ARB_shader_precision = hasExt("GL_ARB_shader_precision", extensions); + GLAPILOADER_GL_ARB_shader_stencil_export = hasExt("GL_ARB_shader_stencil_export", extensions); + GLAPILOADER_GL_ARB_shader_storage_buffer_object = hasExt("GL_ARB_shader_storage_buffer_object", extensions); + GLAPILOADER_GL_ARB_shader_subroutine = hasExt("GL_ARB_shader_subroutine", extensions); + GLAPILOADER_GL_ARB_shader_texture_image_samples = hasExt("GL_ARB_shader_texture_image_samples", extensions); + GLAPILOADER_GL_ARB_shader_texture_lod = hasExt("GL_ARB_shader_texture_lod", extensions); + GLAPILOADER_GL_ARB_shader_viewport_layer_array = hasExt("GL_ARB_shader_viewport_layer_array", extensions); + GLAPILOADER_GL_ARB_shading_language_100 = hasExt("GL_ARB_shading_language_100", extensions); + GLAPILOADER_GL_ARB_shading_language_420pack = hasExt("GL_ARB_shading_language_420pack", extensions); + GLAPILOADER_GL_ARB_shading_language_include = hasExt("GL_ARB_shading_language_include", extensions); + GLAPILOADER_GL_ARB_shading_language_packing = hasExt("GL_ARB_shading_language_packing", extensions); + GLAPILOADER_GL_ARB_shadow = hasExt("GL_ARB_shadow", extensions); + GLAPILOADER_GL_ARB_shadow_ambient = hasExt("GL_ARB_shadow_ambient", extensions); + GLAPILOADER_GL_ARB_sparse_buffer = hasExt("GL_ARB_sparse_buffer", extensions); + GLAPILOADER_GL_ARB_sparse_texture = hasExt("GL_ARB_sparse_texture", extensions); + GLAPILOADER_GL_ARB_sparse_texture2 = hasExt("GL_ARB_sparse_texture2", extensions); + GLAPILOADER_GL_ARB_sparse_texture_clamp = hasExt("GL_ARB_sparse_texture_clamp", extensions); + GLAPILOADER_GL_ARB_spirv_extensions = hasExt("GL_ARB_spirv_extensions", extensions); + GLAPILOADER_GL_ARB_stencil_texturing = hasExt("GL_ARB_stencil_texturing", extensions); + GLAPILOADER_GL_ARB_sync = hasExt("GL_ARB_sync", extensions); + GLAPILOADER_GL_ARB_tessellation_shader = hasExt("GL_ARB_tessellation_shader", extensions); + GLAPILOADER_GL_ARB_texture_barrier = hasExt("GL_ARB_texture_barrier", extensions); + GLAPILOADER_GL_ARB_texture_border_clamp = hasExt("GL_ARB_texture_border_clamp", extensions); + GLAPILOADER_GL_ARB_texture_buffer_object = hasExt("GL_ARB_texture_buffer_object", extensions); + GLAPILOADER_GL_ARB_texture_buffer_object_rgb32 = hasExt("GL_ARB_texture_buffer_object_rgb32", extensions); + GLAPILOADER_GL_ARB_texture_buffer_range = hasExt("GL_ARB_texture_buffer_range", extensions); + GLAPILOADER_GL_ARB_texture_compression = hasExt("GL_ARB_texture_compression", extensions); + GLAPILOADER_GL_ARB_texture_compression_bptc = hasExt("GL_ARB_texture_compression_bptc", extensions); + GLAPILOADER_GL_ARB_texture_compression_rgtc = hasExt("GL_ARB_texture_compression_rgtc", extensions); + GLAPILOADER_GL_ARB_texture_cube_map = hasExt("GL_ARB_texture_cube_map", extensions); + GLAPILOADER_GL_ARB_texture_cube_map_array = hasExt("GL_ARB_texture_cube_map_array", extensions); + GLAPILOADER_GL_ARB_texture_env_add = hasExt("GL_ARB_texture_env_add", extensions); + GLAPILOADER_GL_ARB_texture_env_combine = hasExt("GL_ARB_texture_env_combine", extensions); + GLAPILOADER_GL_ARB_texture_env_crossbar = hasExt("GL_ARB_texture_env_crossbar", extensions); + GLAPILOADER_GL_ARB_texture_env_dot3 = hasExt("GL_ARB_texture_env_dot3", extensions); + GLAPILOADER_GL_ARB_texture_filter_anisotropic = hasExt("GL_ARB_texture_filter_anisotropic", extensions); + GLAPILOADER_GL_ARB_texture_filter_minmax = hasExt("GL_ARB_texture_filter_minmax", extensions); + GLAPILOADER_GL_ARB_texture_float = hasExt("GL_ARB_texture_float", extensions); + GLAPILOADER_GL_ARB_texture_gather = hasExt("GL_ARB_texture_gather", extensions); + GLAPILOADER_GL_ARB_texture_mirror_clamp_to_edge = hasExt("GL_ARB_texture_mirror_clamp_to_edge", extensions); + GLAPILOADER_GL_ARB_texture_mirrored_repeat = hasExt("GL_ARB_texture_mirrored_repeat", extensions); + GLAPILOADER_GL_ARB_texture_multisample = hasExt("GL_ARB_texture_multisample", extensions); + GLAPILOADER_GL_ARB_texture_non_power_of_two = hasExt("GL_ARB_texture_non_power_of_two", extensions); + GLAPILOADER_GL_ARB_texture_query_levels = hasExt("GL_ARB_texture_query_levels", extensions); + GLAPILOADER_GL_ARB_texture_query_lod = hasExt("GL_ARB_texture_query_lod", extensions); + GLAPILOADER_GL_ARB_texture_rectangle = hasExt("GL_ARB_texture_rectangle", extensions); + GLAPILOADER_GL_ARB_texture_rg = hasExt("GL_ARB_texture_rg", extensions); + GLAPILOADER_GL_ARB_texture_rgb10_a2ui = hasExt("GL_ARB_texture_rgb10_a2ui", extensions); + GLAPILOADER_GL_ARB_texture_stencil8 = hasExt("GL_ARB_texture_stencil8", extensions); + GLAPILOADER_GL_ARB_texture_storage = hasExt("GL_ARB_texture_storage", extensions); + GLAPILOADER_GL_ARB_texture_storage_multisample = hasExt("GL_ARB_texture_storage_multisample", extensions); + GLAPILOADER_GL_ARB_texture_swizzle = hasExt("GL_ARB_texture_swizzle", extensions); + GLAPILOADER_GL_ARB_texture_view = hasExt("GL_ARB_texture_view", extensions); + GLAPILOADER_GL_ARB_timer_query = hasExt("GL_ARB_timer_query", extensions); + GLAPILOADER_GL_ARB_transform_feedback2 = hasExt("GL_ARB_transform_feedback2", extensions); + GLAPILOADER_GL_ARB_transform_feedback3 = hasExt("GL_ARB_transform_feedback3", extensions); + GLAPILOADER_GL_ARB_transform_feedback_instanced = hasExt("GL_ARB_transform_feedback_instanced", extensions); + GLAPILOADER_GL_ARB_transform_feedback_overflow_query = hasExt("GL_ARB_transform_feedback_overflow_query", extensions); + GLAPILOADER_GL_ARB_transpose_matrix = hasExt("GL_ARB_transpose_matrix", extensions); + GLAPILOADER_GL_ARB_uniform_buffer_object = hasExt("GL_ARB_uniform_buffer_object", extensions); + GLAPILOADER_GL_ARB_vertex_array_bgra = hasExt("GL_ARB_vertex_array_bgra", extensions); + GLAPILOADER_GL_ARB_vertex_array_object = hasExt("GL_ARB_vertex_array_object", extensions); + GLAPILOADER_GL_ARB_vertex_attrib_64bit = hasExt("GL_ARB_vertex_attrib_64bit", extensions); + GLAPILOADER_GL_ARB_vertex_attrib_binding = hasExt("GL_ARB_vertex_attrib_binding", extensions); + GLAPILOADER_GL_ARB_vertex_blend = hasExt("GL_ARB_vertex_blend", extensions); + GLAPILOADER_GL_ARB_vertex_buffer_object = hasExt("GL_ARB_vertex_buffer_object", extensions); + GLAPILOADER_GL_ARB_vertex_program = hasExt("GL_ARB_vertex_program", extensions); + GLAPILOADER_GL_ARB_vertex_shader = hasExt("GL_ARB_vertex_shader", extensions); + GLAPILOADER_GL_ARB_vertex_type_10f_11f_11f_rev = hasExt("GL_ARB_vertex_type_10f_11f_11f_rev", extensions); + GLAPILOADER_GL_ARB_vertex_type_2_10_10_10_rev = hasExt("GL_ARB_vertex_type_2_10_10_10_rev", extensions); + GLAPILOADER_GL_ARB_viewport_array = hasExt("GL_ARB_viewport_array", extensions); + GLAPILOADER_GL_ARB_window_pos = hasExt("GL_ARB_window_pos", extensions); + GLAPILOADER_GL_EXT_422_pixels = hasExt("GL_EXT_422_pixels", extensions); + GLAPILOADER_GL_EXT_EGL_image_storage = hasExt("GL_EXT_EGL_image_storage", extensions); + GLAPILOADER_GL_EXT_EGL_sync = hasExt("GL_EXT_EGL_sync", extensions); + GLAPILOADER_GL_EXT_abgr = hasExt("GL_EXT_abgr", extensions); + GLAPILOADER_GL_EXT_bgra = hasExt("GL_EXT_bgra", extensions); + GLAPILOADER_GL_EXT_bindable_uniform = hasExt("GL_EXT_bindable_uniform", extensions); + GLAPILOADER_GL_EXT_blend_color = hasExt("GL_EXT_blend_color", extensions); + GLAPILOADER_GL_EXT_blend_equation_separate = hasExt("GL_EXT_blend_equation_separate", extensions); + GLAPILOADER_GL_EXT_blend_func_separate = hasExt("GL_EXT_blend_func_separate", extensions); + GLAPILOADER_GL_EXT_blend_logic_op = hasExt("GL_EXT_blend_logic_op", extensions); + GLAPILOADER_GL_EXT_blend_minmax = hasExt("GL_EXT_blend_minmax", extensions); + GLAPILOADER_GL_EXT_blend_subtract = hasExt("GL_EXT_blend_subtract", extensions); + GLAPILOADER_GL_EXT_clip_volume_hint = hasExt("GL_EXT_clip_volume_hint", extensions); + GLAPILOADER_GL_EXT_cmyka = hasExt("GL_EXT_cmyka", extensions); + GLAPILOADER_GL_EXT_color_subtable = hasExt("GL_EXT_color_subtable", extensions); + GLAPILOADER_GL_EXT_compiled_vertex_array = hasExt("GL_EXT_compiled_vertex_array", extensions); + GLAPILOADER_GL_EXT_convolution = hasExt("GL_EXT_convolution", extensions); + GLAPILOADER_GL_EXT_coordinate_frame = hasExt("GL_EXT_coordinate_frame", extensions); + GLAPILOADER_GL_EXT_copy_texture = hasExt("GL_EXT_copy_texture", extensions); + GLAPILOADER_GL_EXT_cull_vertex = hasExt("GL_EXT_cull_vertex", extensions); + GLAPILOADER_GL_EXT_debug_label = hasExt("GL_EXT_debug_label", extensions); + GLAPILOADER_GL_EXT_debug_marker = hasExt("GL_EXT_debug_marker", extensions); + GLAPILOADER_GL_EXT_depth_bounds_test = hasExt("GL_EXT_depth_bounds_test", extensions); + GLAPILOADER_GL_EXT_direct_state_access = hasExt("GL_EXT_direct_state_access", extensions); + GLAPILOADER_GL_EXT_draw_buffers2 = hasExt("GL_EXT_draw_buffers2", extensions); + GLAPILOADER_GL_EXT_draw_instanced = hasExt("GL_EXT_draw_instanced", extensions); + GLAPILOADER_GL_EXT_draw_range_elements = hasExt("GL_EXT_draw_range_elements", extensions); + GLAPILOADER_GL_EXT_external_buffer = hasExt("GL_EXT_external_buffer", extensions); + GLAPILOADER_GL_EXT_fog_coord = hasExt("GL_EXT_fog_coord", extensions); + GLAPILOADER_GL_EXT_framebuffer_blit = hasExt("GL_EXT_framebuffer_blit", extensions); + GLAPILOADER_GL_EXT_framebuffer_multisample = hasExt("GL_EXT_framebuffer_multisample", extensions); + GLAPILOADER_GL_EXT_framebuffer_multisample_blit_scaled = hasExt("GL_EXT_framebuffer_multisample_blit_scaled", extensions); + GLAPILOADER_GL_EXT_framebuffer_object = hasExt("GL_EXT_framebuffer_object", extensions); + GLAPILOADER_GL_EXT_framebuffer_sRGB = hasExt("GL_EXT_framebuffer_sRGB", extensions); + GLAPILOADER_GL_EXT_geometry_shader4 = hasExt("GL_EXT_geometry_shader4", extensions); + GLAPILOADER_GL_EXT_gpu_program_parameters = hasExt("GL_EXT_gpu_program_parameters", extensions); + GLAPILOADER_GL_EXT_gpu_shader4 = hasExt("GL_EXT_gpu_shader4", extensions); + GLAPILOADER_GL_EXT_histogram = hasExt("GL_EXT_histogram", extensions); + GLAPILOADER_GL_EXT_index_array_formats = hasExt("GL_EXT_index_array_formats", extensions); + GLAPILOADER_GL_EXT_index_func = hasExt("GL_EXT_index_func", extensions); + GLAPILOADER_GL_EXT_index_material = hasExt("GL_EXT_index_material", extensions); + GLAPILOADER_GL_EXT_index_texture = hasExt("GL_EXT_index_texture", extensions); + GLAPILOADER_GL_EXT_light_texture = hasExt("GL_EXT_light_texture", extensions); + GLAPILOADER_GL_EXT_memory_object = hasExt("GL_EXT_memory_object", extensions); + GLAPILOADER_GL_EXT_memory_object_fd = hasExt("GL_EXT_memory_object_fd", extensions); + GLAPILOADER_GL_EXT_memory_object_win32 = hasExt("GL_EXT_memory_object_win32", extensions); + GLAPILOADER_GL_EXT_misc_attribute = hasExt("GL_EXT_misc_attribute", extensions); + GLAPILOADER_GL_EXT_multi_draw_arrays = hasExt("GL_EXT_multi_draw_arrays", extensions); + GLAPILOADER_GL_EXT_multisample = hasExt("GL_EXT_multisample", extensions); + GLAPILOADER_GL_EXT_multiview_tessellation_geometry_shader = hasExt("GL_EXT_multiview_tessellation_geometry_shader", extensions); + GLAPILOADER_GL_EXT_multiview_texture_multisample = hasExt("GL_EXT_multiview_texture_multisample", extensions); + GLAPILOADER_GL_EXT_multiview_timer_query = hasExt("GL_EXT_multiview_timer_query", extensions); + GLAPILOADER_GL_EXT_packed_depth_stencil = hasExt("GL_EXT_packed_depth_stencil", extensions); + GLAPILOADER_GL_EXT_packed_float = hasExt("GL_EXT_packed_float", extensions); + GLAPILOADER_GL_EXT_packed_pixels = hasExt("GL_EXT_packed_pixels", extensions); + GLAPILOADER_GL_EXT_paletted_texture = hasExt("GL_EXT_paletted_texture", extensions); + GLAPILOADER_GL_EXT_pixel_buffer_object = hasExt("GL_EXT_pixel_buffer_object", extensions); + GLAPILOADER_GL_EXT_pixel_transform = hasExt("GL_EXT_pixel_transform", extensions); + GLAPILOADER_GL_EXT_pixel_transform_color_table = hasExt("GL_EXT_pixel_transform_color_table", extensions); + GLAPILOADER_GL_EXT_point_parameters = hasExt("GL_EXT_point_parameters", extensions); + GLAPILOADER_GL_EXT_polygon_offset = hasExt("GL_EXT_polygon_offset", extensions); + GLAPILOADER_GL_EXT_polygon_offset_clamp = hasExt("GL_EXT_polygon_offset_clamp", extensions); + GLAPILOADER_GL_EXT_post_depth_coverage = hasExt("GL_EXT_post_depth_coverage", extensions); + GLAPILOADER_GL_EXT_provoking_vertex = hasExt("GL_EXT_provoking_vertex", extensions); + GLAPILOADER_GL_EXT_raster_multisample = hasExt("GL_EXT_raster_multisample", extensions); + GLAPILOADER_GL_EXT_rescale_normal = hasExt("GL_EXT_rescale_normal", extensions); + GLAPILOADER_GL_EXT_semaphore = hasExt("GL_EXT_semaphore", extensions); + GLAPILOADER_GL_EXT_semaphore_fd = hasExt("GL_EXT_semaphore_fd", extensions); + GLAPILOADER_GL_EXT_semaphore_win32 = hasExt("GL_EXT_semaphore_win32", extensions); + GLAPILOADER_GL_EXT_secondary_color = hasExt("GL_EXT_secondary_color", extensions); + GLAPILOADER_GL_EXT_separate_shader_objects = hasExt("GL_EXT_separate_shader_objects", extensions); + GLAPILOADER_GL_EXT_separate_specular_color = hasExt("GL_EXT_separate_specular_color", extensions); + GLAPILOADER_GL_EXT_shader_framebuffer_fetch = hasExt("GL_EXT_shader_framebuffer_fetch", extensions); + GLAPILOADER_GL_EXT_shader_framebuffer_fetch_non_coherent = hasExt("GL_EXT_shader_framebuffer_fetch_non_coherent", extensions); + GLAPILOADER_GL_EXT_shader_image_load_formatted = hasExt("GL_EXT_shader_image_load_formatted", extensions); + GLAPILOADER_GL_EXT_shader_image_load_store = hasExt("GL_EXT_shader_image_load_store", extensions); + GLAPILOADER_GL_EXT_shader_integer_mix = hasExt("GL_EXT_shader_integer_mix", extensions); + GLAPILOADER_GL_EXT_shadow_funcs = hasExt("GL_EXT_shadow_funcs", extensions); + GLAPILOADER_GL_EXT_shared_texture_palette = hasExt("GL_EXT_shared_texture_palette", extensions); + GLAPILOADER_GL_EXT_sparse_texture2 = hasExt("GL_EXT_sparse_texture2", extensions); + GLAPILOADER_GL_EXT_stencil_clear_tag = hasExt("GL_EXT_stencil_clear_tag", extensions); + GLAPILOADER_GL_EXT_stencil_two_side = hasExt("GL_EXT_stencil_two_side", extensions); + GLAPILOADER_GL_EXT_stencil_wrap = hasExt("GL_EXT_stencil_wrap", extensions); + GLAPILOADER_GL_EXT_subtexture = hasExt("GL_EXT_subtexture", extensions); + GLAPILOADER_GL_EXT_texture = hasExt("GL_EXT_texture", extensions); + GLAPILOADER_GL_EXT_texture3D = hasExt("GL_EXT_texture3D", extensions); + GLAPILOADER_GL_EXT_texture_array = hasExt("GL_EXT_texture_array", extensions); + GLAPILOADER_GL_EXT_texture_buffer_object = hasExt("GL_EXT_texture_buffer_object", extensions); + GLAPILOADER_GL_EXT_texture_compression_latc = hasExt("GL_EXT_texture_compression_latc", extensions); + GLAPILOADER_GL_EXT_texture_compression_rgtc = hasExt("GL_EXT_texture_compression_rgtc", extensions); + GLAPILOADER_GL_EXT_texture_compression_s3tc = hasExt("GL_EXT_texture_compression_s3tc", extensions); + GLAPILOADER_GL_EXT_texture_cube_map = hasExt("GL_EXT_texture_cube_map", extensions); + GLAPILOADER_GL_EXT_texture_env_add = hasExt("GL_EXT_texture_env_add", extensions); + GLAPILOADER_GL_EXT_texture_env_combine = hasExt("GL_EXT_texture_env_combine", extensions); + GLAPILOADER_GL_EXT_texture_env_dot3 = hasExt("GL_EXT_texture_env_dot3", extensions); + GLAPILOADER_GL_EXT_texture_filter_anisotropic = hasExt("GL_EXT_texture_filter_anisotropic", extensions); + GLAPILOADER_GL_EXT_texture_filter_minmax = hasExt("GL_EXT_texture_filter_minmax", extensions); + GLAPILOADER_GL_EXT_texture_integer = hasExt("GL_EXT_texture_integer", extensions); + GLAPILOADER_GL_EXT_texture_lod_bias = hasExt("GL_EXT_texture_lod_bias", extensions); + GLAPILOADER_GL_EXT_texture_mirror_clamp = hasExt("GL_EXT_texture_mirror_clamp", extensions); + GLAPILOADER_GL_EXT_texture_object = hasExt("GL_EXT_texture_object", extensions); + GLAPILOADER_GL_EXT_texture_perturb_normal = hasExt("GL_EXT_texture_perturb_normal", extensions); + GLAPILOADER_GL_EXT_texture_sRGB = hasExt("GL_EXT_texture_sRGB", extensions); + GLAPILOADER_GL_EXT_texture_sRGB_R8 = hasExt("GL_EXT_texture_sRGB_R8", extensions); + GLAPILOADER_GL_EXT_texture_sRGB_decode = hasExt("GL_EXT_texture_sRGB_decode", extensions); + GLAPILOADER_GL_EXT_texture_shared_exponent = hasExt("GL_EXT_texture_shared_exponent", extensions); + GLAPILOADER_GL_EXT_texture_snorm = hasExt("GL_EXT_texture_snorm", extensions); + GLAPILOADER_GL_EXT_texture_swizzle = hasExt("GL_EXT_texture_swizzle", extensions); + GLAPILOADER_GL_EXT_timer_query = hasExt("GL_EXT_timer_query", extensions); + GLAPILOADER_GL_EXT_transform_feedback = hasExt("GL_EXT_transform_feedback", extensions); + GLAPILOADER_GL_EXT_vertex_array = hasExt("GL_EXT_vertex_array", extensions); + GLAPILOADER_GL_EXT_vertex_array_bgra = hasExt("GL_EXT_vertex_array_bgra", extensions); + GLAPILOADER_GL_EXT_vertex_attrib_64bit = hasExt("GL_EXT_vertex_attrib_64bit", extensions); + GLAPILOADER_GL_EXT_vertex_shader = hasExt("GL_EXT_vertex_shader", extensions); + GLAPILOADER_GL_EXT_vertex_weighting = hasExt("GL_EXT_vertex_weighting", extensions); + GLAPILOADER_GL_EXT_win32_keyed_mutex = hasExt("GL_EXT_win32_keyed_mutex", extensions); + GLAPILOADER_GL_EXT_window_rectangles = hasExt("GL_EXT_window_rectangles", extensions); + GLAPILOADER_GL_EXT_x11_sync_object = hasExt("GL_EXT_x11_sync_object", extensions); + GLAPILOADER_GL_INTEL_conservative_rasterization = hasExt("GL_INTEL_conservative_rasterization", extensions); + GLAPILOADER_GL_INTEL_fragment_shader_ordering = hasExt("GL_INTEL_fragment_shader_ordering", extensions); + GLAPILOADER_GL_INTEL_framebuffer_CMAA = hasExt("GL_INTEL_framebuffer_CMAA", extensions); + GLAPILOADER_GL_INTEL_map_texture = hasExt("GL_INTEL_map_texture", extensions); + GLAPILOADER_GL_INTEL_blackhole_render = hasExt("GL_INTEL_blackhole_render", extensions); + GLAPILOADER_GL_INTEL_parallel_arrays = hasExt("GL_INTEL_parallel_arrays", extensions); + GLAPILOADER_GL_INTEL_performance_query = hasExt("GL_INTEL_performance_query", extensions); + GLAPILOADER_GL_KHR_blend_equation_advanced = hasExt("GL_KHR_blend_equation_advanced", extensions); + GLAPILOADER_GL_KHR_blend_equation_advanced_coherent = hasExt("GL_KHR_blend_equation_advanced_coherent", extensions); + GLAPILOADER_GL_KHR_context_flush_control = hasExt("GL_KHR_context_flush_control", extensions); + GLAPILOADER_GL_KHR_debug = hasExt("GL_KHR_debug", extensions); + GLAPILOADER_GL_KHR_no_error = hasExt("GL_KHR_no_error", extensions); + GLAPILOADER_GL_KHR_robust_buffer_access_behavior = hasExt("GL_KHR_robust_buffer_access_behavior", extensions); + GLAPILOADER_GL_KHR_robustness = hasExt("GL_KHR_robustness", extensions); + GLAPILOADER_GL_KHR_shader_subgroup = hasExt("GL_KHR_shader_subgroup", extensions); + GLAPILOADER_GL_KHR_texture_compression_astc_hdr = hasExt("GL_KHR_texture_compression_astc_hdr", extensions); + GLAPILOADER_GL_KHR_texture_compression_astc_ldr = hasExt("GL_KHR_texture_compression_astc_ldr", extensions); + GLAPILOADER_GL_KHR_texture_compression_astc_sliced_3d = hasExt("GL_KHR_texture_compression_astc_sliced_3d", extensions); + GLAPILOADER_GL_KHR_parallel_shader_compile = hasExt("GL_KHR_parallel_shader_compile", extensions); + GLAPILOADER_GL_NV_alpha_to_coverage_dither_control = hasExt("GL_NV_alpha_to_coverage_dither_control", extensions); + GLAPILOADER_GL_NV_bindless_multi_draw_indirect = hasExt("GL_NV_bindless_multi_draw_indirect", extensions); + GLAPILOADER_GL_NV_bindless_multi_draw_indirect_count = hasExt("GL_NV_bindless_multi_draw_indirect_count", extensions); + GLAPILOADER_GL_NV_bindless_texture = hasExt("GL_NV_bindless_texture", extensions); + GLAPILOADER_GL_NV_blend_equation_advanced = hasExt("GL_NV_blend_equation_advanced", extensions); + GLAPILOADER_GL_NV_blend_equation_advanced_coherent = hasExt("GL_NV_blend_equation_advanced_coherent", extensions); + GLAPILOADER_GL_NV_blend_minmax_factor = hasExt("GL_NV_blend_minmax_factor", extensions); + GLAPILOADER_GL_NV_blend_square = hasExt("GL_NV_blend_square", extensions); + GLAPILOADER_GL_NV_clip_space_w_scaling = hasExt("GL_NV_clip_space_w_scaling", extensions); + GLAPILOADER_GL_NV_command_list = hasExt("GL_NV_command_list", extensions); + GLAPILOADER_GL_NV_compute_program5 = hasExt("GL_NV_compute_program5", extensions); + GLAPILOADER_GL_NV_compute_shader_derivatives = hasExt("GL_NV_compute_shader_derivatives", extensions); + GLAPILOADER_GL_NV_conditional_render = hasExt("GL_NV_conditional_render", extensions); + GLAPILOADER_GL_NV_conservative_raster = hasExt("GL_NV_conservative_raster", extensions); + GLAPILOADER_GL_NV_conservative_raster_dilate = hasExt("GL_NV_conservative_raster_dilate", extensions); + GLAPILOADER_GL_NV_conservative_raster_pre_snap = hasExt("GL_NV_conservative_raster_pre_snap", extensions); + GLAPILOADER_GL_NV_conservative_raster_pre_snap_triangles = hasExt("GL_NV_conservative_raster_pre_snap_triangles", extensions); + GLAPILOADER_GL_NV_conservative_raster_underestimation = hasExt("GL_NV_conservative_raster_underestimation", extensions); + GLAPILOADER_GL_NV_copy_depth_to_color = hasExt("GL_NV_copy_depth_to_color", extensions); + GLAPILOADER_GL_NV_copy_image = hasExt("GL_NV_copy_image", extensions); + GLAPILOADER_GL_NV_deep_texture3D = hasExt("GL_NV_deep_texture3D", extensions); + GLAPILOADER_GL_NV_depth_buffer_float = hasExt("GL_NV_depth_buffer_float", extensions); + GLAPILOADER_GL_NV_depth_clamp = hasExt("GL_NV_depth_clamp", extensions); + GLAPILOADER_GL_NV_draw_texture = hasExt("GL_NV_draw_texture", extensions); + GLAPILOADER_GL_NV_draw_vulkan_image = hasExt("GL_NV_draw_vulkan_image", extensions); + GLAPILOADER_GL_NV_evaluators = hasExt("GL_NV_evaluators", extensions); + GLAPILOADER_GL_NV_explicit_multisample = hasExt("GL_NV_explicit_multisample", extensions); + GLAPILOADER_GL_NV_fence = hasExt("GL_NV_fence", extensions); + GLAPILOADER_GL_NV_fill_rectangle = hasExt("GL_NV_fill_rectangle", extensions); + GLAPILOADER_GL_NV_float_buffer = hasExt("GL_NV_float_buffer", extensions); + GLAPILOADER_GL_NV_fog_distance = hasExt("GL_NV_fog_distance", extensions); + GLAPILOADER_GL_NV_fragment_coverage_to_color = hasExt("GL_NV_fragment_coverage_to_color", extensions); + GLAPILOADER_GL_NV_fragment_program = hasExt("GL_NV_fragment_program", extensions); + GLAPILOADER_GL_NV_fragment_program2 = hasExt("GL_NV_fragment_program2", extensions); + GLAPILOADER_GL_NV_fragment_program4 = hasExt("GL_NV_fragment_program4", extensions); + GLAPILOADER_GL_NV_fragment_program_option = hasExt("GL_NV_fragment_program_option", extensions); + GLAPILOADER_GL_NV_fragment_shader_barycentric = hasExt("GL_NV_fragment_shader_barycentric", extensions); + GLAPILOADER_GL_NV_fragment_shader_interlock = hasExt("GL_NV_fragment_shader_interlock", extensions); + GLAPILOADER_GL_NV_framebuffer_mixed_samples = hasExt("GL_NV_framebuffer_mixed_samples", extensions); + GLAPILOADER_GL_NV_framebuffer_multisample_coverage = hasExt("GL_NV_framebuffer_multisample_coverage", extensions); + GLAPILOADER_GL_NV_geometry_program4 = hasExt("GL_NV_geometry_program4", extensions); + GLAPILOADER_GL_NV_geometry_shader4 = hasExt("GL_NV_geometry_shader4", extensions); + GLAPILOADER_GL_NV_geometry_shader_passthrough = hasExt("GL_NV_geometry_shader_passthrough", extensions); + GLAPILOADER_GL_NV_gpu_program4 = hasExt("GL_NV_gpu_program4", extensions); + GLAPILOADER_GL_NV_gpu_program5 = hasExt("GL_NV_gpu_program5", extensions); + GLAPILOADER_GL_NV_gpu_program5_mem_extended = hasExt("GL_NV_gpu_program5_mem_extended", extensions); + GLAPILOADER_GL_NV_gpu_shader5 = hasExt("GL_NV_gpu_shader5", extensions); + GLAPILOADER_GL_NV_half_float = hasExt("GL_NV_half_float", extensions); + GLAPILOADER_GL_NV_internalformat_sample_query = hasExt("GL_NV_internalformat_sample_query", extensions); + GLAPILOADER_GL_NV_light_max_exponent = hasExt("GL_NV_light_max_exponent", extensions); + GLAPILOADER_GL_NV_gpu_multicast = hasExt("GL_NV_gpu_multicast", extensions); + GLAPILOADER_GL_NV_memory_attachment = hasExt("GL_NV_memory_attachment", extensions); + GLAPILOADER_GL_NV_mesh_shader = hasExt("GL_NV_mesh_shader", extensions); + GLAPILOADER_GL_NV_multisample_coverage = hasExt("GL_NV_multisample_coverage", extensions); + GLAPILOADER_GL_NV_multisample_filter_hint = hasExt("GL_NV_multisample_filter_hint", extensions); + GLAPILOADER_GL_NV_occlusion_query = hasExt("GL_NV_occlusion_query", extensions); + GLAPILOADER_GL_NV_packed_depth_stencil = hasExt("GL_NV_packed_depth_stencil", extensions); + GLAPILOADER_GL_NV_parameter_buffer_object = hasExt("GL_NV_parameter_buffer_object", extensions); + GLAPILOADER_GL_NV_parameter_buffer_object2 = hasExt("GL_NV_parameter_buffer_object2", extensions); + GLAPILOADER_GL_NV_path_rendering = hasExt("GL_NV_path_rendering", extensions); + GLAPILOADER_GL_NV_path_rendering_shared_edge = hasExt("GL_NV_path_rendering_shared_edge", extensions); + GLAPILOADER_GL_NV_pixel_data_range = hasExt("GL_NV_pixel_data_range", extensions); + GLAPILOADER_GL_NV_point_sprite = hasExt("GL_NV_point_sprite", extensions); + GLAPILOADER_GL_NV_present_video = hasExt("GL_NV_present_video", extensions); + GLAPILOADER_GL_NV_primitive_restart = hasExt("GL_NV_primitive_restart", extensions); + GLAPILOADER_GL_NV_query_resource = hasExt("GL_NV_query_resource", extensions); + GLAPILOADER_GL_NV_query_resource_tag = hasExt("GL_NV_query_resource_tag", extensions); + GLAPILOADER_GL_NV_register_combiners = hasExt("GL_NV_register_combiners", extensions); + GLAPILOADER_GL_NV_register_combiners2 = hasExt("GL_NV_register_combiners2", extensions); + GLAPILOADER_GL_NV_representative_fragment_test = hasExt("GL_NV_representative_fragment_test", extensions); + GLAPILOADER_GL_NV_robustness_video_memory_purge = hasExt("GL_NV_robustness_video_memory_purge", extensions); + GLAPILOADER_GL_NV_sample_locations = hasExt("GL_NV_sample_locations", extensions); + GLAPILOADER_GL_NV_sample_mask_override_coverage = hasExt("GL_NV_sample_mask_override_coverage", extensions); + GLAPILOADER_GL_NV_scissor_exclusive = hasExt("GL_NV_scissor_exclusive", extensions); + GLAPILOADER_GL_NV_shader_atomic_counters = hasExt("GL_NV_shader_atomic_counters", extensions); + GLAPILOADER_GL_NV_shader_atomic_float = hasExt("GL_NV_shader_atomic_float", extensions); + GLAPILOADER_GL_NV_shader_atomic_float64 = hasExt("GL_NV_shader_atomic_float64", extensions); + GLAPILOADER_GL_NV_shader_atomic_fp16_vector = hasExt("GL_NV_shader_atomic_fp16_vector", extensions); + GLAPILOADER_GL_NV_shader_atomic_int64 = hasExt("GL_NV_shader_atomic_int64", extensions); + GLAPILOADER_GL_NV_shader_buffer_load = hasExt("GL_NV_shader_buffer_load", extensions); + GLAPILOADER_GL_NV_shader_buffer_store = hasExt("GL_NV_shader_buffer_store", extensions); + GLAPILOADER_GL_NV_shader_storage_buffer_object = hasExt("GL_NV_shader_storage_buffer_object", extensions); + GLAPILOADER_GL_NV_shader_subgroup_partitioned = hasExt("GL_NV_shader_subgroup_partitioned", extensions); + GLAPILOADER_GL_NV_shader_texture_footprint = hasExt("GL_NV_shader_texture_footprint", extensions); + GLAPILOADER_GL_NV_shader_thread_group = hasExt("GL_NV_shader_thread_group", extensions); + GLAPILOADER_GL_NV_shader_thread_shuffle = hasExt("GL_NV_shader_thread_shuffle", extensions); + GLAPILOADER_GL_NV_shading_rate_image = hasExt("GL_NV_shading_rate_image", extensions); + GLAPILOADER_GL_NV_stereo_view_rendering = hasExt("GL_NV_stereo_view_rendering", extensions); + GLAPILOADER_GL_NV_tessellation_program5 = hasExt("GL_NV_tessellation_program5", extensions); + GLAPILOADER_GL_NV_texgen_emboss = hasExt("GL_NV_texgen_emboss", extensions); + GLAPILOADER_GL_NV_texgen_reflection = hasExt("GL_NV_texgen_reflection", extensions); + GLAPILOADER_GL_NV_texture_barrier = hasExt("GL_NV_texture_barrier", extensions); + GLAPILOADER_GL_NV_texture_compression_vtc = hasExt("GL_NV_texture_compression_vtc", extensions); + GLAPILOADER_GL_NV_texture_env_combine4 = hasExt("GL_NV_texture_env_combine4", extensions); + GLAPILOADER_GL_NV_texture_expand_normal = hasExt("GL_NV_texture_expand_normal", extensions); + GLAPILOADER_GL_NV_texture_multisample = hasExt("GL_NV_texture_multisample", extensions); + GLAPILOADER_GL_NV_texture_rectangle = hasExt("GL_NV_texture_rectangle", extensions); + GLAPILOADER_GL_NV_texture_rectangle_compressed = hasExt("GL_NV_texture_rectangle_compressed", extensions); + GLAPILOADER_GL_NV_texture_shader = hasExt("GL_NV_texture_shader", extensions); + GLAPILOADER_GL_NV_texture_shader2 = hasExt("GL_NV_texture_shader2", extensions); + GLAPILOADER_GL_NV_texture_shader3 = hasExt("GL_NV_texture_shader3", extensions); + GLAPILOADER_GL_NV_transform_feedback = hasExt("GL_NV_transform_feedback", extensions); + GLAPILOADER_GL_NV_transform_feedback2 = hasExt("GL_NV_transform_feedback2", extensions); + GLAPILOADER_GL_NV_uniform_buffer_unified_memory = hasExt("GL_NV_uniform_buffer_unified_memory", extensions); + GLAPILOADER_GL_NV_vdpau_interop = hasExt("GL_NV_vdpau_interop", extensions); + GLAPILOADER_GL_NV_vdpau_interop2 = hasExt("GL_NV_vdpau_interop2", extensions); + GLAPILOADER_GL_NV_vertex_array_range = hasExt("GL_NV_vertex_array_range", extensions); + GLAPILOADER_GL_NV_vertex_array_range2 = hasExt("GL_NV_vertex_array_range2", extensions); + GLAPILOADER_GL_NV_vertex_attrib_integer_64bit = hasExt("GL_NV_vertex_attrib_integer_64bit", extensions); + GLAPILOADER_GL_NV_vertex_buffer_unified_memory = hasExt("GL_NV_vertex_buffer_unified_memory", extensions); + GLAPILOADER_GL_NV_vertex_program = hasExt("GL_NV_vertex_program", extensions); + GLAPILOADER_GL_NV_vertex_program1_1 = hasExt("GL_NV_vertex_program1_1", extensions); + GLAPILOADER_GL_NV_vertex_program2 = hasExt("GL_NV_vertex_program2", extensions); + GLAPILOADER_GL_NV_vertex_program2_option = hasExt("GL_NV_vertex_program2_option", extensions); + GLAPILOADER_GL_NV_vertex_program3 = hasExt("GL_NV_vertex_program3", extensions); + GLAPILOADER_GL_NV_vertex_program4 = hasExt("GL_NV_vertex_program4", extensions); + GLAPILOADER_GL_NV_video_capture = hasExt("GL_NV_video_capture", extensions); + GLAPILOADER_GL_NV_viewport_array2 = hasExt("GL_NV_viewport_array2", extensions); + GLAPILOADER_GL_NV_viewport_swizzle = hasExt("GL_NV_viewport_swizzle", extensions); + GLAPILOADER_GL_EXT_texture_shadow_lod = hasExt("GL_EXT_texture_shadow_lod", extensions); glAccum = (PFNGLACCUMPROC) loadFunction("glAccum"); glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC) loadFunction("glActiveProgramEXT"); @@ -6288,9 +6322,6 @@ static bool loadSymbols() glSignalVkSemaphoreNV = (PFNGLSIGNALVKSEMAPHORENVPROC) loadFunction("glSignalVkSemaphoreNV"); glSignalVkFenceNV = (PFNGLSIGNALVKFENCENVPROC) loadFunction("glSignalVkFenceNV"); - - free(exts); - return true; }