using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Graphics { public static partial class glManager { const int glExtension = 0x1f03; const int glVersion = 0x1f02; private static readonly string[] glBranch = new string[] { "OpenGL ES-CM ", "OpenGL ES-CL ", "OpenGL ES ", "OpenGL SC " }; private static string glExtensionList; /// /// Load all aupportable OpenGL APIs and bind them to given context. /// /// The used as current OpenGL context /// A delegate that can get o public static unsafe void LoadGLapi(this Form form, GLfuncLoader loader) { if (loader == null) { loader = LoadGLfunc; } if (form.contextID->GetString != IntPtr.Zero) { return; } IntPtr proc = IntPtr.Zero; proc = loader("glGetString"); glGetString getString = Marshal.GetDelegateForFunctionPointer(proc); form.glContext.GetString = getString; string coreVersion; if (form.glContext.GetString(glVersion) == IntPtr.Zero) { InternalIO.InternalWriteLog("Failed to call glGetString", LogType.Error); } coreVersion = Marshal.PtrToStringAnsi(form.glContext.GetString(glVersion)); foreach (string branch in glBranch) { if (coreVersion.Contains(branch)) { coreVersion.Replace(branch, ""); } } string[] versionSep = coreVersion.Split('.'); int majorVersion = int.Parse(versionSep[0]); int minorVersion = int.Parse(versionSep[1]); CheckCoreVersion(majorVersion, minorVersion); try { #region load_core_gl LoadGLcore10(form.contextID, form.glContext, loader); LoadGLcore11(form.contextID, form.glContext, loader); LoadGLcore12(form.contextID, form.glContext, loader); LoadGLcore13(form.contextID, form.glContext, loader); LoadGLcore14(form.contextID, form.glContext, loader); LoadGLcore15(form.contextID, form.glContext, loader); LoadGLcore20(form.contextID, form.glContext, loader); LoadGLcore21(form.contextID, form.glContext, loader); LoadGLcore30(form.contextID, form.glContext, loader); LoadGLcore31(form.contextID, form.glContext, loader); LoadGLcore32(form.contextID, form.glContext, loader); LoadGLcore33(form.contextID, form.glContext, loader); LoadGLcore40(form.contextID, form.glContext, loader); LoadGLcore41(form.contextID, form.glContext, loader); LoadGLcore42(form.contextID, form.glContext, loader); LoadGLcore43(form.contextID, form.glContext, loader); LoadGLcore44(form.contextID, form.glContext, loader); LoadGLcore45(form.contextID, form.glContext, loader); LoadGLcore46(form.contextID, form.glContext, loader); #endregion } catch (Exception ex) { if (ex.Message != "Final Version") throw; } IntPtr strPtr = form.glContext.GetString(glExtension); string extension; if (strPtr == IntPtr.Zero) { InternalIO.InternalWriteLog("No supported OpenGL extensions are found.", LogType.Info); return; } else { extension = Marshal.PtrToStringAnsi(strPtr); } InternalIO.InternalWriteLog("No GL extensions are found.", LogType.Info); List extensions = extension.Split(" ").ToList(); #region checkGLextensions if (extensions.Contains("gl__4DFX_multisample")) { _4DFX_multisample = true; extensions.Remove("gl_4DFX_multisample"); } if (extensions.Contains("gl__3DFX_tbuffer")) { _3DFX_tbuffer = true; extensions.Remove("gl_3DFX_tbuffer"); } if (extensions.Contains("gl__3DFX_texture_compression_FXT1")) { _3DFX_texture_compression_FXT1 = true; extensions.Remove("gl_3DFX_texture_compression_FXT1"); } if (extensions.Contains("gl_AMD_blend_minmax_factor")) { AMD_blend_minmax_factor = true; extensions.Remove("glAMD_blend_minmax_factor"); } if (extensions.Contains("gl_AMD_conservative_depth")) { AMD_conservative_depth = true; extensions.Remove("glAMD_conservative_depth"); } if (extensions.Contains("gl_AMD_debug_output")) { AMD_debug_output = true; extensions.Remove("glAMD_debug_output"); } if (extensions.Contains("gl_AMD_depth_clamp_separate")) { AMD_depth_clamp_separate = true; extensions.Remove("glAMD_depth_clamp_separate"); } if (extensions.Contains("gl_AMD_draw_buffers_blend")) { AMD_draw_buffers_blend = true; extensions.Remove("glAMD_draw_buffers_blend"); } if (extensions.Contains("gl_AMD_framebuffer_multisample_advanced")) { AMD_framebuffer_multisample_advanced = true; extensions.Remove("glAMD_framebuffer_multisample_advanced"); } if (extensions.Contains("gl_AMD_framebuffer_sample_positions")) { AMD_framebuffer_sample_positions = true; extensions.Remove("glAMD_framebuffer_sample_positions"); } if (extensions.Contains("gl_AMD_gcn_shader")) { AMD_gcn_shader = true; extensions.Remove("glAMD_gcn_shader"); } if (extensions.Contains("gl_AMD_gpu_shader_half_float")) { AMD_gpu_shader_half_float = true; extensions.Remove("glAMD_gpu_shader_half_float"); } if (extensions.Contains("gl_AMD_gpu_shader_int16")) { AMD_gpu_shader_int16 = true; extensions.Remove("glAMD_gpu_shader_int16"); } if (extensions.Contains("gl_AMD_gpu_shader_int64")) { AMD_gpu_shader_int64 = true; extensions.Remove("glAMD_gpu_shader_int64"); } if (extensions.Contains("gl_AMD_interleaved_elements")) { AMD_interleaved_elements = true; extensions.Remove("glAMD_interleaved_elements"); } if (extensions.Contains("gl_AMD_multi_draw_indirect")) { AMD_multi_draw_indirect = true; extensions.Remove("glAMD_multi_draw_indirect"); } if (extensions.Contains("gl_AMD_name_gen_delete")) { AMD_name_gen_delete = true; extensions.Remove("glAMD_name_gen_delete"); } if (extensions.Contains("gl_AMD_occlusion_query_event")) { AMD_occlusion_query_event = true; extensions.Remove("glAMD_occlusion_query_event"); } if (extensions.Contains("gl_AMD_performance_monitor")) { AMD_performance_monitor = true; extensions.Remove("glAMD_performance_monitor"); } if (extensions.Contains("gl_AMD_pinned_memory")) { AMD_pinned_memory = true; extensions.Remove("glAMD_pinned_memory"); } if (extensions.Contains("gl_AMD_query_buffer_object")) { AMD_query_buffer_object = true; extensions.Remove("glAMD_query_buffer_object"); } if (extensions.Contains("gl_AMD_sample_positions")) { AMD_sample_positions = true; extensions.Remove("glAMD_sample_positions"); } if (extensions.Contains("gl_AMD_seamless_cubemap_per_texture")) { AMD_seamless_cubemap_per_texture = true; extensions.Remove("glAMD_seamless_cubemap_per_texture"); } if (extensions.Contains("gl_AMD_shader_atomic_counter_ops")) { AMD_shader_atomic_counter_ops = true; extensions.Remove("glAMD_shader_atomic_counter_ops"); } if (extensions.Contains("gl_AMD_shader_ballot")) { AMD_shader_ballot = true; extensions.Remove("glAMD_shader_ballot"); } if (extensions.Contains("gl_AMD_shader_explicit_vertex_parameter")) { AMD_shader_explicit_vertex_parameter = true; extensions.Remove("glAMD_shader_explicit_vertex_parameter"); } if (extensions.Contains("gl_AMD_shader_gpu_shader_half_float_fetch")) { AMD_shader_gpu_shader_half_float_fetch = true; extensions.Remove("glAMD_shader_gpu_shader_half_float_fetch"); } if (extensions.Contains("gl_AMD_shader_image_load_store_lod")) { AMD_shader_image_load_store_lod = true; extensions.Remove("glAMD_shader_image_load_store_lod"); } if (extensions.Contains("gl_AMD_shader_stencil_export")) { AMD_shader_stencil_export = true; extensions.Remove("glAMD_shader_stencil_export"); } if (extensions.Contains("gl_AMD_shader_trinary_minmax")) { AMD_shader_trinary_minmax = true; extensions.Remove("glAMD_shader_trinary_minmax"); } if (extensions.Contains("gl_AMD_sparse_texture")) { AMD_sparse_texture = true; extensions.Remove("glAMD_sparse_texture"); } if (extensions.Contains("gl_AMD_stencil_operation_extended")) { AMD_stencil_operation_extended = true; extensions.Remove("glAMD_stencil_operation_extended"); } if (extensions.Contains("gl_AMD_texture_gather_bias_lod")) { AMD_texture_gather_bias_lod = true; extensions.Remove("glAMD_texture_gather_bias_lod"); } if (extensions.Contains("gl_AMD_texture_texture4")) { AMD_texture_texture4 = true; extensions.Remove("glAMD_texture_texture4"); } if (extensions.Contains("gl_AMD_transform_feedback3_lines_triangles")) { AMD_transform_feedback3_lines_triangles = true; extensions.Remove("glAMD_transform_feedback3_lines_triangles"); } if (extensions.Contains("gl_AMD_transform_feedback4")) { AMD_transform_feedback4 = true; extensions.Remove("glAMD_transform_feedback4"); } if (extensions.Contains("gl_AMD_vertex_shader_layer")) { AMD_vertex_shader_layer = true; extensions.Remove("glAMD_vertex_shader_layer"); } if (extensions.Contains("gl_AMD_vertex_shader_tessellator")) { AMD_vertex_shader_tessellator = true; extensions.Remove("glAMD_vertex_shader_tessellator"); } if (extensions.Contains("gl_AMD_vertex_shader_viewport_index")) { AMD_vertex_shader_viewport_index = true; extensions.Remove("glAMD_vertex_shader_viewport_index"); } if (extensions.Contains("gl_APPLE_aux_depth_stencil")) { APPLE_aux_depth_stencil = true; extensions.Remove("glAPPLE_aux_depth_stencil"); } if (extensions.Contains("gl_APPLE_client_storage")) { APPLE_client_storage = true; extensions.Remove("glAPPLE_client_storage"); } if (extensions.Contains("gl_APPLE_element_array")) { APPLE_element_array = true; extensions.Remove("glAPPLE_element_array"); } if (extensions.Contains("gl_APPLE_fence")) { APPLE_fence = true; extensions.Remove("glAPPLE_fence"); } if (extensions.Contains("gl_APPLE_float_pixels")) { APPLE_float_pixels = true; extensions.Remove("glAPPLE_float_pixels"); } if (extensions.Contains("gl_APPLE_flush_buffer_range")) { APPLE_flush_buffer_range = true; extensions.Remove("glAPPLE_flush_buffer_range"); } if (extensions.Contains("gl_APPLE_object_purgeable")) { APPLE_object_purgeable = true; extensions.Remove("glAPPLE_object_purgeable"); } if (extensions.Contains("gl_APPLE_rgb_422")) { APPLE_rgb_422 = true; extensions.Remove("glAPPLE_rgb_422"); } if (extensions.Contains("gl_APPLE_row_bytes")) { APPLE_row_bytes = true; extensions.Remove("glAPPLE_row_bytes"); } if (extensions.Contains("gl_APPLE_specular_vector")) { APPLE_specular_vector = true; extensions.Remove("glAPPLE_specular_vector"); } if (extensions.Contains("gl_APPLE_texture_range")) { APPLE_texture_range = true; extensions.Remove("glAPPLE_texture_range"); } if (extensions.Contains("gl_APPLE_transform_hint")) { APPLE_transform_hint = true; extensions.Remove("glAPPLE_transform_hint"); } if (extensions.Contains("gl_APPLE_vertex_array_object")) { APPLE_vertex_array_object = true; extensions.Remove("glAPPLE_vertex_array_object"); } if (extensions.Contains("gl_APPLE_vertex_array_range")) { APPLE_vertex_array_range = true; extensions.Remove("glAPPLE_vertex_array_range"); } if (extensions.Contains("gl_APPLE_vertex_program_evaluators")) { APPLE_vertex_program_evaluators = true; extensions.Remove("glAPPLE_vertex_program_evaluators"); } if (extensions.Contains("gl_APPLE_ycbcr_422")) { APPLE_ycbcr_422 = true; extensions.Remove("glAPPLE_ycbcr_422"); } if (extensions.Contains("gl_ARB_ES2_compatibility")) { ARB_ES2_compatibility = true; extensions.Remove("glARB_ES2_compatibility"); } if (extensions.Contains("gl_ARB_ES3_1_compatibility")) { ARB_ES3_1_compatibility = true; extensions.Remove("glARB_ES3_1_compatibility"); } if (extensions.Contains("gl_ARB_ES3_2_compatibility")) { ARB_ES3_2_compatibility = true; extensions.Remove("glARB_ES3_2_compatibility"); } if (extensions.Contains("gl_ARB_ES3_compatibility")) { ARB_ES3_compatibility = true; extensions.Remove("glARB_ES3_compatibility"); } if (extensions.Contains("gl_ARB_arrays_of_arrays")) { ARB_arrays_of_arrays = true; extensions.Remove("glARB_arrays_of_arrays"); } if (extensions.Contains("gl_ARB_base_instance")) { ARB_base_instance = true; extensions.Remove("glARB_base_instance"); } if (extensions.Contains("gl_ARB_bindless_texture")) { ARB_bindless_texture = true; extensions.Remove("glARB_bindless_texture"); } if (extensions.Contains("gl_ARB_blend_func_extended")) { ARB_blend_func_extended = true; extensions.Remove("glARB_blend_func_extended"); } if (extensions.Contains("gl_ARB_buffer_storage")) { ARB_buffer_storage = true; extensions.Remove("glARB_buffer_storage"); } if (extensions.Contains("gl_ARB_cl_event")) { ARB_cl_event = true; extensions.Remove("glARB_cl_event"); } if (extensions.Contains("gl_ARB_clear_buffer_object")) { ARB_clear_buffer_object = true; extensions.Remove("glARB_clear_buffer_object"); } if (extensions.Contains("gl_ARB_clear_texture")) { ARB_clear_texture = true; extensions.Remove("glARB_clear_texture"); } if (extensions.Contains("gl_ARB_clip_control")) { ARB_clip_control = true; extensions.Remove("glARB_clip_control"); } if (extensions.Contains("gl_ARB_color_buffer_float")) { ARB_color_buffer_float = true; extensions.Remove("glARB_color_buffer_float"); } if (extensions.Contains("gl_ARB_compatibility")) { ARB_compatibility = true; extensions.Remove("glARB_compatibility"); } if (extensions.Contains("gl_ARB_compressed_texture_pixel_storage")) { ARB_compressed_texture_pixel_storage = true; extensions.Remove("glARB_compressed_texture_pixel_storage"); } if (extensions.Contains("gl_ARB_compute_shader")) { ARB_compute_shader = true; extensions.Remove("glARB_compute_shader"); } if (extensions.Contains("gl_ARB_compute_variable_group_size")) { ARB_compute_variable_group_size = true; extensions.Remove("glARB_compute_variable_group_size"); } if (extensions.Contains("gl_ARB_conditional_render_inverted")) { ARB_conditional_render_inverted = true; extensions.Remove("glARB_conditional_render_inverted"); } if (extensions.Contains("gl_ARB_conservative_depth")) { ARB_conservative_depth = true; extensions.Remove("glARB_conservative_depth"); } if (extensions.Contains("gl_ARB_copy_buffer")) { ARB_copy_buffer = true; extensions.Remove("glARB_copy_buffer"); } if (extensions.Contains("gl_ARB_copy_image")) { ARB_copy_image = true; extensions.Remove("glARB_copy_image"); } if (extensions.Contains("gl_ARB_cull_distance")) { ARB_cull_distance = true; extensions.Remove("glARB_cull_distance"); } if (extensions.Contains("gl_ARB_debug_output")) { ARB_debug_output = true; extensions.Remove("glARB_debug_output"); } if (extensions.Contains("gl_ARB_depth_buffer_float")) { ARB_depth_buffer_float = true; extensions.Remove("glARB_depth_buffer_float"); } if (extensions.Contains("gl_ARB_depth_clamp")) { ARB_depth_clamp = true; extensions.Remove("glARB_depth_clamp"); } if (extensions.Contains("gl_ARB_depth_texture")) { ARB_depth_texture = true; extensions.Remove("glARB_depth_texture"); } if (extensions.Contains("gl_ARB_derivative_control")) { ARB_derivative_control = true; extensions.Remove("glARB_derivative_control"); } if (extensions.Contains("gl_ARB_direct_state_access")) { ARB_direct_state_access = true; extensions.Remove("glARB_direct_state_access"); } if (extensions.Contains("gl_ARB_draw_buffers")) { ARB_draw_buffers = true; extensions.Remove("glARB_draw_buffers"); } if (extensions.Contains("gl_ARB_draw_buffers_blend")) { ARB_draw_buffers_blend = true; extensions.Remove("glARB_draw_buffers_blend"); } if (extensions.Contains("gl_ARB_draw_elements_base_vertex")) { ARB_draw_elements_base_vertex = true; extensions.Remove("glARB_draw_elements_base_vertex"); } if (extensions.Contains("gl_ARB_draw_indirect")) { ARB_draw_indirect = true; extensions.Remove("glARB_draw_indirect"); } if (extensions.Contains("gl_ARB_draw_instanced")) { ARB_draw_instanced = true; extensions.Remove("glARB_draw_instanced"); } if (extensions.Contains("gl_ARB_enhanced_layouts")) { ARB_enhanced_layouts = true; extensions.Remove("glARB_enhanced_layouts"); } if (extensions.Contains("gl_ARB_explicit_attrib_location")) { ARB_explicit_attrib_location = true; extensions.Remove("glARB_explicit_attrib_location"); } if (extensions.Contains("gl_ARB_explicit_uniform_location")) { ARB_explicit_uniform_location = true; extensions.Remove("glARB_explicit_uniform_location"); } if (extensions.Contains("gl_ARB_fragment_coord_conventions")) { ARB_fragment_coord_conventions = true; extensions.Remove("glARB_fragment_coord_conventions"); } if (extensions.Contains("gl_ARB_fragment_layer_viewport")) { ARB_fragment_layer_viewport = true; extensions.Remove("glARB_fragment_layer_viewport"); } if (extensions.Contains("gl_ARB_fragment_program")) { ARB_fragment_program = true; extensions.Remove("glARB_fragment_program"); } if (extensions.Contains("gl_ARB_fragment_program_shadow")) { ARB_fragment_program_shadow = true; extensions.Remove("glARB_fragment_program_shadow"); } if (extensions.Contains("gl_ARB_fragment_shader")) { ARB_fragment_shader = true; extensions.Remove("glARB_fragment_shader"); } if (extensions.Contains("gl_ARB_fragment_shader_interlock")) { ARB_fragment_shader_interlock = true; extensions.Remove("glARB_fragment_shader_interlock"); } if (extensions.Contains("gl_ARB_framebuffer_no_attachments")) { ARB_framebuffer_no_attachments = true; extensions.Remove("glARB_framebuffer_no_attachments"); } if (extensions.Contains("gl_ARB_framebuffer_object")) { ARB_framebuffer_object = true; extensions.Remove("glARB_framebuffer_object"); } if (extensions.Contains("gl_ARB_framebuffer_sRGB")) { ARB_framebuffer_sRGB = true; extensions.Remove("glARB_framebuffer_sRGB"); } if (extensions.Contains("gl_ARB_geometry_shader4")) { ARB_geometry_shader4 = true; extensions.Remove("glARB_geometry_shader4"); } if (extensions.Contains("gl_ARB_get_program_binary")) { ARB_get_program_binary = true; extensions.Remove("glARB_get_program_binary"); } if (extensions.Contains("gl_ARB_get_texture_sub_image")) { ARB_get_texture_sub_image = true; extensions.Remove("glARB_get_texture_sub_image"); } if (extensions.Contains("gl_ARB_gl_spirv")) { ARB_gl_spirv = true; extensions.Remove("glARB_gl_spirv"); } if (extensions.Contains("gl_ARB_gpu_shader5")) { ARB_gpu_shader5 = true; extensions.Remove("glARB_gpu_shader5"); } if (extensions.Contains("gl_ARB_gpu_shader_fp64")) { ARB_gpu_shader_fp64 = true; extensions.Remove("glARB_gpu_shader_fp64"); } if (extensions.Contains("gl_ARB_gpu_shader_int64")) { ARB_gpu_shader_int64 = true; extensions.Remove("glARB_gpu_shader_int64"); } if (extensions.Contains("gl_ARB_half_float_pixel")) { ARB_half_float_pixel = true; extensions.Remove("glARB_half_float_pixel"); } if (extensions.Contains("gl_ARB_half_float_vertex")) { ARB_half_float_vertex = true; extensions.Remove("glARB_half_float_vertex"); } if (extensions.Contains("gl_ARB_imaging")) { ARB_imaging = true; extensions.Remove("glARB_imaging"); } if (extensions.Contains("gl_ARB_indirect_parameters")) { ARB_indirect_parameters = true; extensions.Remove("glARB_indirect_parameters"); } if (extensions.Contains("gl_ARB_instanced_arrays")) { ARB_instanced_arrays = true; extensions.Remove("glARB_instanced_arrays"); } if (extensions.Contains("gl_ARB_internalformat_query")) { ARB_internalformat_query = true; extensions.Remove("glARB_internalformat_query"); } if (extensions.Contains("gl_ARB_internalformat_query2")) { ARB_internalformat_query2 = true; extensions.Remove("glARB_internalformat_query2"); } if (extensions.Contains("gl_ARB_invalidate_subdata")) { ARB_invalidate_subdata = true; extensions.Remove("glARB_invalidate_subdata"); } if (extensions.Contains("gl_ARB_map_buffer_alignment")) { ARB_map_buffer_alignment = true; extensions.Remove("glARB_map_buffer_alignment"); } if (extensions.Contains("gl_ARB_map_buffer_range")) { ARB_map_buffer_range = true; extensions.Remove("glARB_map_buffer_range"); } if (extensions.Contains("gl_ARB_matrix_palette")) { ARB_matrix_palette = true; extensions.Remove("glARB_matrix_palette"); } if (extensions.Contains("gl_ARB_multi_bind")) { ARB_multi_bind = true; extensions.Remove("glARB_multi_bind"); } if (extensions.Contains("gl_ARB_multi_draw_indirect")) { ARB_multi_draw_indirect = true; extensions.Remove("glARB_multi_draw_indirect"); } if (extensions.Contains("gl_ARB_multisample")) { ARB_multisample = true; extensions.Remove("glARB_multisample"); } if (extensions.Contains("gl_ARB_multitexture")) { ARB_multitexture = true; extensions.Remove("glARB_multitexture"); } if (extensions.Contains("gl_ARB_occlusion_query")) { ARB_occlusion_query = true; extensions.Remove("glARB_occlusion_query"); } if (extensions.Contains("gl_ARB_occlusion_query2")) { ARB_occlusion_query2 = true; extensions.Remove("glARB_occlusion_query2"); } if (extensions.Contains("gl_ARB_parallel_shader_compile")) { ARB_parallel_shader_compile = true; extensions.Remove("glARB_parallel_shader_compile"); } if (extensions.Contains("gl_ARB_pipeline_statistics_query")) { ARB_pipeline_statistics_query = true; extensions.Remove("glARB_pipeline_statistics_query"); } if (extensions.Contains("gl_ARB_pixel_buffer_object")) { ARB_pixel_buffer_object = true; extensions.Remove("glARB_pixel_buffer_object"); } if (extensions.Contains("gl_ARB_point_parameters")) { ARB_point_parameters = true; extensions.Remove("glARB_point_parameters"); } if (extensions.Contains("gl_ARB_point_sprite")) { ARB_point_sprite = true; extensions.Remove("glARB_point_sprite"); } if (extensions.Contains("gl_ARB_polygon_offset_clamp")) { ARB_polygon_offset_clamp = true; extensions.Remove("glARB_polygon_offset_clamp"); } if (extensions.Contains("gl_ARB_post_depth_coverage")) { ARB_post_depth_coverage = true; extensions.Remove("glARB_post_depth_coverage"); } if (extensions.Contains("gl_ARB_program_interface_query")) { ARB_program_interface_query = true; extensions.Remove("glARB_program_interface_query"); } if (extensions.Contains("gl_ARB_provoking_vertex")) { ARB_provoking_vertex = true; extensions.Remove("glARB_provoking_vertex"); } if (extensions.Contains("gl_ARB_query_buffer_object")) { ARB_query_buffer_object = true; extensions.Remove("glARB_query_buffer_object"); } if (extensions.Contains("gl_ARB_robust_buffer_access_behavior")) { ARB_robust_buffer_access_behavior = true; extensions.Remove("glARB_robust_buffer_access_behavior"); } if (extensions.Contains("gl_ARB_robustness")) { ARB_robustness = true; extensions.Remove("glARB_robustness"); } if (extensions.Contains("gl_ARB_robustness_isolation")) { ARB_robustness_isolation = true; extensions.Remove("glARB_robustness_isolation"); } if (extensions.Contains("gl_ARB_sample_locations")) { ARB_sample_locations = true; extensions.Remove("glARB_sample_locations"); } if (extensions.Contains("gl_ARB_sample_shading")) { ARB_sample_shading = true; extensions.Remove("glARB_sample_shading"); } if (extensions.Contains("gl_ARB_sampler_objects")) { ARB_sampler_objects = true; extensions.Remove("glARB_sampler_objects"); } if (extensions.Contains("gl_ARB_seamless_cube_map")) { ARB_seamless_cube_map = true; extensions.Remove("glARB_seamless_cube_map"); } if (extensions.Contains("gl_ARB_seamless_cubemap_per_texture")) { ARB_seamless_cubemap_per_texture = true; extensions.Remove("glARB_seamless_cubemap_per_texture"); } if (extensions.Contains("gl_ARB_separate_shader_objects")) { ARB_separate_shader_objects = true; extensions.Remove("glARB_separate_shader_objects"); } if (extensions.Contains("gl_ARB_shader_atomic_counter_ops")) { ARB_shader_atomic_counter_ops = true; extensions.Remove("glARB_shader_atomic_counter_ops"); } if (extensions.Contains("gl_ARB_shader_atomic_counters")) { ARB_shader_atomic_counters = true; extensions.Remove("glARB_shader_atomic_counters"); } if (extensions.Contains("gl_ARB_shader_ballot")) { ARB_shader_ballot = true; extensions.Remove("glARB_shader_ballot"); } if (extensions.Contains("gl_ARB_shader_bit_encoding")) { ARB_shader_bit_encoding = true; extensions.Remove("glARB_shader_bit_encoding"); } if (extensions.Contains("gl_ARB_shader_clock")) { ARB_shader_clock = true; extensions.Remove("glARB_shader_clock"); } if (extensions.Contains("gl_ARB_shader_draw_parameters")) { ARB_shader_draw_parameters = true; extensions.Remove("glARB_shader_draw_parameters"); } if (extensions.Contains("gl_ARB_shader_group_vote")) { ARB_shader_group_vote = true; extensions.Remove("glARB_shader_group_vote"); } if (extensions.Contains("gl_ARB_shader_image_load_store")) { ARB_shader_image_load_store = true; extensions.Remove("glARB_shader_image_load_store"); } if (extensions.Contains("gl_ARB_shader_image_size")) { ARB_shader_image_size = true; extensions.Remove("glARB_shader_image_size"); } if (extensions.Contains("gl_ARB_shader_objects")) { ARB_shader_objects = true; extensions.Remove("glARB_shader_objects"); } if (extensions.Contains("gl_ARB_shader_precision")) { ARB_shader_precision = true; extensions.Remove("glARB_shader_precision"); } if (extensions.Contains("gl_ARB_shader_stencil_export")) { ARB_shader_stencil_export = true; extensions.Remove("glARB_shader_stencil_export"); } if (extensions.Contains("gl_ARB_shader_storage_buffer_object")) { ARB_shader_storage_buffer_object = true; extensions.Remove("glARB_shader_storage_buffer_object"); } if (extensions.Contains("gl_ARB_shader_subroutine")) { ARB_shader_subroutine = true; extensions.Remove("glARB_shader_subroutine"); } if (extensions.Contains("gl_ARB_shader_texture_image_samples")) { ARB_shader_texture_image_samples = true; extensions.Remove("glARB_shader_texture_image_samples"); } if (extensions.Contains("gl_ARB_shader_texture_lod")) { ARB_shader_texture_lod = true; extensions.Remove("glARB_shader_texture_lod"); } if (extensions.Contains("gl_ARB_shader_viewport_layer_array")) { ARB_shader_viewport_layer_array = true; extensions.Remove("glARB_shader_viewport_layer_array"); } if (extensions.Contains("gl_ARB_shading_language_100")) { ARB_shading_language_100 = true; extensions.Remove("glARB_shading_language_100"); } if (extensions.Contains("gl_ARB_shading_language_420pack")) { ARB_shading_language_420pack = true; extensions.Remove("glARB_shading_language_420pack"); } if (extensions.Contains("gl_ARB_shading_language_include")) { ARB_shading_language_include = true; extensions.Remove("glARB_shading_language_include"); } if (extensions.Contains("gl_ARB_shading_language_packing")) { ARB_shading_language_packing = true; extensions.Remove("glARB_shading_language_packing"); } if (extensions.Contains("gl_ARB_shadow")) { ARB_shadow = true; extensions.Remove("glARB_shadow"); } if (extensions.Contains("gl_ARB_shadow_ambient")) { ARB_shadow_ambient = true; extensions.Remove("glARB_shadow_ambient"); } if (extensions.Contains("gl_ARB_sparse_buffer")) { ARB_sparse_buffer = true; extensions.Remove("glARB_sparse_buffer"); } if (extensions.Contains("gl_ARB_sparse_texture")) { ARB_sparse_texture = true; extensions.Remove("glARB_sparse_texture"); } if (extensions.Contains("gl_ARB_sparse_texture2")) { ARB_sparse_texture2 = true; extensions.Remove("glARB_sparse_texture2"); } if (extensions.Contains("gl_ARB_sparse_texture_clamp")) { ARB_sparse_texture_clamp = true; extensions.Remove("glARB_sparse_texture_clamp"); } if (extensions.Contains("gl_ARB_spirv_extensions")) { ARB_spirv_extensions = true; extensions.Remove("glARB_spirv_extensions"); } if (extensions.Contains("gl_ARB_stencil_texturing")) { ARB_stencil_texturing = true; extensions.Remove("glARB_stencil_texturing"); } if (extensions.Contains("gl_ARB_sync")) { ARB_sync = true; extensions.Remove("glARB_sync"); } if (extensions.Contains("gl_ARB_tessellation_shader")) { ARB_tessellation_shader = true; extensions.Remove("glARB_tessellation_shader"); } if (extensions.Contains("gl_ARB_texture_barrier")) { ARB_texture_barrier = true; extensions.Remove("glARB_texture_barrier"); } if (extensions.Contains("gl_ARB_texture_border_clamp")) { ARB_texture_border_clamp = true; extensions.Remove("glARB_texture_border_clamp"); } if (extensions.Contains("gl_ARB_texture_buffer_object")) { ARB_texture_buffer_object = true; extensions.Remove("glARB_texture_buffer_object"); } if (extensions.Contains("gl_ARB_texture_buffer_object_rgb32")) { ARB_texture_buffer_object_rgb32 = true; extensions.Remove("glARB_texture_buffer_object_rgb32"); } if (extensions.Contains("gl_ARB_texture_buffer_range")) { ARB_texture_buffer_range = true; extensions.Remove("glARB_texture_buffer_range"); } if (extensions.Contains("gl_ARB_texture_compression")) { ARB_texture_compression = true; extensions.Remove("glARB_texture_compression"); } if (extensions.Contains("gl_ARB_texture_compression_bptc")) { ARB_texture_compression_bptc = true; extensions.Remove("glARB_texture_compression_bptc"); } if (extensions.Contains("gl_ARB_texture_compression_rgtc")) { ARB_texture_compression_rgtc = true; extensions.Remove("glARB_texture_compression_rgtc"); } if (extensions.Contains("gl_ARB_texture_cube_map")) { ARB_texture_cube_map = true; extensions.Remove("glARB_texture_cube_map"); } if (extensions.Contains("gl_ARB_texture_cube_map_array")) { ARB_texture_cube_map_array = true; extensions.Remove("glARB_texture_cube_map_array"); } if (extensions.Contains("gl_ARB_texture_env_add")) { ARB_texture_env_add = true; extensions.Remove("glARB_texture_env_add"); } if (extensions.Contains("gl_ARB_texture_env_combine")) { ARB_texture_env_combine = true; extensions.Remove("glARB_texture_env_combine"); } if (extensions.Contains("gl_ARB_texture_env_crossbar")) { ARB_texture_env_crossbar = true; extensions.Remove("glARB_texture_env_crossbar"); } if (extensions.Contains("gl_ARB_texture_env_dot3")) { ARB_texture_env_dot3 = true; extensions.Remove("glARB_texture_env_dot3"); } if (extensions.Contains("gl_ARB_texture_filter_anisotropic")) { ARB_texture_filter_anisotropic = true; extensions.Remove("glARB_texture_filter_anisotropic"); } if (extensions.Contains("gl_ARB_texture_filter_minmax")) { ARB_texture_filter_minmax = true; extensions.Remove("glARB_texture_filter_minmax"); } if (extensions.Contains("gl_ARB_texture_float")) { ARB_texture_float = true; extensions.Remove("glARB_texture_float"); } if (extensions.Contains("gl_ARB_texture_gather")) { ARB_texture_gather = true; extensions.Remove("glARB_texture_gather"); } if (extensions.Contains("gl_ARB_texture_mirror_clamp_to_edge")) { ARB_texture_mirror_clamp_to_edge = true; extensions.Remove("glARB_texture_mirror_clamp_to_edge"); } if (extensions.Contains("gl_ARB_texture_mirrored_repeat")) { ARB_texture_mirrored_repeat = true; extensions.Remove("glARB_texture_mirrored_repeat"); } if (extensions.Contains("gl_ARB_texture_multisample")) { ARB_texture_multisample = true; extensions.Remove("glARB_texture_multisample"); } if (extensions.Contains("gl_ARB_texture_non_power_of_two")) { ARB_texture_non_power_of_two = true; extensions.Remove("glARB_texture_non_power_of_two"); } if (extensions.Contains("gl_ARB_texture_query_levels")) { ARB_texture_query_levels = true; extensions.Remove("glARB_texture_query_levels"); } if (extensions.Contains("gl_ARB_texture_query_lod")) { ARB_texture_query_lod = true; extensions.Remove("glARB_texture_query_lod"); } if (extensions.Contains("gl_ARB_texture_rectangle")) { ARB_texture_rectangle = true; extensions.Remove("glARB_texture_rectangle"); } if (extensions.Contains("gl_ARB_texture_rg")) { ARB_texture_rg = true; extensions.Remove("glARB_texture_rg"); } if (extensions.Contains("gl_ARB_texture_rgb10_a2ui")) { ARB_texture_rgb10_a2ui = true; extensions.Remove("glARB_texture_rgb10_a2ui"); } if (extensions.Contains("gl_ARB_texture_stencil8")) { ARB_texture_stencil8 = true; extensions.Remove("glARB_texture_stencil8"); } if (extensions.Contains("gl_ARB_texture_storage")) { ARB_texture_storage = true; extensions.Remove("glARB_texture_storage"); } if (extensions.Contains("gl_ARB_texture_storage_multisample")) { ARB_texture_storage_multisample = true; extensions.Remove("glARB_texture_storage_multisample"); } if (extensions.Contains("gl_ARB_texture_swizzle")) { ARB_texture_swizzle = true; extensions.Remove("glARB_texture_swizzle"); } if (extensions.Contains("gl_ARB_texture_view")) { ARB_texture_view = true; extensions.Remove("glARB_texture_view"); } if (extensions.Contains("gl_ARB_timer_query")) { ARB_timer_query = true; extensions.Remove("glARB_timer_query"); } if (extensions.Contains("gl_ARB_transform_feedback2")) { ARB_transform_feedback2 = true; extensions.Remove("glARB_transform_feedback2"); } if (extensions.Contains("gl_ARB_transform_feedback3")) { ARB_transform_feedback3 = true; extensions.Remove("glARB_transform_feedback3"); } if (extensions.Contains("gl_ARB_transform_feedback_instanced")) { ARB_transform_feedback_instanced = true; extensions.Remove("glARB_transform_feedback_instanced"); } if (extensions.Contains("gl_ARB_transform_feedback_overflow_query")) { ARB_transform_feedback_overflow_query = true; extensions.Remove("glARB_transform_feedback_overflow_query"); } if (extensions.Contains("gl_ARB_transpose_matrix")) { ARB_transpose_matrix = true; extensions.Remove("glARB_transpose_matrix"); } if (extensions.Contains("gl_ARB_uniform_buffer_object")) { ARB_uniform_buffer_object = true; extensions.Remove("glARB_uniform_buffer_object"); } if (extensions.Contains("gl_ARB_vertex_array_bgra")) { ARB_vertex_array_bgra = true; extensions.Remove("glARB_vertex_array_bgra"); } if (extensions.Contains("gl_ARB_vertex_array_object")) { ARB_vertex_array_object = true; extensions.Remove("glARB_vertex_array_object"); } if (extensions.Contains("gl_ARB_vertex_attrib_64bit")) { ARB_vertex_attrib_64bit = true; extensions.Remove("glARB_vertex_attrib_64bit"); } if (extensions.Contains("gl_ARB_vertex_attrib_binding")) { ARB_vertex_attrib_binding = true; extensions.Remove("glARB_vertex_attrib_binding"); } if (extensions.Contains("gl_ARB_vertex_blend")) { ARB_vertex_blend = true; extensions.Remove("glARB_vertex_blend"); } if (extensions.Contains("gl_ARB_vertex_buffer_object")) { ARB_vertex_buffer_object = true; extensions.Remove("glARB_vertex_buffer_object"); } if (extensions.Contains("gl_ARB_vertex_program")) { ARB_vertex_program = true; extensions.Remove("glARB_vertex_program"); } if (extensions.Contains("gl_ARB_vertex_shader")) { ARB_vertex_shader = true; extensions.Remove("glARB_vertex_shader"); } if (extensions.Contains("gl_ARB_vertex_type_10f_11f_11f_rev")) { ARB_vertex_type_10f_11f_11f_rev = true; extensions.Remove("glARB_vertex_type_10f_11f_11f_rev"); } if (extensions.Contains("gl_ARB_vertex_type_2_10_10_10_rev")) { ARB_vertex_type_2_10_10_10_rev = true; extensions.Remove("glARB_vertex_type_2_10_10_10_rev"); } if (extensions.Contains("gl_ARB_viewport_array")) { ARB_viewport_array = true; extensions.Remove("glARB_viewport_array"); } if (extensions.Contains("gl_ARB_window_pos")) { ARB_window_pos = true; extensions.Remove("glARB_window_pos"); } if (extensions.Contains("gl_ATI_draw_buffers")) { ATI_draw_buffers = true; extensions.Remove("glATI_draw_buffers"); } if (extensions.Contains("gl_ATI_element_array")) { ATI_element_array = true; extensions.Remove("glATI_element_array"); } if (extensions.Contains("gl_ATI_envmap_bumpmap")) { ATI_envmap_bumpmap = true; extensions.Remove("glATI_envmap_bumpmap"); } if (extensions.Contains("gl_ATI_fragment_shader")) { ATI_fragment_shader = true; extensions.Remove("glATI_fragment_shader"); } if (extensions.Contains("gl_ATI_map_object_buffer")) { ATI_map_object_buffer = true; extensions.Remove("glATI_map_object_buffer"); } if (extensions.Contains("gl_ATI_meminfo")) { ATI_meminfo = true; extensions.Remove("glATI_meminfo"); } if (extensions.Contains("gl_ATI_pixel_format_float")) { ATI_pixel_format_float = true; extensions.Remove("glATI_pixel_format_float"); } if (extensions.Contains("gl_ATI_pn_triangles")) { ATI_pn_triangles = true; extensions.Remove("glATI_pn_triangles"); } if (extensions.Contains("gl_ATI_separate_stencil")) { ATI_separate_stencil = true; extensions.Remove("glATI_separate_stencil"); } if (extensions.Contains("gl_ATI_text_fragment_shader")) { ATI_text_fragment_shader = true; extensions.Remove("glATI_text_fragment_shader"); } if (extensions.Contains("gl_ATI_texture_env_combine3")) { ATI_texture_env_combine3 = true; extensions.Remove("glATI_texture_env_combine3"); } if (extensions.Contains("gl_ATI_texture_float")) { ATI_texture_float = true; extensions.Remove("glATI_texture_float"); } if (extensions.Contains("gl_ATI_texture_mirror_once")) { ATI_texture_mirror_once = true; extensions.Remove("glATI_texture_mirror_once"); } if (extensions.Contains("gl_ATI_vertex_array_object")) { ATI_vertex_array_object = true; extensions.Remove("glATI_vertex_array_object"); } if (extensions.Contains("gl_ATI_vertex_attrib_array_object")) { ATI_vertex_attrib_array_object = true; extensions.Remove("glATI_vertex_attrib_array_object"); } if (extensions.Contains("gl_ATI_vertex_streams")) { ATI_vertex_streams = true; extensions.Remove("glATI_vertex_streams"); } if (extensions.Contains("gl_EXT_422_pixels")) { EXT_422_pixels = true; extensions.Remove("glEXT_422_pixels"); } if (extensions.Contains("gl_EXT_EGL_image_storage")) { EXT_EGL_image_storage = true; extensions.Remove("glEXT_EGL_image_storage"); } if (extensions.Contains("gl_EXT_EGL_sync")) { EXT_EGL_sync = true; extensions.Remove("glEXT_EGL_sync"); } if (extensions.Contains("gl_EXT_abgr")) { EXT_abgr = true; extensions.Remove("glEXT_abgr"); } if (extensions.Contains("gl_EXT_bgra")) { EXT_bgra = true; extensions.Remove("glEXT_bgra"); } if (extensions.Contains("gl_EXT_bindable_uniform")) { EXT_bindable_uniform = true; extensions.Remove("glEXT_bindable_uniform"); } if (extensions.Contains("gl_EXT_blend_color")) { EXT_blend_color = true; extensions.Remove("glEXT_blend_color"); } if (extensions.Contains("gl_EXT_blend_equation_separate")) { EXT_blend_equation_separate = true; extensions.Remove("glEXT_blend_equation_separate"); } if (extensions.Contains("gl_EXT_blend_func_separate")) { EXT_blend_func_separate = true; extensions.Remove("glEXT_blend_func_separate"); } if (extensions.Contains("gl_EXT_blend_logic_op")) { EXT_blend_logic_op = true; extensions.Remove("glEXT_blend_logic_op"); } if (extensions.Contains("gl_EXT_blend_minmax")) { EXT_blend_minmax = true; extensions.Remove("glEXT_blend_minmax"); } if (extensions.Contains("gl_EXT_blend_subtract")) { EXT_blend_subtract = true; extensions.Remove("glEXT_blend_subtract"); } if (extensions.Contains("gl_EXT_clip_volume_hint")) { EXT_clip_volume_hint = true; extensions.Remove("glEXT_clip_volume_hint"); } if (extensions.Contains("gl_EXT_cmyka")) { EXT_cmyka = true; extensions.Remove("glEXT_cmyka"); } if (extensions.Contains("gl_EXT_color_subtable")) { EXT_color_subtable = true; extensions.Remove("glEXT_color_subtable"); } if (extensions.Contains("gl_EXT_compiled_vertex_array")) { EXT_compiled_vertex_array = true; extensions.Remove("glEXT_compiled_vertex_array"); } if (extensions.Contains("gl_EXT_convolution")) { EXT_convolution = true; extensions.Remove("glEXT_convolution"); } if (extensions.Contains("gl_EXT_coordinate_frame")) { EXT_coordinate_frame = true; extensions.Remove("glEXT_coordinate_frame"); } if (extensions.Contains("gl_EXT_copy_texture")) { EXT_copy_texture = true; extensions.Remove("glEXT_copy_texture"); } if (extensions.Contains("gl_EXT_cull_vertex")) { EXT_cull_vertex = true; extensions.Remove("glEXT_cull_vertex"); } if (extensions.Contains("gl_EXT_debug_label")) { EXT_debug_label = true; extensions.Remove("glEXT_debug_label"); } if (extensions.Contains("gl_EXT_debug_marker")) { EXT_debug_marker = true; extensions.Remove("glEXT_debug_marker"); } if (extensions.Contains("gl_EXT_depth_bounds_test")) { EXT_depth_bounds_test = true; extensions.Remove("glEXT_depth_bounds_test"); } if (extensions.Contains("gl_EXT_direct_state_access")) { EXT_direct_state_access = true; extensions.Remove("glEXT_direct_state_access"); } if (extensions.Contains("gl_EXT_draw_buffers2")) { EXT_draw_buffers2 = true; extensions.Remove("glEXT_draw_buffers2"); } if (extensions.Contains("gl_EXT_draw_instanced")) { EXT_draw_instanced = true; extensions.Remove("glEXT_draw_instanced"); } if (extensions.Contains("gl_EXT_draw_range_elements")) { EXT_draw_range_elements = true; extensions.Remove("glEXT_draw_range_elements"); } if (extensions.Contains("gl_EXT_external_buffer")) { EXT_external_buffer = true; extensions.Remove("glEXT_external_buffer"); } if (extensions.Contains("gl_EXT_fog_coord")) { EXT_fog_coord = true; extensions.Remove("glEXT_fog_coord"); } if (extensions.Contains("gl_EXT_framebuffer_blit")) { EXT_framebuffer_blit = true; extensions.Remove("glEXT_framebuffer_blit"); } if (extensions.Contains("gl_EXT_framebuffer_blit_layers")) { EXT_framebuffer_blit_layers = true; extensions.Remove("glEXT_framebuffer_blit_layers"); } if (extensions.Contains("gl_EXT_framebuffer_multisample")) { EXT_framebuffer_multisample = true; extensions.Remove("glEXT_framebuffer_multisample"); } if (extensions.Contains("gl_EXT_framebuffer_multisample_blit_scaled")) { EXT_framebuffer_multisample_blit_scaled = true; extensions.Remove("glEXT_framebuffer_multisample_blit_scaled"); } if (extensions.Contains("gl_EXT_framebuffer_object")) { EXT_framebuffer_object = true; extensions.Remove("glEXT_framebuffer_object"); } if (extensions.Contains("gl_EXT_framebuffer_sRGB")) { EXT_framebuffer_sRGB = true; extensions.Remove("glEXT_framebuffer_sRGB"); } if (extensions.Contains("gl_EXT_geometry_shader4")) { EXT_geometry_shader4 = true; extensions.Remove("glEXT_geometry_shader4"); } if (extensions.Contains("gl_EXT_gpu_program_parameters")) { EXT_gpu_program_parameters = true; extensions.Remove("glEXT_gpu_program_parameters"); } if (extensions.Contains("gl_EXT_gpu_shader4")) { EXT_gpu_shader4 = true; extensions.Remove("glEXT_gpu_shader4"); } if (extensions.Contains("gl_EXT_histogram")) { EXT_histogram = true; extensions.Remove("glEXT_histogram"); } if (extensions.Contains("gl_EXT_index_array_formats")) { EXT_index_array_formats = true; extensions.Remove("glEXT_index_array_formats"); } if (extensions.Contains("gl_EXT_index_func")) { EXT_index_func = true; extensions.Remove("glEXT_index_func"); } if (extensions.Contains("gl_EXT_index_material")) { EXT_index_material = true; extensions.Remove("glEXT_index_material"); } if (extensions.Contains("gl_EXT_index_texture")) { EXT_index_texture = true; extensions.Remove("glEXT_index_texture"); } if (extensions.Contains("gl_EXT_light_texture")) { EXT_light_texture = true; extensions.Remove("glEXT_light_texture"); } if (extensions.Contains("gl_EXT_memory_object")) { EXT_memory_object = true; extensions.Remove("glEXT_memory_object"); } if (extensions.Contains("gl_EXT_memory_object_fd")) { EXT_memory_object_fd = true; extensions.Remove("glEXT_memory_object_fd"); } if (extensions.Contains("gl_EXT_memory_object_win32")) { EXT_memory_object_win32 = true; extensions.Remove("glEXT_memory_object_win32"); } if (extensions.Contains("gl_EXT_misc_attribute")) { EXT_misc_attribute = true; extensions.Remove("glEXT_misc_attribute"); } if (extensions.Contains("gl_EXT_multi_draw_arrays")) { EXT_multi_draw_arrays = true; extensions.Remove("glEXT_multi_draw_arrays"); } if (extensions.Contains("gl_EXT_multisample")) { EXT_multisample = true; extensions.Remove("glEXT_multisample"); } if (extensions.Contains("gl_EXT_multiview_tessellation_geometry_shader")) { EXT_multiview_tessellation_geometry_shader = true; extensions.Remove("glEXT_multiview_tessellation_geometry_shader"); } if (extensions.Contains("gl_EXT_multiview_texture_multisample")) { EXT_multiview_texture_multisample = true; extensions.Remove("glEXT_multiview_texture_multisample"); } if (extensions.Contains("gl_EXT_multiview_timer_query")) { EXT_multiview_timer_query = true; extensions.Remove("glEXT_multiview_timer_query"); } if (extensions.Contains("gl_EXT_packed_depth_stencil")) { EXT_packed_depth_stencil = true; extensions.Remove("glEXT_packed_depth_stencil"); } if (extensions.Contains("gl_EXT_packed_float")) { EXT_packed_float = true; extensions.Remove("glEXT_packed_float"); } if (extensions.Contains("gl_EXT_packed_pixels")) { EXT_packed_pixels = true; extensions.Remove("glEXT_packed_pixels"); } if (extensions.Contains("gl_EXT_paletted_texture")) { EXT_paletted_texture = true; extensions.Remove("glEXT_paletted_texture"); } if (extensions.Contains("gl_EXT_pixel_buffer_object")) { EXT_pixel_buffer_object = true; extensions.Remove("glEXT_pixel_buffer_object"); } if (extensions.Contains("gl_EXT_pixel_transform")) { EXT_pixel_transform = true; extensions.Remove("glEXT_pixel_transform"); } if (extensions.Contains("gl_EXT_pixel_transform_color_table")) { EXT_pixel_transform_color_table = true; extensions.Remove("glEXT_pixel_transform_color_table"); } if (extensions.Contains("gl_EXT_point_parameters")) { EXT_point_parameters = true; extensions.Remove("glEXT_point_parameters"); } if (extensions.Contains("gl_EXT_polygon_offset")) { EXT_polygon_offset = true; extensions.Remove("glEXT_polygon_offset"); } if (extensions.Contains("gl_EXT_polygon_offset_clamp")) { EXT_polygon_offset_clamp = true; extensions.Remove("glEXT_polygon_offset_clamp"); } if (extensions.Contains("gl_EXT_post_depth_coverage")) { EXT_post_depth_coverage = true; extensions.Remove("glEXT_post_depth_coverage"); } if (extensions.Contains("gl_EXT_provoking_vertex")) { EXT_provoking_vertex = true; extensions.Remove("glEXT_provoking_vertex"); } if (extensions.Contains("gl_EXT_raster_multisample")) { EXT_raster_multisample = true; extensions.Remove("glEXT_raster_multisample"); } if (extensions.Contains("gl_EXT_rescale_normal")) { EXT_rescale_normal = true; extensions.Remove("glEXT_rescale_normal"); } if (extensions.Contains("gl_EXT_secondary_color")) { EXT_secondary_color = true; extensions.Remove("glEXT_secondary_color"); } if (extensions.Contains("gl_EXT_semaphore")) { EXT_semaphore = true; extensions.Remove("glEXT_semaphore"); } if (extensions.Contains("gl_EXT_semaphore_fd")) { EXT_semaphore_fd = true; extensions.Remove("glEXT_semaphore_fd"); } if (extensions.Contains("gl_EXT_semaphore_win32")) { EXT_semaphore_win32 = true; extensions.Remove("glEXT_semaphore_win32"); } if (extensions.Contains("gl_EXT_separate_shader_objects")) { EXT_separate_shader_objects = true; extensions.Remove("glEXT_separate_shader_objects"); } if (extensions.Contains("gl_EXT_separate_specular_color")) { EXT_separate_specular_color = true; extensions.Remove("glEXT_separate_specular_color"); } if (extensions.Contains("gl_EXT_shader_framebuffer_fetch")) { EXT_shader_framebuffer_fetch = true; extensions.Remove("glEXT_shader_framebuffer_fetch"); } if (extensions.Contains("gl_EXT_shader_framebuffer_fetch_non_coherent")) { EXT_shader_framebuffer_fetch_non_coherent = true; extensions.Remove("glEXT_shader_framebuffer_fetch_non_coherent"); } if (extensions.Contains("gl_EXT_shader_image_load_formatted")) { EXT_shader_image_load_formatted = true; extensions.Remove("glEXT_shader_image_load_formatted"); } if (extensions.Contains("gl_EXT_shader_image_load_store")) { EXT_shader_image_load_store = true; extensions.Remove("glEXT_shader_image_load_store"); } if (extensions.Contains("gl_EXT_shader_integer_mix")) { EXT_shader_integer_mix = true; extensions.Remove("glEXT_shader_integer_mix"); } if (extensions.Contains("gl_EXT_shader_samples_identical")) { EXT_shader_samples_identical = true; extensions.Remove("glEXT_shader_samples_identical"); } if (extensions.Contains("gl_EXT_shadow_funcs")) { EXT_shadow_funcs = true; extensions.Remove("glEXT_shadow_funcs"); } if (extensions.Contains("gl_EXT_shared_texture_palette")) { EXT_shared_texture_palette = true; extensions.Remove("glEXT_shared_texture_palette"); } if (extensions.Contains("gl_EXT_sparse_texture2")) { EXT_sparse_texture2 = true; extensions.Remove("glEXT_sparse_texture2"); } if (extensions.Contains("gl_EXT_stencil_clear_tag")) { EXT_stencil_clear_tag = true; extensions.Remove("glEXT_stencil_clear_tag"); } if (extensions.Contains("gl_EXT_stencil_two_side")) { EXT_stencil_two_side = true; extensions.Remove("glEXT_stencil_two_side"); } if (extensions.Contains("gl_EXT_stencil_wrap")) { EXT_stencil_wrap = true; extensions.Remove("glEXT_stencil_wrap"); } if (extensions.Contains("gl_EXT_subtexture")) { EXT_subtexture = true; extensions.Remove("glEXT_subtexture"); } if (extensions.Contains("gl_EXT_texture")) { EXT_texture = true; extensions.Remove("glEXT_texture"); } if (extensions.Contains("gl_EXT_texture3D")) { EXT_texture3D = true; extensions.Remove("glEXT_texture3D"); } if (extensions.Contains("gl_EXT_texture_array")) { EXT_texture_array = true; extensions.Remove("glEXT_texture_array"); } if (extensions.Contains("gl_EXT_texture_buffer_object")) { EXT_texture_buffer_object = true; extensions.Remove("glEXT_texture_buffer_object"); } if (extensions.Contains("gl_EXT_texture_compression_latc")) { EXT_texture_compression_latc = true; extensions.Remove("glEXT_texture_compression_latc"); } if (extensions.Contains("gl_EXT_texture_compression_rgtc")) { EXT_texture_compression_rgtc = true; extensions.Remove("glEXT_texture_compression_rgtc"); } if (extensions.Contains("gl_EXT_texture_compression_s3tc")) { EXT_texture_compression_s3tc = true; extensions.Remove("glEXT_texture_compression_s3tc"); } if (extensions.Contains("gl_EXT_texture_cube_map")) { EXT_texture_cube_map = true; extensions.Remove("glEXT_texture_cube_map"); } if (extensions.Contains("gl_EXT_texture_env_add")) { EXT_texture_env_add = true; extensions.Remove("glEXT_texture_env_add"); } if (extensions.Contains("gl_EXT_texture_env_combine")) { EXT_texture_env_combine = true; extensions.Remove("glEXT_texture_env_combine"); } if (extensions.Contains("gl_EXT_texture_env_dot3")) { EXT_texture_env_dot3 = true; extensions.Remove("glEXT_texture_env_dot3"); } if (extensions.Contains("gl_EXT_texture_filter_anisotropic")) { EXT_texture_filter_anisotropic = true; extensions.Remove("glEXT_texture_filter_anisotropic"); } if (extensions.Contains("gl_EXT_texture_filter_minmax")) { EXT_texture_filter_minmax = true; extensions.Remove("glEXT_texture_filter_minmax"); } if (extensions.Contains("gl_EXT_texture_integer")) { EXT_texture_integer = true; extensions.Remove("glEXT_texture_integer"); } if (extensions.Contains("gl_EXT_texture_lod_bias")) { EXT_texture_lod_bias = true; extensions.Remove("glEXT_texture_lod_bias"); } if (extensions.Contains("gl_EXT_texture_mirror_clamp")) { EXT_texture_mirror_clamp = true; extensions.Remove("glEXT_texture_mirror_clamp"); } if (extensions.Contains("gl_EXT_texture_object")) { EXT_texture_object = true; extensions.Remove("glEXT_texture_object"); } if (extensions.Contains("gl_EXT_texture_perturb_normal")) { EXT_texture_perturb_normal = true; extensions.Remove("glEXT_texture_perturb_normal"); } if (extensions.Contains("gl_EXT_texture_sRGB")) { EXT_texture_sRGB = true; extensions.Remove("glEXT_texture_sRGB"); } if (extensions.Contains("gl_EXT_texture_sRGB_R8")) { EXT_texture_sRGB_R8 = true; extensions.Remove("glEXT_texture_sRGB_R8"); } if (extensions.Contains("gl_EXT_texture_sRGB_RG8")) { EXT_texture_sRGB_RG8 = true; extensions.Remove("glEXT_texture_sRGB_RG8"); } if (extensions.Contains("gl_EXT_texture_sRGB_decode")) { EXT_texture_sRGB_decode = true; extensions.Remove("glEXT_texture_sRGB_decode"); } if (extensions.Contains("gl_EXT_texture_shadow_lod")) { EXT_texture_shadow_lod = true; extensions.Remove("glEXT_texture_shadow_lod"); } if (extensions.Contains("gl_EXT_texture_shared_exponent")) { EXT_texture_shared_exponent = true; extensions.Remove("glEXT_texture_shared_exponent"); } if (extensions.Contains("gl_EXT_texture_snorm")) { EXT_texture_snorm = true; extensions.Remove("glEXT_texture_snorm"); } if (extensions.Contains("gl_EXT_texture_storage")) { EXT_texture_storage = true; extensions.Remove("glEXT_texture_storage"); } if (extensions.Contains("gl_EXT_texture_swizzle")) { EXT_texture_swizzle = true; extensions.Remove("glEXT_texture_swizzle"); } if (extensions.Contains("gl_EXT_timer_query")) { EXT_timer_query = true; extensions.Remove("glEXT_timer_query"); } if (extensions.Contains("gl_EXT_transform_feedback")) { EXT_transform_feedback = true; extensions.Remove("glEXT_transform_feedback"); } if (extensions.Contains("gl_EXT_vertex_array")) { EXT_vertex_array = true; extensions.Remove("glEXT_vertex_array"); } if (extensions.Contains("gl_EXT_vertex_array_bgra")) { EXT_vertex_array_bgra = true; extensions.Remove("glEXT_vertex_array_bgra"); } if (extensions.Contains("gl_EXT_vertex_attrib_64bit")) { EXT_vertex_attrib_64bit = true; extensions.Remove("glEXT_vertex_attrib_64bit"); } if (extensions.Contains("gl_EXT_vertex_shader")) { EXT_vertex_shader = true; extensions.Remove("glEXT_vertex_shader"); } if (extensions.Contains("gl_EXT_vertex_weighting")) { EXT_vertex_weighting = true; extensions.Remove("glEXT_vertex_weighting"); } if (extensions.Contains("gl_EXT_win32_keyed_mutex")) { EXT_win32_keyed_mutex = true; extensions.Remove("glEXT_win32_keyed_mutex"); } if (extensions.Contains("gl_EXT_window_rectangles")) { EXT_window_rectangles = true; extensions.Remove("glEXT_window_rectangles"); } if (extensions.Contains("gl_EXT_x11_sync_object")) { EXT_x11_sync_object = true; extensions.Remove("glEXT_x11_sync_object"); } if (extensions.Contains("gl_GREMEDY_frame_terminator")) { GREMEDY_frame_terminator = true; extensions.Remove("glGREMEDY_frame_terminator"); } if (extensions.Contains("gl_GREMEDY_string_marker")) { GREMEDY_string_marker = true; extensions.Remove("glGREMEDY_string_marker"); } if (extensions.Contains("gl_HP_convolution_border_modes")) { HP_convolution_border_modes = true; extensions.Remove("glHP_convolution_border_modes"); } if (extensions.Contains("gl_HP_image_transform")) { HP_image_transform = true; extensions.Remove("glHP_image_transform"); } if (extensions.Contains("gl_HP_occlusion_test")) { HP_occlusion_test = true; extensions.Remove("glHP_occlusion_test"); } if (extensions.Contains("gl_HP_texture_lighting")) { HP_texture_lighting = true; extensions.Remove("glHP_texture_lighting"); } if (extensions.Contains("gl_IBM_cull_vertex")) { IBM_cull_vertex = true; extensions.Remove("glIBM_cull_vertex"); } if (extensions.Contains("gl_IBM_multimode_draw_arrays")) { IBM_multimode_draw_arrays = true; extensions.Remove("glIBM_multimode_draw_arrays"); } if (extensions.Contains("gl_IBM_rasterpos_clip")) { IBM_rasterpos_clip = true; extensions.Remove("glIBM_rasterpos_clip"); } if (extensions.Contains("gl_IBM_static_data")) { IBM_static_data = true; extensions.Remove("glIBM_static_data"); } if (extensions.Contains("gl_IBM_texture_mirrored_repeat")) { IBM_texture_mirrored_repeat = true; extensions.Remove("glIBM_texture_mirrored_repeat"); } if (extensions.Contains("gl_IBM_vertex_array_lists")) { IBM_vertex_array_lists = true; extensions.Remove("glIBM_vertex_array_lists"); } if (extensions.Contains("gl_INGR_blend_func_separate")) { INGR_blend_func_separate = true; extensions.Remove("glINGR_blend_func_separate"); } if (extensions.Contains("gl_INGR_color_clamp")) { INGR_color_clamp = true; extensions.Remove("glINGR_color_clamp"); } if (extensions.Contains("gl_INGR_interlace_read")) { INGR_interlace_read = true; extensions.Remove("glINGR_interlace_read"); } if (extensions.Contains("gl_INTEL_blackhole_render")) { INTEL_blackhole_render = true; extensions.Remove("glINTEL_blackhole_render"); } if (extensions.Contains("gl_INTEL_conservative_rasterization")) { INTEL_conservative_rasterization = true; extensions.Remove("glINTEL_conservative_rasterization"); } if (extensions.Contains("gl_INTEL_fragment_shader_ordering")) { INTEL_fragment_shader_ordering = true; extensions.Remove("glINTEL_fragment_shader_ordering"); } if (extensions.Contains("gl_INTEL_framebuffer_CMAA")) { INTEL_framebuffer_CMAA = true; extensions.Remove("glINTEL_framebuffer_CMAA"); } if (extensions.Contains("gl_INTEL_map_texture")) { INTEL_map_texture = true; extensions.Remove("glINTEL_map_texture"); } if (extensions.Contains("gl_INTEL_parallel_arrays")) { INTEL_parallel_arrays = true; extensions.Remove("glINTEL_parallel_arrays"); } if (extensions.Contains("gl_INTEL_performance_query")) { INTEL_performance_query = true; extensions.Remove("glINTEL_performance_query"); } if (extensions.Contains("gl_KHR_blend_equation_advanced")) { KHR_blend_equation_advanced = true; extensions.Remove("glKHR_blend_equation_advanced"); } if (extensions.Contains("gl_KHR_blend_equation_advanced_coherent")) { KHR_blend_equation_advanced_coherent = true; extensions.Remove("glKHR_blend_equation_advanced_coherent"); } if (extensions.Contains("gl_KHR_context_flush_control")) { KHR_context_flush_control = true; extensions.Remove("glKHR_context_flush_control"); } if (extensions.Contains("gl_KHR_debug")) { KHR_debug = true; extensions.Remove("glKHR_debug"); } if (extensions.Contains("gl_KHR_no_error")) { KHR_no_error = true; extensions.Remove("glKHR_no_error"); } if (extensions.Contains("gl_KHR_parallel_shader_compile")) { KHR_parallel_shader_compile = true; extensions.Remove("glKHR_parallel_shader_compile"); } if (extensions.Contains("gl_KHR_robust_buffer_access_behavior")) { KHR_robust_buffer_access_behavior = true; extensions.Remove("glKHR_robust_buffer_access_behavior"); } if (extensions.Contains("gl_KHR_robustness")) { KHR_robustness = true; extensions.Remove("glKHR_robustness"); } if (extensions.Contains("gl_KHR_shader_subgroup")) { KHR_shader_subgroup = true; extensions.Remove("glKHR_shader_subgroup"); } if (extensions.Contains("gl_KHR_texture_compression_astc_hdr")) { KHR_texture_compression_astc_hdr = true; extensions.Remove("glKHR_texture_compression_astc_hdr"); } if (extensions.Contains("gl_KHR_texture_compression_astc_ldr")) { KHR_texture_compression_astc_ldr = true; extensions.Remove("glKHR_texture_compression_astc_ldr"); } if (extensions.Contains("gl_KHR_texture_compression_astc_sliced_3d")) { KHR_texture_compression_astc_sliced_3d = true; extensions.Remove("glKHR_texture_compression_astc_sliced_3d"); } if (extensions.Contains("gl_MESAX_texture_stack")) { MESAX_texture_stack = true; extensions.Remove("glMESAX_texture_stack"); } if (extensions.Contains("gl_MESA_framebuffer_flip_x")) { MESA_framebuffer_flip_x = true; extensions.Remove("glMESA_framebuffer_flip_x"); } if (extensions.Contains("gl_MESA_framebuffer_flip_y")) { MESA_framebuffer_flip_y = true; extensions.Remove("glMESA_framebuffer_flip_y"); } if (extensions.Contains("gl_MESA_framebuffer_swap_xy")) { MESA_framebuffer_swap_xy = true; extensions.Remove("glMESA_framebuffer_swap_xy"); } if (extensions.Contains("gl_MESA_pack_invert")) { MESA_pack_invert = true; extensions.Remove("glMESA_pack_invert"); } if (extensions.Contains("gl_MESA_program_binary_formats")) { MESA_program_binary_formats = true; extensions.Remove("glMESA_program_binary_formats"); } if (extensions.Contains("gl_MESA_resize_buffers")) { MESA_resize_buffers = true; extensions.Remove("glMESA_resize_buffers"); } if (extensions.Contains("gl_MESA_shader_integer_functions")) { MESA_shader_integer_functions = true; extensions.Remove("glMESA_shader_integer_functions"); } if (extensions.Contains("gl_MESA_tile_raster_order")) { MESA_tile_raster_order = true; extensions.Remove("glMESA_tile_raster_order"); } if (extensions.Contains("gl_MESA_window_pos")) { MESA_window_pos = true; extensions.Remove("glMESA_window_pos"); } if (extensions.Contains("gl_MESA_ycbcr_texture")) { MESA_ycbcr_texture = true; extensions.Remove("glMESA_ycbcr_texture"); } if (extensions.Contains("gl_NVX_blend_equation_advanced_multi_draw_buffers")) { NVX_blend_equation_advanced_multi_draw_buffers = true; extensions.Remove("glNVX_blend_equation_advanced_multi_draw_buffers"); } if (extensions.Contains("gl_NVX_conditional_render")) { NVX_conditional_render = true; extensions.Remove("glNVX_conditional_render"); } if (extensions.Contains("gl_NVX_gpu_memory_info")) { NVX_gpu_memory_info = true; extensions.Remove("glNVX_gpu_memory_info"); } if (extensions.Contains("gl_NVX_gpu_multicast2")) { NVX_gpu_multicast2 = true; extensions.Remove("glNVX_gpu_multicast2"); } if (extensions.Contains("gl_NVX_linked_gpu_multicast")) { NVX_linked_gpu_multicast = true; extensions.Remove("glNVX_linked_gpu_multicast"); } if (extensions.Contains("gl_NVX_progress_fence")) { NVX_progress_fence = true; extensions.Remove("glNVX_progress_fence"); } if (extensions.Contains("gl_NV_alpha_to_coverage_dither_control")) { NV_alpha_to_coverage_dither_control = true; extensions.Remove("glNV_alpha_to_coverage_dither_control"); } if (extensions.Contains("gl_NV_bindless_multi_draw_indirect")) { NV_bindless_multi_draw_indirect = true; extensions.Remove("glNV_bindless_multi_draw_indirect"); } if (extensions.Contains("gl_NV_bindless_multi_draw_indirect_count")) { NV_bindless_multi_draw_indirect_count = true; extensions.Remove("glNV_bindless_multi_draw_indirect_count"); } if (extensions.Contains("gl_NV_bindless_texture")) { NV_bindless_texture = true; extensions.Remove("glNV_bindless_texture"); } if (extensions.Contains("gl_NV_blend_equation_advanced")) { NV_blend_equation_advanced = true; extensions.Remove("glNV_blend_equation_advanced"); } if (extensions.Contains("gl_NV_blend_equation_advanced_coherent")) { NV_blend_equation_advanced_coherent = true; extensions.Remove("glNV_blend_equation_advanced_coherent"); } if (extensions.Contains("gl_NV_blend_minmax_factor")) { NV_blend_minmax_factor = true; extensions.Remove("glNV_blend_minmax_factor"); } if (extensions.Contains("gl_NV_blend_square")) { NV_blend_square = true; extensions.Remove("glNV_blend_square"); } if (extensions.Contains("gl_NV_clip_space_w_scaling")) { NV_clip_space_w_scaling = true; extensions.Remove("glNV_clip_space_w_scaling"); } if (extensions.Contains("gl_NV_command_list")) { NV_command_list = true; extensions.Remove("glNV_command_list"); } if (extensions.Contains("gl_NV_compute_program5")) { NV_compute_program5 = true; extensions.Remove("glNV_compute_program5"); } if (extensions.Contains("gl_NV_compute_shader_derivatives")) { NV_compute_shader_derivatives = true; extensions.Remove("glNV_compute_shader_derivatives"); } if (extensions.Contains("gl_NV_conditional_render")) { NV_conditional_render = true; extensions.Remove("glNV_conditional_render"); } if (extensions.Contains("gl_NV_conservative_raster")) { NV_conservative_raster = true; extensions.Remove("glNV_conservative_raster"); } if (extensions.Contains("gl_NV_conservative_raster_dilate")) { NV_conservative_raster_dilate = true; extensions.Remove("glNV_conservative_raster_dilate"); } if (extensions.Contains("gl_NV_conservative_raster_pre_snap")) { NV_conservative_raster_pre_snap = true; extensions.Remove("glNV_conservative_raster_pre_snap"); } if (extensions.Contains("gl_NV_conservative_raster_pre_snap_triangles")) { NV_conservative_raster_pre_snap_triangles = true; extensions.Remove("glNV_conservative_raster_pre_snap_triangles"); } if (extensions.Contains("gl_NV_conservative_raster_underestimation")) { NV_conservative_raster_underestimation = true; extensions.Remove("glNV_conservative_raster_underestimation"); } if (extensions.Contains("gl_NV_copy_depth_to_color")) { NV_copy_depth_to_color = true; extensions.Remove("glNV_copy_depth_to_color"); } if (extensions.Contains("gl_NV_copy_image")) { NV_copy_image = true; extensions.Remove("glNV_copy_image"); } if (extensions.Contains("gl_NV_deep_texture3D")) { NV_deep_texture3D = true; extensions.Remove("glNV_deep_texture3D"); } if (extensions.Contains("gl_NV_depth_buffer_float")) { NV_depth_buffer_float = true; extensions.Remove("glNV_depth_buffer_float"); } if (extensions.Contains("gl_NV_depth_clamp")) { NV_depth_clamp = true; extensions.Remove("glNV_depth_clamp"); } if (extensions.Contains("gl_NV_draw_texture")) { NV_draw_texture = true; extensions.Remove("glNV_draw_texture"); } if (extensions.Contains("gl_NV_draw_vulkan_image")) { NV_draw_vulkan_image = true; extensions.Remove("glNV_draw_vulkan_image"); } if (extensions.Contains("gl_NV_evaluators")) { NV_evaluators = true; extensions.Remove("glNV_evaluators"); } if (extensions.Contains("gl_NV_explicit_multisample")) { NV_explicit_multisample = true; extensions.Remove("glNV_explicit_multisample"); } if (extensions.Contains("gl_NV_fence")) { NV_fence = true; extensions.Remove("glNV_fence"); } if (extensions.Contains("gl_NV_fill_rectangle")) { NV_fill_rectangle = true; extensions.Remove("glNV_fill_rectangle"); } if (extensions.Contains("gl_NV_float_buffer")) { NV_float_buffer = true; extensions.Remove("glNV_float_buffer"); } if (extensions.Contains("gl_NV_fog_distance")) { NV_fog_distance = true; extensions.Remove("glNV_fog_distance"); } if (extensions.Contains("gl_NV_fragment_coverage_to_color")) { NV_fragment_coverage_to_color = true; extensions.Remove("glNV_fragment_coverage_to_color"); } if (extensions.Contains("gl_NV_fragment_program")) { NV_fragment_program = true; extensions.Remove("glNV_fragment_program"); } if (extensions.Contains("gl_NV_fragment_program2")) { NV_fragment_program2 = true; extensions.Remove("glNV_fragment_program2"); } if (extensions.Contains("gl_NV_fragment_program4")) { NV_fragment_program4 = true; extensions.Remove("glNV_fragment_program4"); } if (extensions.Contains("gl_NV_fragment_program_option")) { NV_fragment_program_option = true; extensions.Remove("glNV_fragment_program_option"); } if (extensions.Contains("gl_NV_fragment_shader_barycentric")) { NV_fragment_shader_barycentric = true; extensions.Remove("glNV_fragment_shader_barycentric"); } if (extensions.Contains("gl_NV_fragment_shader_interlock")) { NV_fragment_shader_interlock = true; extensions.Remove("glNV_fragment_shader_interlock"); } if (extensions.Contains("gl_NV_framebuffer_mixed_samples")) { NV_framebuffer_mixed_samples = true; extensions.Remove("glNV_framebuffer_mixed_samples"); } if (extensions.Contains("gl_NV_framebuffer_multisample_coverage")) { NV_framebuffer_multisample_coverage = true; extensions.Remove("glNV_framebuffer_multisample_coverage"); } if (extensions.Contains("gl_NV_geometry_program4")) { NV_geometry_program4 = true; extensions.Remove("glNV_geometry_program4"); } if (extensions.Contains("gl_NV_geometry_shader4")) { NV_geometry_shader4 = true; extensions.Remove("glNV_geometry_shader4"); } if (extensions.Contains("gl_NV_geometry_shader_passthrough")) { NV_geometry_shader_passthrough = true; extensions.Remove("glNV_geometry_shader_passthrough"); } if (extensions.Contains("gl_NV_gpu_multicast")) { NV_gpu_multicast = true; extensions.Remove("glNV_gpu_multicast"); } if (extensions.Contains("gl_NV_gpu_program4")) { NV_gpu_program4 = true; extensions.Remove("glNV_gpu_program4"); } if (extensions.Contains("gl_NV_gpu_program5")) { NV_gpu_program5 = true; extensions.Remove("glNV_gpu_program5"); } if (extensions.Contains("gl_NV_gpu_program5_mem_extended")) { NV_gpu_program5_mem_extended = true; extensions.Remove("glNV_gpu_program5_mem_extended"); } if (extensions.Contains("gl_NV_gpu_shader5")) { NV_gpu_shader5 = true; extensions.Remove("glNV_gpu_shader5"); } if (extensions.Contains("gl_NV_half_float")) { NV_half_float = true; extensions.Remove("glNV_half_float"); } if (extensions.Contains("gl_NV_internalformat_sample_query")) { NV_internalformat_sample_query = true; extensions.Remove("glNV_internalformat_sample_query"); } if (extensions.Contains("gl_NV_light_max_exponent")) { NV_light_max_exponent = true; extensions.Remove("glNV_light_max_exponent"); } if (extensions.Contains("gl_NV_memory_attachment")) { NV_memory_attachment = true; extensions.Remove("glNV_memory_attachment"); } if (extensions.Contains("gl_NV_memory_object_sparse")) { NV_memory_object_sparse = true; extensions.Remove("glNV_memory_object_sparse"); } if (extensions.Contains("gl_NV_mesh_shader")) { NV_mesh_shader = true; extensions.Remove("glNV_mesh_shader"); } if (extensions.Contains("gl_NV_multisample_coverage")) { NV_multisample_coverage = true; extensions.Remove("glNV_multisample_coverage"); } if (extensions.Contains("gl_NV_multisample_filter_hint")) { NV_multisample_filter_hint = true; extensions.Remove("glNV_multisample_filter_hint"); } if (extensions.Contains("gl_NV_occlusion_query")) { NV_occlusion_query = true; extensions.Remove("glNV_occlusion_query"); } if (extensions.Contains("gl_NV_packed_depth_stencil")) { NV_packed_depth_stencil = true; extensions.Remove("glNV_packed_depth_stencil"); } if (extensions.Contains("gl_NV_parameter_buffer_object")) { NV_parameter_buffer_object = true; extensions.Remove("glNV_parameter_buffer_object"); } if (extensions.Contains("gl_NV_parameter_buffer_object2")) { NV_parameter_buffer_object2 = true; extensions.Remove("glNV_parameter_buffer_object2"); } if (extensions.Contains("gl_NV_path_rendering")) { NV_path_rendering = true; extensions.Remove("glNV_path_rendering"); } if (extensions.Contains("gl_NV_path_rendering_shared_edge")) { NV_path_rendering_shared_edge = true; extensions.Remove("glNV_path_rendering_shared_edge"); } if (extensions.Contains("gl_NV_pixel_data_range")) { NV_pixel_data_range = true; extensions.Remove("glNV_pixel_data_range"); } if (extensions.Contains("gl_NV_point_sprite")) { NV_point_sprite = true; extensions.Remove("glNV_point_sprite"); } if (extensions.Contains("gl_NV_present_video")) { NV_present_video = true; extensions.Remove("glNV_present_video"); } if (extensions.Contains("gl_NV_primitive_restart")) { NV_primitive_restart = true; extensions.Remove("glNV_primitive_restart"); } if (extensions.Contains("gl_NV_primitive_shading_rate")) { NV_primitive_shading_rate = true; extensions.Remove("glNV_primitive_shading_rate"); } if (extensions.Contains("gl_NV_query_resource")) { NV_query_resource = true; extensions.Remove("glNV_query_resource"); } if (extensions.Contains("gl_NV_query_resource_tag")) { NV_query_resource_tag = true; extensions.Remove("glNV_query_resource_tag"); } if (extensions.Contains("gl_NV_register_combiners")) { NV_register_combiners = true; extensions.Remove("glNV_register_combiners"); } if (extensions.Contains("gl_NV_register_combiners2")) { NV_register_combiners2 = true; extensions.Remove("glNV_register_combiners2"); } if (extensions.Contains("gl_NV_representative_fragment_test")) { NV_representative_fragment_test = true; extensions.Remove("glNV_representative_fragment_test"); } if (extensions.Contains("gl_NV_robustness_video_memory_purge")) { NV_robustness_video_memory_purge = true; extensions.Remove("glNV_robustness_video_memory_purge"); } if (extensions.Contains("gl_NV_sample_locations")) { NV_sample_locations = true; extensions.Remove("glNV_sample_locations"); } if (extensions.Contains("gl_NV_sample_mask_override_coverage")) { NV_sample_mask_override_coverage = true; extensions.Remove("glNV_sample_mask_override_coverage"); } if (extensions.Contains("gl_NV_scissor_exclusive")) { NV_scissor_exclusive = true; extensions.Remove("glNV_scissor_exclusive"); } if (extensions.Contains("gl_NV_shader_atomic_counters")) { NV_shader_atomic_counters = true; extensions.Remove("glNV_shader_atomic_counters"); } if (extensions.Contains("gl_NV_shader_atomic_float")) { NV_shader_atomic_float = true; extensions.Remove("glNV_shader_atomic_float"); } if (extensions.Contains("gl_NV_shader_atomic_float64")) { NV_shader_atomic_float64 = true; extensions.Remove("glNV_shader_atomic_float64"); } if (extensions.Contains("gl_NV_shader_atomic_fp16_vector")) { NV_shader_atomic_fp16_vector = true; extensions.Remove("glNV_shader_atomic_fp16_vector"); } if (extensions.Contains("gl_NV_shader_atomic_int64")) { NV_shader_atomic_int64 = true; extensions.Remove("glNV_shader_atomic_int64"); } if (extensions.Contains("gl_NV_shader_buffer_load")) { NV_shader_buffer_load = true; extensions.Remove("glNV_shader_buffer_load"); } if (extensions.Contains("gl_NV_shader_buffer_store")) { NV_shader_buffer_store = true; extensions.Remove("glNV_shader_buffer_store"); } if (extensions.Contains("gl_NV_shader_storage_buffer_object")) { NV_shader_storage_buffer_object = true; extensions.Remove("glNV_shader_storage_buffer_object"); } if (extensions.Contains("gl_NV_shader_subgroup_partitioned")) { NV_shader_subgroup_partitioned = true; extensions.Remove("glNV_shader_subgroup_partitioned"); } if (extensions.Contains("gl_NV_shader_texture_footprint")) { NV_shader_texture_footprint = true; extensions.Remove("glNV_shader_texture_footprint"); } if (extensions.Contains("gl_NV_shader_thread_group")) { NV_shader_thread_group = true; extensions.Remove("glNV_shader_thread_group"); } if (extensions.Contains("gl_NV_shader_thread_shuffle")) { NV_shader_thread_shuffle = true; extensions.Remove("glNV_shader_thread_shuffle"); } if (extensions.Contains("gl_NV_shading_rate_image")) { NV_shading_rate_image = true; extensions.Remove("glNV_shading_rate_image"); } if (extensions.Contains("gl_NV_stereo_view_rendering")) { NV_stereo_view_rendering = true; extensions.Remove("glNV_stereo_view_rendering"); } if (extensions.Contains("gl_NV_tessellation_program5")) { NV_tessellation_program5 = true; extensions.Remove("glNV_tessellation_program5"); } if (extensions.Contains("gl_NV_texgen_emboss")) { NV_texgen_emboss = true; extensions.Remove("glNV_texgen_emboss"); } if (extensions.Contains("gl_NV_texgen_reflection")) { NV_texgen_reflection = true; extensions.Remove("glNV_texgen_reflection"); } if (extensions.Contains("gl_NV_texture_barrier")) { NV_texture_barrier = true; extensions.Remove("glNV_texture_barrier"); } if (extensions.Contains("gl_NV_texture_compression_vtc")) { NV_texture_compression_vtc = true; extensions.Remove("glNV_texture_compression_vtc"); } if (extensions.Contains("gl_NV_texture_env_combine4")) { NV_texture_env_combine4 = true; extensions.Remove("glNV_texture_env_combine4"); } if (extensions.Contains("gl_NV_texture_expand_normal")) { NV_texture_expand_normal = true; extensions.Remove("glNV_texture_expand_normal"); } if (extensions.Contains("gl_NV_texture_multisample")) { NV_texture_multisample = true; extensions.Remove("glNV_texture_multisample"); } if (extensions.Contains("gl_NV_texture_rectangle")) { NV_texture_rectangle = true; extensions.Remove("glNV_texture_rectangle"); } if (extensions.Contains("gl_NV_texture_rectangle_compressed")) { NV_texture_rectangle_compressed = true; extensions.Remove("glNV_texture_rectangle_compressed"); } if (extensions.Contains("gl_NV_texture_shader")) { NV_texture_shader = true; extensions.Remove("glNV_texture_shader"); } if (extensions.Contains("gl_NV_texture_shader2")) { NV_texture_shader2 = true; extensions.Remove("glNV_texture_shader2"); } if (extensions.Contains("gl_NV_texture_shader3")) { NV_texture_shader3 = true; extensions.Remove("glNV_texture_shader3"); } if (extensions.Contains("gl_NV_timeline_semaphore")) { NV_timeline_semaphore = true; extensions.Remove("glNV_timeline_semaphore"); } if (extensions.Contains("gl_NV_transform_feedback")) { NV_transform_feedback = true; extensions.Remove("glNV_transform_feedback"); } if (extensions.Contains("gl_NV_transform_feedback2")) { NV_transform_feedback2 = true; extensions.Remove("glNV_transform_feedback2"); } if (extensions.Contains("gl_NV_uniform_buffer_std430_layout")) { NV_uniform_buffer_std430_layout = true; extensions.Remove("glNV_uniform_buffer_std430_layout"); } if (extensions.Contains("gl_NV_uniform_buffer_unified_memory")) { NV_uniform_buffer_unified_memory = true; extensions.Remove("glNV_uniform_buffer_unified_memory"); } if (extensions.Contains("gl_NV_vdpau_interop")) { NV_vdpau_interop = true; extensions.Remove("glNV_vdpau_interop"); } if (extensions.Contains("gl_NV_vdpau_interop2")) { NV_vdpau_interop2 = true; extensions.Remove("glNV_vdpau_interop2"); } if (extensions.Contains("gl_NV_vertex_array_range")) { NV_vertex_array_range = true; extensions.Remove("glNV_vertex_array_range"); } if (extensions.Contains("gl_NV_vertex_array_range2")) { NV_vertex_array_range2 = true; extensions.Remove("glNV_vertex_array_range2"); } if (extensions.Contains("gl_NV_vertex_attrib_integer_64bit")) { NV_vertex_attrib_integer_64bit = true; extensions.Remove("glNV_vertex_attrib_integer_64bit"); } if (extensions.Contains("gl_NV_vertex_buffer_unified_memory")) { NV_vertex_buffer_unified_memory = true; extensions.Remove("glNV_vertex_buffer_unified_memory"); } if (extensions.Contains("gl_NV_vertex_program")) { NV_vertex_program = true; extensions.Remove("glNV_vertex_program"); } if (extensions.Contains("gl_NV_vertex_program1_1")) { NV_vertex_program1_1 = true; extensions.Remove("glNV_vertex_program1_1"); } if (extensions.Contains("gl_NV_vertex_program2")) { NV_vertex_program2 = true; extensions.Remove("glNV_vertex_program2"); } if (extensions.Contains("gl_NV_vertex_program2_option")) { NV_vertex_program2_option = true; extensions.Remove("glNV_vertex_program2_option"); } if (extensions.Contains("gl_NV_vertex_program3")) { NV_vertex_program3 = true; extensions.Remove("glNV_vertex_program3"); } if (extensions.Contains("gl_NV_vertex_program4")) { NV_vertex_program4 = true; extensions.Remove("glNV_vertex_program4"); } if (extensions.Contains("gl_NV_video_capture")) { NV_video_capture = true; extensions.Remove("glNV_video_capture"); } if (extensions.Contains("gl_NV_viewport_array2")) { NV_viewport_array2 = true; extensions.Remove("glNV_viewport_array2"); } if (extensions.Contains("gl_NV_viewport_swizzle")) { NV_viewport_swizzle = true; extensions.Remove("glNV_viewport_swizzle"); } if (extensions.Contains("gl_OES_byte_coordinates")) { OES_byte_coordinates = true; extensions.Remove("glOES_byte_coordinates"); } if (extensions.Contains("gl_OES_compressed_paletted_texture")) { OES_compressed_paletted_texture = true; extensions.Remove("glOES_compressed_paletted_texture"); } if (extensions.Contains("gl_OES_fixed_point")) { OES_fixed_point = true; extensions.Remove("glOES_fixed_point"); } if (extensions.Contains("gl_OES_query_matrix")) { OES_query_matrix = true; extensions.Remove("glOES_query_matrix"); } if (extensions.Contains("gl_OES_read_format")) { OES_read_format = true; extensions.Remove("glOES_read_format"); } if (extensions.Contains("gl_OES_single_precision")) { OES_single_precision = true; extensions.Remove("glOES_single_precision"); } if (extensions.Contains("gl_OML_interlace")) { OML_interlace = true; extensions.Remove("glOML_interlace"); } if (extensions.Contains("gl_OML_resample")) { OML_resample = true; extensions.Remove("glOML_resample"); } if (extensions.Contains("gl_OML_subsample")) { OML_subsample = true; extensions.Remove("glOML_subsample"); } if (extensions.Contains("gl_OVR_multiview")) { OVR_multiview = true; extensions.Remove("glOVR_multiview"); } if (extensions.Contains("gl_OVR_multiview2")) { OVR_multiview2 = true; extensions.Remove("glOVR_multiview2"); } if (extensions.Contains("gl_PGI_misc_hints")) { PGI_misc_hints = true; extensions.Remove("glPGI_misc_hints"); } if (extensions.Contains("gl_PGI_vertex_hints")) { PGI_vertex_hints = true; extensions.Remove("glPGI_vertex_hints"); } if (extensions.Contains("gl_REND_screen_coordinates")) { REND_screen_coordinates = true; extensions.Remove("glREND_screen_coordinates"); } if (extensions.Contains("gl_S3_s3tc")) { S3_s3tc = true; extensions.Remove("glS3_s3tc"); } if (extensions.Contains("gl_SGIS_detail_texture")) { SGIS_detail_texture = true; extensions.Remove("glSGIS_detail_texture"); } if (extensions.Contains("gl_SGIS_fog_function")) { SGIS_fog_function = true; extensions.Remove("glSGIS_fog_function"); } if (extensions.Contains("gl_SGIS_generate_mipmap")) { SGIS_generate_mipmap = true; extensions.Remove("glSGIS_generate_mipmap"); } if (extensions.Contains("gl_SGIS_multisample")) { SGIS_multisample = true; extensions.Remove("glSGIS_multisample"); } if (extensions.Contains("gl_SGIS_pixel_texture")) { SGIS_pixel_texture = true; extensions.Remove("glSGIS_pixel_texture"); } if (extensions.Contains("gl_SGIS_point_line_texgen")) { SGIS_point_line_texgen = true; extensions.Remove("glSGIS_point_line_texgen"); } if (extensions.Contains("gl_SGIS_point_parameters")) { SGIS_point_parameters = true; extensions.Remove("glSGIS_point_parameters"); } if (extensions.Contains("gl_SGIS_sharpen_texture")) { SGIS_sharpen_texture = true; extensions.Remove("glSGIS_sharpen_texture"); } if (extensions.Contains("gl_SGIS_texture4D")) { SGIS_texture4D = true; extensions.Remove("glSGIS_texture4D"); } if (extensions.Contains("gl_SGIS_texture_border_clamp")) { SGIS_texture_border_clamp = true; extensions.Remove("glSGIS_texture_border_clamp"); } if (extensions.Contains("gl_SGIS_texture_color_mask")) { SGIS_texture_color_mask = true; extensions.Remove("glSGIS_texture_color_mask"); } if (extensions.Contains("gl_SGIS_texture_edge_clamp")) { SGIS_texture_edge_clamp = true; extensions.Remove("glSGIS_texture_edge_clamp"); } if (extensions.Contains("gl_SGIS_texture_filter4")) { SGIS_texture_filter4 = true; extensions.Remove("glSGIS_texture_filter4"); } if (extensions.Contains("gl_SGIS_texture_lod")) { SGIS_texture_lod = true; extensions.Remove("glSGIS_texture_lod"); } if (extensions.Contains("gl_SGIS_texture_select")) { SGIS_texture_select = true; extensions.Remove("glSGIS_texture_select"); } if (extensions.Contains("gl_SGIX_async")) { SGIX_async = true; extensions.Remove("glSGIX_async"); } if (extensions.Contains("gl_SGIX_async_histogram")) { SGIX_async_histogram = true; extensions.Remove("glSGIX_async_histogram"); } if (extensions.Contains("gl_SGIX_async_pixel")) { SGIX_async_pixel = true; extensions.Remove("glSGIX_async_pixel"); } if (extensions.Contains("gl_SGIX_blend_alpha_minmax")) { SGIX_blend_alpha_minmax = true; extensions.Remove("glSGIX_blend_alpha_minmax"); } if (extensions.Contains("gl_SGIX_calligraphic_fragment")) { SGIX_calligraphic_fragment = true; extensions.Remove("glSGIX_calligraphic_fragment"); } if (extensions.Contains("gl_SGIX_clipmap")) { SGIX_clipmap = true; extensions.Remove("glSGIX_clipmap"); } if (extensions.Contains("gl_SGIX_convolution_accuracy")) { SGIX_convolution_accuracy = true; extensions.Remove("glSGIX_convolution_accuracy"); } if (extensions.Contains("gl_SGIX_depth_pass_instrument")) { SGIX_depth_pass_instrument = true; extensions.Remove("glSGIX_depth_pass_instrument"); } if (extensions.Contains("gl_SGIX_depth_texture")) { SGIX_depth_texture = true; extensions.Remove("glSGIX_depth_texture"); } if (extensions.Contains("gl_SGIX_flush_raster")) { SGIX_flush_raster = true; extensions.Remove("glSGIX_flush_raster"); } if (extensions.Contains("gl_SGIX_fog_offset")) { SGIX_fog_offset = true; extensions.Remove("glSGIX_fog_offset"); } if (extensions.Contains("gl_SGIX_fragment_lighting")) { SGIX_fragment_lighting = true; extensions.Remove("glSGIX_fragment_lighting"); } if (extensions.Contains("gl_SGIX_framezoom")) { SGIX_framezoom = true; extensions.Remove("glSGIX_framezoom"); } if (extensions.Contains("gl_SGIX_igloo_interface")) { SGIX_igloo_interface = true; extensions.Remove("glSGIX_igloo_interface"); } if (extensions.Contains("gl_SGIX_instruments")) { SGIX_instruments = true; extensions.Remove("glSGIX_instruments"); } if (extensions.Contains("gl_SGIX_interlace")) { SGIX_interlace = true; extensions.Remove("glSGIX_interlace"); } if (extensions.Contains("gl_SGIX_ir_instrument1")) { SGIX_ir_instrument1 = true; extensions.Remove("glSGIX_ir_instrument1"); } if (extensions.Contains("gl_SGIX_list_priority")) { SGIX_list_priority = true; extensions.Remove("glSGIX_list_priority"); } if (extensions.Contains("gl_SGIX_pixel_texture")) { SGIX_pixel_texture = true; extensions.Remove("glSGIX_pixel_texture"); } if (extensions.Contains("gl_SGIX_pixel_tiles")) { SGIX_pixel_tiles = true; extensions.Remove("glSGIX_pixel_tiles"); } if (extensions.Contains("gl_SGIX_polynomial_ffd")) { SGIX_polynomial_ffd = true; extensions.Remove("glSGIX_polynomial_ffd"); } if (extensions.Contains("gl_SGIX_reference_plane")) { SGIX_reference_plane = true; extensions.Remove("glSGIX_reference_plane"); } if (extensions.Contains("gl_SGIX_resample")) { SGIX_resample = true; extensions.Remove("glSGIX_resample"); } if (extensions.Contains("gl_SGIX_scalebias_hint")) { SGIX_scalebias_hint = true; extensions.Remove("glSGIX_scalebias_hint"); } if (extensions.Contains("gl_SGIX_shadow")) { SGIX_shadow = true; extensions.Remove("glSGIX_shadow"); } if (extensions.Contains("gl_SGIX_shadow_ambient")) { SGIX_shadow_ambient = true; extensions.Remove("glSGIX_shadow_ambient"); } if (extensions.Contains("gl_SGIX_sprite")) { SGIX_sprite = true; extensions.Remove("glSGIX_sprite"); } if (extensions.Contains("gl_SGIX_subsample")) { SGIX_subsample = true; extensions.Remove("glSGIX_subsample"); } if (extensions.Contains("gl_SGIX_tag_sample_buffer")) { SGIX_tag_sample_buffer = true; extensions.Remove("glSGIX_tag_sample_buffer"); } if (extensions.Contains("gl_SGIX_texture_add_env")) { SGIX_texture_add_env = true; extensions.Remove("glSGIX_texture_add_env"); } if (extensions.Contains("gl_SGIX_texture_coordinate_clamp")) { SGIX_texture_coordinate_clamp = true; extensions.Remove("glSGIX_texture_coordinate_clamp"); } if (extensions.Contains("gl_SGIX_texture_lod_bias")) { SGIX_texture_lod_bias = true; extensions.Remove("glSGIX_texture_lod_bias"); } if (extensions.Contains("gl_SGIX_texture_multi_buffer")) { SGIX_texture_multi_buffer = true; extensions.Remove("glSGIX_texture_multi_buffer"); } if (extensions.Contains("gl_SGIX_texture_scale_bias")) { SGIX_texture_scale_bias = true; extensions.Remove("glSGIX_texture_scale_bias"); } if (extensions.Contains("gl_SGIX_vertex_preclip")) { SGIX_vertex_preclip = true; extensions.Remove("glSGIX_vertex_preclip"); } if (extensions.Contains("gl_SGIX_ycrcb")) { SGIX_ycrcb = true; extensions.Remove("glSGIX_ycrcb"); } if (extensions.Contains("gl_SGIX_ycrcb_subsample")) { SGIX_ycrcb_subsample = true; extensions.Remove("glSGIX_ycrcb_subsample"); } if (extensions.Contains("gl_SGIX_ycrcba")) { SGIX_ycrcba = true; extensions.Remove("glSGIX_ycrcba"); } if (extensions.Contains("gl_SGI_color_matrix")) { SGI_color_matrix = true; extensions.Remove("glSGI_color_matrix"); } if (extensions.Contains("gl_SGI_color_table")) { SGI_color_table = true; extensions.Remove("glSGI_color_table"); } if (extensions.Contains("gl_SGI_texture_color_table")) { SGI_texture_color_table = true; extensions.Remove("glSGI_texture_color_table"); } if (extensions.Contains("gl_SUNX_constant_data")) { SUNX_constant_data = true; extensions.Remove("glSUNX_constant_data"); } if (extensions.Contains("gl_SUN_convolution_border_modes")) { SUN_convolution_border_modes = true; extensions.Remove("glSUN_convolution_border_modes"); } if (extensions.Contains("gl_SUN_global_alpha")) { SUN_global_alpha = true; extensions.Remove("glSUN_global_alpha"); } if (extensions.Contains("gl_SUN_mesh_array")) { SUN_mesh_array = true; extensions.Remove("glSUN_mesh_array"); } if (extensions.Contains("gl_SUN_slice_accum")) { SUN_slice_accum = true; extensions.Remove("glSUN_slice_accum"); } if (extensions.Contains("gl_SUN_triangle_list")) { SUN_triangle_list = true; extensions.Remove("glSUN_triangle_list"); } if (extensions.Contains("gl_SUN_vertex")) { SUN_vertex = true; extensions.Remove("glSUN_vertex"); } if (extensions.Contains("gl_WIN_phong_shading")) { WIN_phong_shading = true; extensions.Remove("glWIN_phong_shading"); } if (extensions.Contains("gl_WIN_specular_fog")) { WIN_specular_fog = true; extensions.Remove("glWIN_specular_fog"); } #endregion InternalIO.InternalWriteLog("Find OpenGL extensions.", LogType.Info); } /// /// Get the function pointer of given OpenGL api name /// /// Name of the OpenGL api /// The funtion pointer of the api in form of public static IntPtr LoadGLfunc(string name) { IntPtr ret = InternalIO.glfw.GetProcAddress(name); if (ret == default) { InternalIO.InternalAppendLog( $"Cannot load OpenGL api called {name}, this api may not exist or supported."); return ret; } return ret; } internal static void CheckCoreVersion(int majorVersion, int minorVersion) { if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 0)) core10 = true; else goto log; if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 1)) core11 = true; else goto log; if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 2)) core12 = true; else goto log; if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 3)) core13 = true; else goto log; if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 4)) core14 = true; else goto log; if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 5)) core15 = true; else goto log; if ((majorVersion >= 2) || (majorVersion == 2 && minorVersion == 0)) core20 = true; else goto log; if ((majorVersion >= 2) || (majorVersion == 2 && minorVersion == 1)) core21 = true; else goto log; if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 0)) core30 = true; else goto log; if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 1)) core31 = true; else goto log; if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 2)) core32 = true; else goto log; if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 3)) core33 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 0)) core40 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 1)) core41 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 2)) core42 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 3)) core43 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 4)) core44 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 5)) core45 = true; else goto log; if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 6)) core46 = true; else goto log; log: { InternalIO.InternalWriteLog("Find core OpenGL version.", LogType.Info); return; } } internal unsafe static string GetExtensions(this Form form) { if (form.glContext == null) { return ""; } return Marshal.PtrToStringAnsi( form.glContext.GetString(glExtension)); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static T internalLoadAPI(IntPtr ptr) where T : Delegate { try { if (ptr == IntPtr.Zero) { return null; } T func = Marshal.GetDelegateForFunctionPointer(ptr); return func; } catch (Exception ex) { InternalIO.InternalWriteLog( $"Failed to convert the api {typeof(T).Name}.\n" + ex.Message, LogType.Warning); return default; } } internal static unsafe void LoadGLcore10(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core10) { InternalIO.InternalAppendLog("The core version 1.0 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BlendFunc = load("glBlendFunc"); context.BlendFunc = internalLoadAPI(contextPtr->BlendFunc); contextPtr->Clear = load("glClear"); context.Clear = internalLoadAPI(contextPtr->Clear); contextPtr->ClearColor = load("glClearColor"); context.ClearColor = internalLoadAPI(contextPtr->ClearColor); contextPtr->ClearDepth = load("glClearDepth"); context.ClearDepth = internalLoadAPI(contextPtr->ClearDepth); contextPtr->ClearStencil = load("glClearStencil"); context.ClearStencil = internalLoadAPI(contextPtr->ClearStencil); contextPtr->ColorMask = load("glColorMask"); context.ColorMask = internalLoadAPI(contextPtr->ColorMask); contextPtr->CullFace = load("glCullFace"); context.CullFace = internalLoadAPI(contextPtr->CullFace); contextPtr->DepthFunc = load("glDepthFunc"); context.DepthFunc = internalLoadAPI(contextPtr->DepthFunc); contextPtr->DepthMask = load("glDepthMask"); context.DepthMask = internalLoadAPI(contextPtr->DepthMask); contextPtr->DepthRange = load("glDepthRange"); context.DepthRange = internalLoadAPI(contextPtr->DepthRange); contextPtr->Disable = load("glDisable"); context.Disable = internalLoadAPI(contextPtr->Disable); contextPtr->DrawBuffer = load("glDrawBuffer"); context.DrawBuffer = internalLoadAPI(contextPtr->DrawBuffer); contextPtr->Enable = load("glEnable"); context.Enable = internalLoadAPI(contextPtr->Enable); contextPtr->Finish = load("glFinish"); context.Finish = internalLoadAPI(contextPtr->Finish); contextPtr->Flush = load("glFlush"); context.Flush = internalLoadAPI(contextPtr->Flush); contextPtr->FrontFace = load("glFrontFace"); context.FrontFace = internalLoadAPI(contextPtr->FrontFace); contextPtr->GetBooleanv = load("glGetBooleanv"); context.GetBooleanv = internalLoadAPI(contextPtr->GetBooleanv); contextPtr->GetDoublev = load("glGetDoublev"); context.GetDoublev = internalLoadAPI(contextPtr->GetDoublev); contextPtr->GetError = load("glGetError"); context.GetError = internalLoadAPI(contextPtr->GetError); contextPtr->GetFloatv = load("glGetFloatv"); context.GetFloatv = internalLoadAPI(contextPtr->GetFloatv); contextPtr->GetIntegerv = load("glGetIntegerv"); context.GetIntegerv = internalLoadAPI(contextPtr->GetIntegerv); contextPtr->GetString = load("glGetString"); context.GetString = internalLoadAPI(contextPtr->GetString); contextPtr->GetTexImage = load("glGetTexImage"); context.GetTexImage = internalLoadAPI(contextPtr->GetTexImage); contextPtr->GetTexLevelParameterfv = load("glGetTexLevelParameterfv"); context.GetTexLevelParameterfv = internalLoadAPI(contextPtr->GetTexLevelParameterfv); contextPtr->GetTexLevelParameteriv = load("glGetTexLevelParameteriv"); context.GetTexLevelParameteriv = internalLoadAPI(contextPtr->GetTexLevelParameteriv); contextPtr->GetTexParameterfv = load("glGetTexParameterfv"); context.GetTexParameterfv = internalLoadAPI(contextPtr->GetTexParameterfv); contextPtr->GetTexParameteriv = load("glGetTexParameteriv"); context.GetTexParameteriv = internalLoadAPI(contextPtr->GetTexParameteriv); contextPtr->Hint = load("glHint"); context.Hint = internalLoadAPI(contextPtr->Hint); contextPtr->IsEnabled = load("glIsEnabled"); context.IsEnabled = internalLoadAPI(contextPtr->IsEnabled); contextPtr->LineWidth = load("glLineWidth"); context.LineWidth = internalLoadAPI(contextPtr->LineWidth); contextPtr->LogicOp = load("glLogicOp"); context.LogicOp = internalLoadAPI(contextPtr->LogicOp); contextPtr->PixelStoref = load("glPixelStoref"); context.PixelStoref = internalLoadAPI(contextPtr->PixelStoref); contextPtr->PixelStorei = load("glPixelStorei"); context.PixelStorei = internalLoadAPI(contextPtr->PixelStorei); contextPtr->PointSize = load("glPointSize"); context.PointSize = internalLoadAPI(contextPtr->PointSize); contextPtr->PolygonMode = load("glPolygonMode"); context.PolygonMode = internalLoadAPI(contextPtr->PolygonMode); contextPtr->ReadBuffer = load("glReadBuffer"); context.ReadBuffer = internalLoadAPI(contextPtr->ReadBuffer); contextPtr->ReadPixels = load("glReadPixels"); context.ReadPixels = internalLoadAPI(contextPtr->ReadPixels); contextPtr->Scissor = load("glScissor"); context.Scissor = internalLoadAPI(contextPtr->Scissor); contextPtr->StencilFunc = load("glStencilFunc"); context.StencilFunc = internalLoadAPI(contextPtr->StencilFunc); contextPtr->StencilMask = load("glStencilMask"); context.StencilMask = internalLoadAPI(contextPtr->StencilMask); contextPtr->StencilOp = load("glStencilOp"); context.StencilOp = internalLoadAPI(contextPtr->StencilOp); contextPtr->TexImage1D = load("glTexImage1D"); context.TexImage1D = internalLoadAPI(contextPtr->TexImage1D); contextPtr->TexImage2D = load("glTexImage2D"); context.TexImage2D = internalLoadAPI(contextPtr->TexImage2D); contextPtr->TexParameterf = load("glTexParameterf"); context.TexParameterf = internalLoadAPI(contextPtr->TexParameterf); contextPtr->TexParameterfv = load("glTexParameterfv"); context.TexParameterfv = internalLoadAPI(contextPtr->TexParameterfv); contextPtr->TexParameteri = load("glTexParameteri"); context.TexParameteri = internalLoadAPI(contextPtr->TexParameteri); contextPtr->TexParameteriv = load("glTexParameteriv"); context.TexParameteriv = internalLoadAPI(contextPtr->TexParameteriv); contextPtr->Viewport = load("glViewport"); context.Viewport = internalLoadAPI(contextPtr->Viewport); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 1.0 APIs"); } internal static unsafe void LoadGLcore11(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core11) { InternalIO.InternalAppendLog("The core version 1.1 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindTexture = load("glBindTexture"); context.BindTexture = internalLoadAPI(contextPtr->BindTexture); contextPtr->CopyTexImage1D = load("glCopyTexImage1D"); context.CopyTexImage1D = internalLoadAPI(contextPtr->CopyTexImage1D); contextPtr->CopyTexImage2D = load("glCopyTexImage2D"); context.CopyTexImage2D = internalLoadAPI(contextPtr->CopyTexImage2D); contextPtr->CopyTexSubImage1D = load("glCopyTexSubImage1D"); context.CopyTexSubImage1D = internalLoadAPI(contextPtr->CopyTexSubImage1D); contextPtr->CopyTexSubImage2D = load("glCopyTexSubImage2D"); context.CopyTexSubImage2D = internalLoadAPI(contextPtr->CopyTexSubImage2D); contextPtr->DeleteTextures = load("glDeleteTextures"); context.DeleteTextures = internalLoadAPI(contextPtr->DeleteTextures); contextPtr->DrawArrays = load("glDrawArrays"); context.DrawArrays = internalLoadAPI(contextPtr->DrawArrays); contextPtr->DrawElements = load("glDrawElements"); context.DrawElements = internalLoadAPI(contextPtr->DrawElements); contextPtr->GenTextures = load("glGenTextures"); context.GenTextures = internalLoadAPI(contextPtr->GenTextures); contextPtr->GetPointerv = load("glGetPointerv"); context.GetPointerv = internalLoadAPI(contextPtr->GetPointerv); contextPtr->IsTexture = load("glIsTexture"); context.IsTexture = internalLoadAPI(contextPtr->IsTexture); contextPtr->PolygonOffset = load("glPolygonOffset"); context.PolygonOffset = internalLoadAPI(contextPtr->PolygonOffset); contextPtr->TexSubImage1D = load("glTexSubImage1D"); context.TexSubImage1D = internalLoadAPI(contextPtr->TexSubImage1D); contextPtr->TexSubImage2D = load("glTexSubImage2D"); context.TexSubImage2D = internalLoadAPI(contextPtr->TexSubImage2D); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 1.1 APIs"); } internal static unsafe void LoadGLcore12(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core12) { InternalIO.InternalAppendLog("The core version 1.2 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->CopyTexSubImage3D = load("glCopyTexSubImage3D"); context.CopyTexSubImage3D = internalLoadAPI(contextPtr->CopyTexSubImage3D); contextPtr->DrawRangeElements = load("glDrawRangeElements"); context.DrawRangeElements = internalLoadAPI(contextPtr->DrawRangeElements); contextPtr->TexImage3D = load("glTexImage3D"); context.TexImage3D = internalLoadAPI(contextPtr->TexImage3D); contextPtr->TexSubImage3D = load("glTexSubImage3D"); context.TexSubImage3D = internalLoadAPI(contextPtr->TexSubImage3D); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 1.2 APIs"); } internal static unsafe void LoadGLcore13(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core13) { InternalIO.InternalAppendLog("The core version 1.3 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->ActiveTexture = load("glActiveTexture"); context.ActiveTexture = internalLoadAPI(contextPtr->ActiveTexture); contextPtr->CompressedTexImage1D = load("glCompressedTexImage1D"); context.CompressedTexImage1D = internalLoadAPI(contextPtr->CompressedTexImage1D); contextPtr->CompressedTexImage2D = load("glCompressedTexImage2D"); context.CompressedTexImage2D = internalLoadAPI(contextPtr->CompressedTexImage2D); contextPtr->CompressedTexImage3D = load("glCompressedTexImage3D"); context.CompressedTexImage3D = internalLoadAPI(contextPtr->CompressedTexImage3D); contextPtr->CompressedTexSubImage1D = load("glCompressedTexSubImage1D"); context.CompressedTexSubImage1D = internalLoadAPI(contextPtr->CompressedTexSubImage1D); contextPtr->CompressedTexSubImage2D = load("glCompressedTexSubImage2D"); context.CompressedTexSubImage2D = internalLoadAPI(contextPtr->CompressedTexSubImage2D); contextPtr->CompressedTexSubImage3D = load("glCompressedTexSubImage3D"); context.CompressedTexSubImage3D = internalLoadAPI(contextPtr->CompressedTexSubImage3D); contextPtr->GetCompressedTexImage = load("glGetCompressedTexImage"); context.GetCompressedTexImage = internalLoadAPI(contextPtr->GetCompressedTexImage); contextPtr->SampleCoverage = load("glSampleCoverage"); context.SampleCoverage = internalLoadAPI(contextPtr->SampleCoverage); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 1.3 APIs"); } internal static unsafe void LoadGLcore14(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core14) { InternalIO.InternalAppendLog("The core version 1.4 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BlendColor = load("glBlendColor"); context.BlendColor = internalLoadAPI(contextPtr->BlendColor); contextPtr->BlendEquation = load("glBlendEquation"); context.BlendEquation = internalLoadAPI(contextPtr->BlendEquation); contextPtr->BlendFuncSeparate = load("glBlendFuncSeparate"); context.BlendFuncSeparate = internalLoadAPI(contextPtr->BlendFuncSeparate); contextPtr->MultiDrawArrays = load("glMultiDrawArrays"); context.MultiDrawArrays = internalLoadAPI(contextPtr->MultiDrawArrays); contextPtr->MultiDrawElements = load("glMultiDrawElements"); context.MultiDrawElements = internalLoadAPI(contextPtr->MultiDrawElements); contextPtr->PointParameterf = load("glPointParameterf"); context.PointParameterf = internalLoadAPI(contextPtr->PointParameterf); contextPtr->PointParameterfv = load("glPointParameterfv"); context.PointParameterfv = internalLoadAPI(contextPtr->PointParameterfv); contextPtr->PointParameteri = load("glPointParameteri"); context.PointParameteri = internalLoadAPI(contextPtr->PointParameteri); contextPtr->PointParameteriv = load("glPointParameteriv"); context.PointParameteriv = internalLoadAPI(contextPtr->PointParameteriv); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 1.4 APIs"); } internal static unsafe void LoadGLcore15(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core15) { InternalIO.InternalAppendLog("The core version 1.5 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BeginQuery = load("glBeginQuery"); context.BeginQuery = internalLoadAPI(contextPtr->BeginQuery); contextPtr->BindBuffer = load("glBindBuffer"); context.BindBuffer = internalLoadAPI(contextPtr->BindBuffer); contextPtr->BufferData = load("glBufferData"); context.BufferData = internalLoadAPI(contextPtr->BufferData); contextPtr->BufferSubData = load("glBufferSubData"); context.BufferSubData = internalLoadAPI(contextPtr->BufferSubData); contextPtr->DeleteBuffers = load("glDeleteBuffers"); context.DeleteBuffers = internalLoadAPI(contextPtr->DeleteBuffers); contextPtr->DeleteQueries = load("glDeleteQueries"); context.DeleteQueries = internalLoadAPI(contextPtr->DeleteQueries); contextPtr->EndQuery = load("glEndQuery"); context.EndQuery = internalLoadAPI(contextPtr->EndQuery); contextPtr->GenBuffers = load("glGenBuffers"); context.GenBuffers = internalLoadAPI(contextPtr->GenBuffers); contextPtr->GenQueries = load("glGenQueries"); context.GenQueries = internalLoadAPI(contextPtr->GenQueries); contextPtr->GetBufferParameteriv = load("glGetBufferParameteriv"); context.GetBufferParameteriv = internalLoadAPI(contextPtr->GetBufferParameteriv); contextPtr->GetBufferPointerv = load("glGetBufferPointerv"); context.GetBufferPointerv = internalLoadAPI(contextPtr->GetBufferPointerv); contextPtr->GetBufferSubData = load("glGetBufferSubData"); context.GetBufferSubData = internalLoadAPI(contextPtr->GetBufferSubData); contextPtr->GetQueryObjectiv = load("glGetQueryObjectiv"); context.GetQueryObjectiv = internalLoadAPI(contextPtr->GetQueryObjectiv); contextPtr->GetQueryObjectuiv = load("glGetQueryObjectuiv"); context.GetQueryObjectuiv = internalLoadAPI(contextPtr->GetQueryObjectuiv); contextPtr->GetQueryiv = load("glGetQueryiv"); context.GetQueryiv = internalLoadAPI(contextPtr->GetQueryiv); contextPtr->IsBuffer = load("glIsBuffer"); context.IsBuffer = internalLoadAPI(contextPtr->IsBuffer); contextPtr->IsQuery = load("glIsQuery"); context.IsQuery = internalLoadAPI(contextPtr->IsQuery); contextPtr->MapBuffer = load("glMapBuffer"); context.MapBuffer = internalLoadAPI(contextPtr->MapBuffer); contextPtr->UnmapBuffer = load("glUnmapBuffer"); context.UnmapBuffer = internalLoadAPI(contextPtr->UnmapBuffer); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 1.5 APIs"); } internal static unsafe void LoadGLcore20(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core20) { InternalIO.InternalAppendLog("The core version 2.0 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->AttachShader = load("glAttachShader"); context.AttachShader = internalLoadAPI(contextPtr->AttachShader); contextPtr->BindAttribLocation = load("glBindAttribLocation"); context.BindAttribLocation = internalLoadAPI(contextPtr->BindAttribLocation); contextPtr->BlendEquationSeparate = load("glBlendEquationSeparate"); context.BlendEquationSeparate = internalLoadAPI(contextPtr->BlendEquationSeparate); contextPtr->CompileShader = load("glCompileShader"); context.CompileShader = internalLoadAPI(contextPtr->CompileShader); contextPtr->CreateProgram = load("glCreateProgram"); context.CreateProgram = internalLoadAPI(contextPtr->CreateProgram); contextPtr->CreateShader = load("glCreateShader"); context.CreateShader = internalLoadAPI(contextPtr->CreateShader); contextPtr->DeleteProgram = load("glDeleteProgram"); context.DeleteProgram = internalLoadAPI(contextPtr->DeleteProgram); contextPtr->DeleteShader = load("glDeleteShader"); context.DeleteShader = internalLoadAPI(contextPtr->DeleteShader); contextPtr->DetachShader = load("glDetachShader"); context.DetachShader = internalLoadAPI(contextPtr->DetachShader); contextPtr->DisableVertexAttribArray = load("glDisableVertexAttribArray"); context.DisableVertexAttribArray = internalLoadAPI(contextPtr->DisableVertexAttribArray); contextPtr->DrawBuffers = load("glDrawBuffers"); context.DrawBuffers = internalLoadAPI(contextPtr->DrawBuffers); contextPtr->EnableVertexAttribArray = load("glEnableVertexAttribArray"); context.EnableVertexAttribArray = internalLoadAPI(contextPtr->EnableVertexAttribArray); contextPtr->GetActiveAttrib = load("glGetActiveAttrib"); context.GetActiveAttrib = internalLoadAPI(contextPtr->GetActiveAttrib); contextPtr->GetActiveUniform = load("glGetActiveUniform"); context.GetActiveUniform = internalLoadAPI(contextPtr->GetActiveUniform); contextPtr->GetAttachedShaders = load("glGetAttachedShaders"); context.GetAttachedShaders = internalLoadAPI(contextPtr->GetAttachedShaders); contextPtr->GetAttribLocation = load("glGetAttribLocation"); context.GetAttribLocation = internalLoadAPI(contextPtr->GetAttribLocation); contextPtr->GetProgramInfoLog = load("glGetProgramInfoLog"); context.GetProgramInfoLog = internalLoadAPI(contextPtr->GetProgramInfoLog); contextPtr->GetProgramiv = load("glGetProgramiv"); context.GetProgramiv = internalLoadAPI(contextPtr->GetProgramiv); contextPtr->GetShaderInfoLog = load("glGetShaderInfoLog"); context.GetShaderInfoLog = internalLoadAPI(contextPtr->GetShaderInfoLog); contextPtr->GetShaderSource = load("glGetShaderSource"); context.GetShaderSource = internalLoadAPI(contextPtr->GetShaderSource); contextPtr->GetShaderiv = load("glGetShaderiv"); context.GetShaderiv = internalLoadAPI(contextPtr->GetShaderiv); contextPtr->GetUniformLocation = load("glGetUniformLocation"); context.GetUniformLocation = internalLoadAPI(contextPtr->GetUniformLocation); contextPtr->GetUniformfv = load("glGetUniformfv"); context.GetUniformfv = internalLoadAPI(contextPtr->GetUniformfv); contextPtr->GetUniformiv = load("glGetUniformiv"); context.GetUniformiv = internalLoadAPI(contextPtr->GetUniformiv); contextPtr->GetVertexAttribPointerv = load("glGetVertexAttribPointerv"); context.GetVertexAttribPointerv = internalLoadAPI(contextPtr->GetVertexAttribPointerv); contextPtr->GetVertexAttribdv = load("glGetVertexAttribdv"); context.GetVertexAttribdv = internalLoadAPI(contextPtr->GetVertexAttribdv); contextPtr->GetVertexAttribfv = load("glGetVertexAttribfv"); context.GetVertexAttribfv = internalLoadAPI(contextPtr->GetVertexAttribfv); contextPtr->GetVertexAttribiv = load("glGetVertexAttribiv"); context.GetVertexAttribiv = internalLoadAPI(contextPtr->GetVertexAttribiv); contextPtr->IsProgram = load("glIsProgram"); context.IsProgram = internalLoadAPI(contextPtr->IsProgram); contextPtr->IsShader = load("glIsShader"); context.IsShader = internalLoadAPI(contextPtr->IsShader); contextPtr->LinkProgram = load("glLinkProgram"); context.LinkProgram = internalLoadAPI(contextPtr->LinkProgram); contextPtr->ShaderSource = load("glShaderSource"); context.ShaderSource = internalLoadAPI(contextPtr->ShaderSource); contextPtr->StencilFuncSeparate = load("glStencilFuncSeparate"); context.StencilFuncSeparate = internalLoadAPI(contextPtr->StencilFuncSeparate); contextPtr->StencilMaskSeparate = load("glStencilMaskSeparate"); context.StencilMaskSeparate = internalLoadAPI(contextPtr->StencilMaskSeparate); contextPtr->StencilOpSeparate = load("glStencilOpSeparate"); context.StencilOpSeparate = internalLoadAPI(contextPtr->StencilOpSeparate); contextPtr->Uniform1f = load("glUniform1f"); context.Uniform1f = internalLoadAPI(contextPtr->Uniform1f); contextPtr->Uniform1fv = load("glUniform1fv"); context.Uniform1fv = internalLoadAPI(contextPtr->Uniform1fv); contextPtr->Uniform1i = load("glUniform1i"); context.Uniform1i = internalLoadAPI(contextPtr->Uniform1i); contextPtr->Uniform1iv = load("glUniform1iv"); context.Uniform1iv = internalLoadAPI(contextPtr->Uniform1iv); contextPtr->Uniform2f = load("glUniform2f"); context.Uniform2f = internalLoadAPI(contextPtr->Uniform2f); contextPtr->Uniform2fv = load("glUniform2fv"); context.Uniform2fv = internalLoadAPI(contextPtr->Uniform2fv); contextPtr->Uniform2i = load("glUniform2i"); context.Uniform2i = internalLoadAPI(contextPtr->Uniform2i); contextPtr->Uniform2iv = load("glUniform2iv"); context.Uniform2iv = internalLoadAPI(contextPtr->Uniform2iv); contextPtr->Uniform3f = load("glUniform3f"); context.Uniform3f = internalLoadAPI(contextPtr->Uniform3f); contextPtr->Uniform3fv = load("glUniform3fv"); context.Uniform3fv = internalLoadAPI(contextPtr->Uniform3fv); contextPtr->Uniform3i = load("glUniform3i"); context.Uniform3i = internalLoadAPI(contextPtr->Uniform3i); contextPtr->Uniform3iv = load("glUniform3iv"); context.Uniform3iv = internalLoadAPI(contextPtr->Uniform3iv); contextPtr->Uniform4f = load("glUniform4f"); context.Uniform4f = internalLoadAPI(contextPtr->Uniform4f); contextPtr->Uniform4fv = load("glUniform4fv"); context.Uniform4fv = internalLoadAPI(contextPtr->Uniform4fv); contextPtr->Uniform4i = load("glUniform4i"); context.Uniform4i = internalLoadAPI(contextPtr->Uniform4i); contextPtr->Uniform4iv = load("glUniform4iv"); context.Uniform4iv = internalLoadAPI(contextPtr->Uniform4iv); contextPtr->UniformMatrix2fv = load("glUniformMatrix2fv"); context.UniformMatrix2fv = internalLoadAPI(contextPtr->UniformMatrix2fv); contextPtr->UniformMatrix3fv = load("glUniformMatrix3fv"); context.UniformMatrix3fv = internalLoadAPI(contextPtr->UniformMatrix3fv); contextPtr->UniformMatrix4fv = load("glUniformMatrix4fv"); context.UniformMatrix4fv = internalLoadAPI(contextPtr->UniformMatrix4fv); contextPtr->UseProgram = load("glUseProgram"); context.UseProgram = internalLoadAPI(contextPtr->UseProgram); contextPtr->ValidateProgram = load("glValidateProgram"); context.ValidateProgram = internalLoadAPI(contextPtr->ValidateProgram); contextPtr->VertexAttrib1d = load("glVertexAttrib1d"); context.VertexAttrib1d = internalLoadAPI(contextPtr->VertexAttrib1d); contextPtr->VertexAttrib1dv = load("glVertexAttrib1dv"); context.VertexAttrib1dv = internalLoadAPI(contextPtr->VertexAttrib1dv); contextPtr->VertexAttrib1f = load("glVertexAttrib1f"); context.VertexAttrib1f = internalLoadAPI(contextPtr->VertexAttrib1f); contextPtr->VertexAttrib1fv = load("glVertexAttrib1fv"); context.VertexAttrib1fv = internalLoadAPI(contextPtr->VertexAttrib1fv); contextPtr->VertexAttrib1s = load("glVertexAttrib1s"); context.VertexAttrib1s = internalLoadAPI(contextPtr->VertexAttrib1s); contextPtr->VertexAttrib1sv = load("glVertexAttrib1sv"); context.VertexAttrib1sv = internalLoadAPI(contextPtr->VertexAttrib1sv); contextPtr->VertexAttrib2d = load("glVertexAttrib2d"); context.VertexAttrib2d = internalLoadAPI(contextPtr->VertexAttrib2d); contextPtr->VertexAttrib2dv = load("glVertexAttrib2dv"); context.VertexAttrib2dv = internalLoadAPI(contextPtr->VertexAttrib2dv); contextPtr->VertexAttrib2f = load("glVertexAttrib2f"); context.VertexAttrib2f = internalLoadAPI(contextPtr->VertexAttrib2f); contextPtr->VertexAttrib2fv = load("glVertexAttrib2fv"); context.VertexAttrib2fv = internalLoadAPI(contextPtr->VertexAttrib2fv); contextPtr->VertexAttrib2s = load("glVertexAttrib2s"); context.VertexAttrib2s = internalLoadAPI(contextPtr->VertexAttrib2s); contextPtr->VertexAttrib2sv = load("glVertexAttrib2sv"); context.VertexAttrib2sv = internalLoadAPI(contextPtr->VertexAttrib2sv); contextPtr->VertexAttrib3d = load("glVertexAttrib3d"); context.VertexAttrib3d = internalLoadAPI(contextPtr->VertexAttrib3d); contextPtr->VertexAttrib3dv = load("glVertexAttrib3dv"); context.VertexAttrib3dv = internalLoadAPI(contextPtr->VertexAttrib3dv); contextPtr->VertexAttrib3f = load("glVertexAttrib3f"); context.VertexAttrib3f = internalLoadAPI(contextPtr->VertexAttrib3f); contextPtr->VertexAttrib3fv = load("glVertexAttrib3fv"); context.VertexAttrib3fv = internalLoadAPI(contextPtr->VertexAttrib3fv); contextPtr->VertexAttrib3s = load("glVertexAttrib3s"); context.VertexAttrib3s = internalLoadAPI(contextPtr->VertexAttrib3s); contextPtr->VertexAttrib3sv = load("glVertexAttrib3sv"); context.VertexAttrib3sv = internalLoadAPI(contextPtr->VertexAttrib3sv); contextPtr->VertexAttrib4Nbv = load("glVertexAttrib4Nbv"); context.VertexAttrib4Nbv = internalLoadAPI(contextPtr->VertexAttrib4Nbv); contextPtr->VertexAttrib4Niv = load("glVertexAttrib4Niv"); context.VertexAttrib4Niv = internalLoadAPI(contextPtr->VertexAttrib4Niv); contextPtr->VertexAttrib4Nsv = load("glVertexAttrib4Nsv"); context.VertexAttrib4Nsv = internalLoadAPI(contextPtr->VertexAttrib4Nsv); contextPtr->VertexAttrib4Nub = load("glVertexAttrib4Nub"); context.VertexAttrib4Nub = internalLoadAPI(contextPtr->VertexAttrib4Nub); contextPtr->VertexAttrib4Nubv = load("glVertexAttrib4Nubv"); context.VertexAttrib4Nubv = internalLoadAPI(contextPtr->VertexAttrib4Nubv); contextPtr->VertexAttrib4Nuiv = load("glVertexAttrib4Nuiv"); context.VertexAttrib4Nuiv = internalLoadAPI(contextPtr->VertexAttrib4Nuiv); contextPtr->VertexAttrib4Nusv = load("glVertexAttrib4Nusv"); context.VertexAttrib4Nusv = internalLoadAPI(contextPtr->VertexAttrib4Nusv); contextPtr->VertexAttrib4bv = load("glVertexAttrib4bv"); context.VertexAttrib4bv = internalLoadAPI(contextPtr->VertexAttrib4bv); contextPtr->VertexAttrib4d = load("glVertexAttrib4d"); context.VertexAttrib4d = internalLoadAPI(contextPtr->VertexAttrib4d); contextPtr->VertexAttrib4dv = load("glVertexAttrib4dv"); context.VertexAttrib4dv = internalLoadAPI(contextPtr->VertexAttrib4dv); contextPtr->VertexAttrib4f = load("glVertexAttrib4f"); context.VertexAttrib4f = internalLoadAPI(contextPtr->VertexAttrib4f); contextPtr->VertexAttrib4fv = load("glVertexAttrib4fv"); context.VertexAttrib4fv = internalLoadAPI(contextPtr->VertexAttrib4fv); contextPtr->VertexAttrib4iv = load("glVertexAttrib4iv"); context.VertexAttrib4iv = internalLoadAPI(contextPtr->VertexAttrib4iv); contextPtr->VertexAttrib4s = load("glVertexAttrib4s"); context.VertexAttrib4s = internalLoadAPI(contextPtr->VertexAttrib4s); contextPtr->VertexAttrib4sv = load("glVertexAttrib4sv"); context.VertexAttrib4sv = internalLoadAPI(contextPtr->VertexAttrib4sv); contextPtr->VertexAttrib4ubv = load("glVertexAttrib4ubv"); context.VertexAttrib4ubv = internalLoadAPI(contextPtr->VertexAttrib4ubv); contextPtr->VertexAttrib4uiv = load("glVertexAttrib4uiv"); context.VertexAttrib4uiv = internalLoadAPI(contextPtr->VertexAttrib4uiv); contextPtr->VertexAttrib4usv = load("glVertexAttrib4usv"); context.VertexAttrib4usv = internalLoadAPI(contextPtr->VertexAttrib4usv); contextPtr->VertexAttribPointer = load("glVertexAttribPointer"); context.VertexAttribPointer = internalLoadAPI(contextPtr->VertexAttribPointer); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 2.0 APIs"); } internal static unsafe void LoadGLcore21(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core21) { InternalIO.InternalAppendLog("The core version 2.1 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->UniformMatrix2x3fv = load("glUniformMatrix2x3fv"); context.UniformMatrix2x3fv = internalLoadAPI(contextPtr->UniformMatrix2x3fv); contextPtr->UniformMatrix2x4fv = load("glUniformMatrix2x4fv"); context.UniformMatrix2x4fv = internalLoadAPI(contextPtr->UniformMatrix2x4fv); contextPtr->UniformMatrix3x2fv = load("glUniformMatrix3x2fv"); context.UniformMatrix3x2fv = internalLoadAPI(contextPtr->UniformMatrix3x2fv); contextPtr->UniformMatrix3x4fv = load("glUniformMatrix3x4fv"); context.UniformMatrix3x4fv = internalLoadAPI(contextPtr->UniformMatrix3x4fv); contextPtr->UniformMatrix4x2fv = load("glUniformMatrix4x2fv"); context.UniformMatrix4x2fv = internalLoadAPI(contextPtr->UniformMatrix4x2fv); contextPtr->UniformMatrix4x3fv = load("glUniformMatrix4x3fv"); context.UniformMatrix4x3fv = internalLoadAPI(contextPtr->UniformMatrix4x3fv); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 2.1 APIs"); } internal static unsafe void LoadGLcore30(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core30) { InternalIO.InternalAppendLog("The core version 3.0 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BeginConditionalRender = load("glBeginConditionalRender"); context.BeginConditionalRender = internalLoadAPI(contextPtr->BeginConditionalRender); contextPtr->BeginTransformFeedback = load("glBeginTransformFeedback"); context.BeginTransformFeedback = internalLoadAPI(contextPtr->BeginTransformFeedback); contextPtr->BindBufferBase = load("glBindBufferBase"); context.BindBufferBase = internalLoadAPI(contextPtr->BindBufferBase); contextPtr->BindBufferRange = load("glBindBufferRange"); context.BindBufferRange = internalLoadAPI(contextPtr->BindBufferRange); contextPtr->BindFragDataLocation = load("glBindFragDataLocation"); context.BindFragDataLocation = internalLoadAPI(contextPtr->BindFragDataLocation); contextPtr->BindFramebuffer = load("glBindFramebuffer"); context.BindFramebuffer = internalLoadAPI(contextPtr->BindFramebuffer); contextPtr->BindRenderbuffer = load("glBindRenderbuffer"); context.BindRenderbuffer = internalLoadAPI(contextPtr->BindRenderbuffer); contextPtr->BindVertexArray = load("glBindVertexArray"); context.BindVertexArray = internalLoadAPI(contextPtr->BindVertexArray); contextPtr->BlitFramebuffer = load("glBlitFramebuffer"); context.BlitFramebuffer = internalLoadAPI(contextPtr->BlitFramebuffer); contextPtr->CheckFramebufferStatus = load("glCheckFramebufferStatus"); context.CheckFramebufferStatus = internalLoadAPI(contextPtr->CheckFramebufferStatus); contextPtr->ClampColor = load("glClampColor"); context.ClampColor = internalLoadAPI(contextPtr->ClampColor); contextPtr->ClearBufferfi = load("glClearBufferfi"); context.ClearBufferfi = internalLoadAPI(contextPtr->ClearBufferfi); contextPtr->ClearBufferfv = load("glClearBufferfv"); context.ClearBufferfv = internalLoadAPI(contextPtr->ClearBufferfv); contextPtr->ClearBufferiv = load("glClearBufferiv"); context.ClearBufferiv = internalLoadAPI(contextPtr->ClearBufferiv); contextPtr->ClearBufferuiv = load("glClearBufferuiv"); context.ClearBufferuiv = internalLoadAPI(contextPtr->ClearBufferuiv); contextPtr->ColorMaski = load("glColorMaski"); context.ColorMaski = internalLoadAPI(contextPtr->ColorMaski); contextPtr->DeleteFramebuffers = load("glDeleteFramebuffers"); context.DeleteFramebuffers = internalLoadAPI(contextPtr->DeleteFramebuffers); contextPtr->DeleteRenderbuffers = load("glDeleteRenderbuffers"); context.DeleteRenderbuffers = internalLoadAPI(contextPtr->DeleteRenderbuffers); contextPtr->DeleteVertexArrays = load("glDeleteVertexArrays"); context.DeleteVertexArrays = internalLoadAPI(contextPtr->DeleteVertexArrays); contextPtr->Disablei = load("glDisablei"); context.Disablei = internalLoadAPI(contextPtr->Disablei); contextPtr->Enablei = load("glEnablei"); context.Enablei = internalLoadAPI(contextPtr->Enablei); contextPtr->EndConditionalRender = load("glEndConditionalRender"); context.EndConditionalRender = internalLoadAPI(contextPtr->EndConditionalRender); contextPtr->EndTransformFeedback = load("glEndTransformFeedback"); context.EndTransformFeedback = internalLoadAPI(contextPtr->EndTransformFeedback); contextPtr->FlushMappedBufferRange = load("glFlushMappedBufferRange"); context.FlushMappedBufferRange = internalLoadAPI(contextPtr->FlushMappedBufferRange); contextPtr->FramebufferRenderbuffer = load("glFramebufferRenderbuffer"); context.FramebufferRenderbuffer = internalLoadAPI(contextPtr->FramebufferRenderbuffer); contextPtr->FramebufferTexture1D = load("glFramebufferTexture1D"); context.FramebufferTexture1D = internalLoadAPI(contextPtr->FramebufferTexture1D); contextPtr->FramebufferTexture2D = load("glFramebufferTexture2D"); context.FramebufferTexture2D = internalLoadAPI(contextPtr->FramebufferTexture2D); contextPtr->FramebufferTexture3D = load("glFramebufferTexture3D"); context.FramebufferTexture3D = internalLoadAPI(contextPtr->FramebufferTexture3D); contextPtr->FramebufferTextureLayer = load("glFramebufferTextureLayer"); context.FramebufferTextureLayer = internalLoadAPI(contextPtr->FramebufferTextureLayer); contextPtr->GenFramebuffers = load("glGenFramebuffers"); context.GenFramebuffers = internalLoadAPI(contextPtr->GenFramebuffers); contextPtr->GenRenderbuffers = load("glGenRenderbuffers"); context.GenRenderbuffers = internalLoadAPI(contextPtr->GenRenderbuffers); contextPtr->GenVertexArrays = load("glGenVertexArrays"); context.GenVertexArrays = internalLoadAPI(contextPtr->GenVertexArrays); contextPtr->GenerateMipmap = load("glGenerateMipmap"); context.GenerateMipmap = internalLoadAPI(contextPtr->GenerateMipmap); contextPtr->GetBooleani_v = load("glGetBooleani_v"); context.GetBooleani_v = internalLoadAPI(contextPtr->GetBooleani_v); contextPtr->GetFragDataLocation = load("glGetFragDataLocation"); context.GetFragDataLocation = internalLoadAPI(contextPtr->GetFragDataLocation); contextPtr->GetFramebufferAttachmentParameteriv = load("glGetFramebufferAttachmentParameteriv"); context.GetFramebufferAttachmentParameteriv = internalLoadAPI(contextPtr->GetFramebufferAttachmentParameteriv); contextPtr->GetIntegeri_v = load("glGetIntegeri_v"); context.GetIntegeri_v = internalLoadAPI(contextPtr->GetIntegeri_v); contextPtr->GetRenderbufferParameteriv = load("glGetRenderbufferParameteriv"); context.GetRenderbufferParameteriv = internalLoadAPI(contextPtr->GetRenderbufferParameteriv); contextPtr->GetStringi = load("glGetStringi"); context.GetStringi = internalLoadAPI(contextPtr->GetStringi); contextPtr->GetTexParameterIiv = load("glGetTexParameterIiv"); context.GetTexParameterIiv = internalLoadAPI(contextPtr->GetTexParameterIiv); contextPtr->GetTexParameterIuiv = load("glGetTexParameterIuiv"); context.GetTexParameterIuiv = internalLoadAPI(contextPtr->GetTexParameterIuiv); contextPtr->GetTransformFeedbackVarying = load("glGetTransformFeedbackVarying"); context.GetTransformFeedbackVarying = internalLoadAPI(contextPtr->GetTransformFeedbackVarying); contextPtr->GetUniformuiv = load("glGetUniformuiv"); context.GetUniformuiv = internalLoadAPI(contextPtr->GetUniformuiv); contextPtr->GetVertexAttribIiv = load("glGetVertexAttribIiv"); context.GetVertexAttribIiv = internalLoadAPI(contextPtr->GetVertexAttribIiv); contextPtr->GetVertexAttribIuiv = load("glGetVertexAttribIuiv"); context.GetVertexAttribIuiv = internalLoadAPI(contextPtr->GetVertexAttribIuiv); contextPtr->IsEnabledi = load("glIsEnabledi"); context.IsEnabledi = internalLoadAPI(contextPtr->IsEnabledi); contextPtr->IsFramebuffer = load("glIsFramebuffer"); context.IsFramebuffer = internalLoadAPI(contextPtr->IsFramebuffer); contextPtr->IsRenderbuffer = load("glIsRenderbuffer"); context.IsRenderbuffer = internalLoadAPI(contextPtr->IsRenderbuffer); contextPtr->IsVertexArray = load("glIsVertexArray"); context.IsVertexArray = internalLoadAPI(contextPtr->IsVertexArray); contextPtr->MapBufferRange = load("glMapBufferRange"); context.MapBufferRange = internalLoadAPI(contextPtr->MapBufferRange); contextPtr->RenderbufferStorage = load("glRenderbufferStorage"); context.RenderbufferStorage = internalLoadAPI(contextPtr->RenderbufferStorage); contextPtr->RenderbufferStorageMultisample = load("glRenderbufferStorageMultisample"); context.RenderbufferStorageMultisample = internalLoadAPI(contextPtr->RenderbufferStorageMultisample); contextPtr->TexParameterIiv = load("glTexParameterIiv"); context.TexParameterIiv = internalLoadAPI(contextPtr->TexParameterIiv); contextPtr->TexParameterIuiv = load("glTexParameterIuiv"); context.TexParameterIuiv = internalLoadAPI(contextPtr->TexParameterIuiv); contextPtr->TransformFeedbackVaryings = load("glTransformFeedbackVaryings"); context.TransformFeedbackVaryings = internalLoadAPI(contextPtr->TransformFeedbackVaryings); contextPtr->Uniform1ui = load("glUniform1ui"); context.Uniform1ui = internalLoadAPI(contextPtr->Uniform1ui); contextPtr->Uniform1uiv = load("glUniform1uiv"); context.Uniform1uiv = internalLoadAPI(contextPtr->Uniform1uiv); contextPtr->Uniform2ui = load("glUniform2ui"); context.Uniform2ui = internalLoadAPI(contextPtr->Uniform2ui); contextPtr->Uniform2uiv = load("glUniform2uiv"); context.Uniform2uiv = internalLoadAPI(contextPtr->Uniform2uiv); contextPtr->Uniform3ui = load("glUniform3ui"); context.Uniform3ui = internalLoadAPI(contextPtr->Uniform3ui); contextPtr->Uniform3uiv = load("glUniform3uiv"); context.Uniform3uiv = internalLoadAPI(contextPtr->Uniform3uiv); contextPtr->Uniform4ui = load("glUniform4ui"); context.Uniform4ui = internalLoadAPI(contextPtr->Uniform4ui); contextPtr->Uniform4uiv = load("glUniform4uiv"); context.Uniform4uiv = internalLoadAPI(contextPtr->Uniform4uiv); contextPtr->VertexAttribI1i = load("glVertexAttribI1i"); context.VertexAttribI1i = internalLoadAPI(contextPtr->VertexAttribI1i); contextPtr->VertexAttribI1iv = load("glVertexAttribI1iv"); context.VertexAttribI1iv = internalLoadAPI(contextPtr->VertexAttribI1iv); contextPtr->VertexAttribI1ui = load("glVertexAttribI1ui"); context.VertexAttribI1ui = internalLoadAPI(contextPtr->VertexAttribI1ui); contextPtr->VertexAttribI1uiv = load("glVertexAttribI1uiv"); context.VertexAttribI1uiv = internalLoadAPI(contextPtr->VertexAttribI1uiv); contextPtr->VertexAttribI2i = load("glVertexAttribI2i"); context.VertexAttribI2i = internalLoadAPI(contextPtr->VertexAttribI2i); contextPtr->VertexAttribI2iv = load("glVertexAttribI2iv"); context.VertexAttribI2iv = internalLoadAPI(contextPtr->VertexAttribI2iv); contextPtr->VertexAttribI2ui = load("glVertexAttribI2ui"); context.VertexAttribI2ui = internalLoadAPI(contextPtr->VertexAttribI2ui); contextPtr->VertexAttribI2uiv = load("glVertexAttribI2uiv"); context.VertexAttribI2uiv = internalLoadAPI(contextPtr->VertexAttribI2uiv); contextPtr->VertexAttribI3i = load("glVertexAttribI3i"); context.VertexAttribI3i = internalLoadAPI(contextPtr->VertexAttribI3i); contextPtr->VertexAttribI3iv = load("glVertexAttribI3iv"); context.VertexAttribI3iv = internalLoadAPI(contextPtr->VertexAttribI3iv); contextPtr->VertexAttribI3ui = load("glVertexAttribI3ui"); context.VertexAttribI3ui = internalLoadAPI(contextPtr->VertexAttribI3ui); contextPtr->VertexAttribI3uiv = load("glVertexAttribI3uiv"); context.VertexAttribI3uiv = internalLoadAPI(contextPtr->VertexAttribI3uiv); contextPtr->VertexAttribI4bv = load("glVertexAttribI4bv"); context.VertexAttribI4bv = internalLoadAPI(contextPtr->VertexAttribI4bv); contextPtr->VertexAttribI4i = load("glVertexAttribI4i"); context.VertexAttribI4i = internalLoadAPI(contextPtr->VertexAttribI4i); contextPtr->VertexAttribI4iv = load("glVertexAttribI4iv"); context.VertexAttribI4iv = internalLoadAPI(contextPtr->VertexAttribI4iv); contextPtr->VertexAttribI4sv = load("glVertexAttribI4sv"); context.VertexAttribI4sv = internalLoadAPI(contextPtr->VertexAttribI4sv); contextPtr->VertexAttribI4ubv = load("glVertexAttribI4ubv"); context.VertexAttribI4ubv = internalLoadAPI(contextPtr->VertexAttribI4ubv); contextPtr->VertexAttribI4ui = load("glVertexAttribI4ui"); context.VertexAttribI4ui = internalLoadAPI(contextPtr->VertexAttribI4ui); contextPtr->VertexAttribI4uiv = load("glVertexAttribI4uiv"); context.VertexAttribI4uiv = internalLoadAPI(contextPtr->VertexAttribI4uiv); contextPtr->VertexAttribI4usv = load("glVertexAttribI4usv"); context.VertexAttribI4usv = internalLoadAPI(contextPtr->VertexAttribI4usv); contextPtr->VertexAttribIPointer = load("glVertexAttribIPointer"); context.VertexAttribIPointer = internalLoadAPI(contextPtr->VertexAttribIPointer); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 3.0 APIs"); } internal static unsafe void LoadGLcore31(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core31) { InternalIO.InternalAppendLog("The core version 3.1 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindBufferBase = load("glBindBufferBase"); context.BindBufferBase = internalLoadAPI(contextPtr->BindBufferBase); contextPtr->BindBufferRange = load("glBindBufferRange"); context.BindBufferRange = internalLoadAPI(contextPtr->BindBufferRange); contextPtr->CopyBufferSubData = load("glCopyBufferSubData"); context.CopyBufferSubData = internalLoadAPI(contextPtr->CopyBufferSubData); contextPtr->DrawArraysInstanced = load("glDrawArraysInstanced"); context.DrawArraysInstanced = internalLoadAPI(contextPtr->DrawArraysInstanced); contextPtr->DrawElementsInstanced = load("glDrawElementsInstanced"); context.DrawElementsInstanced = internalLoadAPI(contextPtr->DrawElementsInstanced); contextPtr->GetActiveUniformBlockName = load("glGetActiveUniformBlockName"); context.GetActiveUniformBlockName = internalLoadAPI(contextPtr->GetActiveUniformBlockName); contextPtr->GetActiveUniformBlockiv = load("glGetActiveUniformBlockiv"); context.GetActiveUniformBlockiv = internalLoadAPI(contextPtr->GetActiveUniformBlockiv); contextPtr->GetActiveUniformName = load("glGetActiveUniformName"); context.GetActiveUniformName = internalLoadAPI(contextPtr->GetActiveUniformName); contextPtr->GetActiveUniformsiv = load("glGetActiveUniformsiv"); context.GetActiveUniformsiv = internalLoadAPI(contextPtr->GetActiveUniformsiv); contextPtr->GetIntegeri_v = load("glGetIntegeri_v"); context.GetIntegeri_v = internalLoadAPI(contextPtr->GetIntegeri_v); contextPtr->GetUniformBlockIndex = load("glGetUniformBlockIndex"); context.GetUniformBlockIndex = internalLoadAPI(contextPtr->GetUniformBlockIndex); contextPtr->GetUniformIndices = load("glGetUniformIndices"); context.GetUniformIndices = internalLoadAPI(contextPtr->GetUniformIndices); contextPtr->PrimitiveRestartIndex = load("glPrimitiveRestartIndex"); context.PrimitiveRestartIndex = internalLoadAPI(contextPtr->PrimitiveRestartIndex); contextPtr->TexBuffer = load("glTexBuffer"); context.TexBuffer = internalLoadAPI(contextPtr->TexBuffer); contextPtr->UniformBlockBinding = load("glUniformBlockBinding"); context.UniformBlockBinding = internalLoadAPI(contextPtr->UniformBlockBinding); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 3.1 APIs"); } internal static unsafe void LoadGLcore32(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core32) { InternalIO.InternalAppendLog("The core version 3.2 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->ClientWaitSync = load("glClientWaitSync"); context.ClientWaitSync = internalLoadAPI(contextPtr->ClientWaitSync); contextPtr->DeleteSync = load("glDeleteSync"); context.DeleteSync = internalLoadAPI(contextPtr->DeleteSync); contextPtr->DrawElementsBaseVertex = load("glDrawElementsBaseVertex"); context.DrawElementsBaseVertex = internalLoadAPI(contextPtr->DrawElementsBaseVertex); contextPtr->DrawElementsInstancedBaseVertex = load("glDrawElementsInstancedBaseVertex"); context.DrawElementsInstancedBaseVertex = internalLoadAPI(contextPtr->DrawElementsInstancedBaseVertex); contextPtr->DrawRangeElementsBaseVertex = load("glDrawRangeElementsBaseVertex"); context.DrawRangeElementsBaseVertex = internalLoadAPI(contextPtr->DrawRangeElementsBaseVertex); contextPtr->FenceSync = load("glFenceSync"); context.FenceSync = internalLoadAPI(contextPtr->FenceSync); contextPtr->FramebufferTexture = load("glFramebufferTexture"); context.FramebufferTexture = internalLoadAPI(contextPtr->FramebufferTexture); contextPtr->GetBufferParameteri64v = load("glGetBufferParameteri64v"); context.GetBufferParameteri64v = internalLoadAPI(contextPtr->GetBufferParameteri64v); contextPtr->GetInteger64i_v = load("glGetInteger64i_v"); context.GetInteger64i_v = internalLoadAPI(contextPtr->GetInteger64i_v); contextPtr->GetInteger64v = load("glGetInteger64v"); context.GetInteger64v = internalLoadAPI(contextPtr->GetInteger64v); contextPtr->GetMultisamplefv = load("glGetMultisamplefv"); context.GetMultisamplefv = internalLoadAPI(contextPtr->GetMultisamplefv); contextPtr->GetSynciv = load("glGetSynciv"); context.GetSynciv = internalLoadAPI(contextPtr->GetSynciv); contextPtr->IsSync = load("glIsSync"); context.IsSync = internalLoadAPI(contextPtr->IsSync); contextPtr->MultiDrawElementsBaseVertex = load("glMultiDrawElementsBaseVertex"); context.MultiDrawElementsBaseVertex = internalLoadAPI(contextPtr->MultiDrawElementsBaseVertex); contextPtr->ProvokingVertex = load("glProvokingVertex"); context.ProvokingVertex = internalLoadAPI(contextPtr->ProvokingVertex); contextPtr->SampleMaski = load("glSampleMaski"); context.SampleMaski = internalLoadAPI(contextPtr->SampleMaski); contextPtr->TexImage2DMultisample = load("glTexImage2DMultisample"); context.TexImage2DMultisample = internalLoadAPI(contextPtr->TexImage2DMultisample); contextPtr->TexImage3DMultisample = load("glTexImage3DMultisample"); context.TexImage3DMultisample = internalLoadAPI(contextPtr->TexImage3DMultisample); contextPtr->WaitSync = load("glWaitSync"); context.WaitSync = internalLoadAPI(contextPtr->WaitSync); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 3.2 APIs"); } internal static unsafe void LoadGLcore33(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core33) { InternalIO.InternalAppendLog("The core version 3.3 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindFragDataLocationIndexed = load("glBindFragDataLocationIndexed"); context.BindFragDataLocationIndexed = internalLoadAPI(contextPtr->BindFragDataLocationIndexed); contextPtr->BindSampler = load("glBindSampler"); context.BindSampler = internalLoadAPI(contextPtr->BindSampler); contextPtr->DeleteSamplers = load("glDeleteSamplers"); context.DeleteSamplers = internalLoadAPI(contextPtr->DeleteSamplers); contextPtr->GenSamplers = load("glGenSamplers"); context.GenSamplers = internalLoadAPI(contextPtr->GenSamplers); contextPtr->GetFragDataIndex = load("glGetFragDataIndex"); context.GetFragDataIndex = internalLoadAPI(contextPtr->GetFragDataIndex); contextPtr->GetQueryObjecti64v = load("glGetQueryObjecti64v"); context.GetQueryObjecti64v = internalLoadAPI(contextPtr->GetQueryObjecti64v); contextPtr->GetQueryObjectui64v = load("glGetQueryObjectui64v"); context.GetQueryObjectui64v = internalLoadAPI(contextPtr->GetQueryObjectui64v); contextPtr->GetSamplerParameterIiv = load("glGetSamplerParameterIiv"); context.GetSamplerParameterIiv = internalLoadAPI(contextPtr->GetSamplerParameterIiv); contextPtr->GetSamplerParameterIuiv = load("glGetSamplerParameterIuiv"); context.GetSamplerParameterIuiv = internalLoadAPI(contextPtr->GetSamplerParameterIuiv); contextPtr->GetSamplerParameterfv = load("glGetSamplerParameterfv"); context.GetSamplerParameterfv = internalLoadAPI(contextPtr->GetSamplerParameterfv); contextPtr->GetSamplerParameteriv = load("glGetSamplerParameteriv"); context.GetSamplerParameteriv = internalLoadAPI(contextPtr->GetSamplerParameteriv); contextPtr->IsSampler = load("glIsSampler"); context.IsSampler = internalLoadAPI(contextPtr->IsSampler); contextPtr->QueryCounter = load("glQueryCounter"); context.QueryCounter = internalLoadAPI(contextPtr->QueryCounter); contextPtr->SamplerParameterIiv = load("glSamplerParameterIiv"); context.SamplerParameterIiv = internalLoadAPI(contextPtr->SamplerParameterIiv); contextPtr->SamplerParameterIuiv = load("glSamplerParameterIuiv"); context.SamplerParameterIuiv = internalLoadAPI(contextPtr->SamplerParameterIuiv); contextPtr->SamplerParameterf = load("glSamplerParameterf"); context.SamplerParameterf = internalLoadAPI(contextPtr->SamplerParameterf); contextPtr->SamplerParameterfv = load("glSamplerParameterfv"); context.SamplerParameterfv = internalLoadAPI(contextPtr->SamplerParameterfv); contextPtr->SamplerParameteri = load("glSamplerParameteri"); context.SamplerParameteri = internalLoadAPI(contextPtr->SamplerParameteri); contextPtr->SamplerParameteriv = load("glSamplerParameteriv"); context.SamplerParameteriv = internalLoadAPI(contextPtr->SamplerParameteriv); contextPtr->VertexAttribDivisor = load("glVertexAttribDivisor"); context.VertexAttribDivisor = internalLoadAPI(contextPtr->VertexAttribDivisor); contextPtr->VertexAttribP1ui = load("glVertexAttribP1ui"); context.VertexAttribP1ui = internalLoadAPI(contextPtr->VertexAttribP1ui); contextPtr->VertexAttribP1uiv = load("glVertexAttribP1uiv"); context.VertexAttribP1uiv = internalLoadAPI(contextPtr->VertexAttribP1uiv); contextPtr->VertexAttribP2ui = load("glVertexAttribP2ui"); context.VertexAttribP2ui = internalLoadAPI(contextPtr->VertexAttribP2ui); contextPtr->VertexAttribP2uiv = load("glVertexAttribP2uiv"); context.VertexAttribP2uiv = internalLoadAPI(contextPtr->VertexAttribP2uiv); contextPtr->VertexAttribP3ui = load("glVertexAttribP3ui"); context.VertexAttribP3ui = internalLoadAPI(contextPtr->VertexAttribP3ui); contextPtr->VertexAttribP3uiv = load("glVertexAttribP3uiv"); context.VertexAttribP3uiv = internalLoadAPI(contextPtr->VertexAttribP3uiv); contextPtr->VertexAttribP4ui = load("glVertexAttribP4ui"); context.VertexAttribP4ui = internalLoadAPI(contextPtr->VertexAttribP4ui); contextPtr->VertexAttribP4uiv = load("glVertexAttribP4uiv"); context.VertexAttribP4uiv = internalLoadAPI(contextPtr->VertexAttribP4uiv); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 3.3 APIs"); } internal static unsafe void LoadGLcore40(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core40) { InternalIO.InternalAppendLog("The core version 4.0 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BeginQueryIndexed = load("glBeginQueryIndexed"); context.BeginQueryIndexed = internalLoadAPI(contextPtr->BeginQueryIndexed); contextPtr->BindTransformFeedback = load("glBindTransformFeedback"); context.BindTransformFeedback = internalLoadAPI(contextPtr->BindTransformFeedback); contextPtr->BlendEquationSeparatei = load("glBlendEquationSeparatei"); context.BlendEquationSeparatei = internalLoadAPI(contextPtr->BlendEquationSeparatei); contextPtr->BlendEquationi = load("glBlendEquationi"); context.BlendEquationi = internalLoadAPI(contextPtr->BlendEquationi); contextPtr->BlendFuncSeparatei = load("glBlendFuncSeparatei"); context.BlendFuncSeparatei = internalLoadAPI(contextPtr->BlendFuncSeparatei); contextPtr->BlendFunci = load("glBlendFunci"); context.BlendFunci = internalLoadAPI(contextPtr->BlendFunci); contextPtr->DeleteTransformFeedbacks = load("glDeleteTransformFeedbacks"); context.DeleteTransformFeedbacks = internalLoadAPI(contextPtr->DeleteTransformFeedbacks); contextPtr->DrawArraysIndirect = load("glDrawArraysIndirect"); context.DrawArraysIndirect = internalLoadAPI(contextPtr->DrawArraysIndirect); contextPtr->DrawElementsIndirect = load("glDrawElementsIndirect"); context.DrawElementsIndirect = internalLoadAPI(contextPtr->DrawElementsIndirect); contextPtr->DrawTransformFeedback = load("glDrawTransformFeedback"); context.DrawTransformFeedback = internalLoadAPI(contextPtr->DrawTransformFeedback); contextPtr->DrawTransformFeedbackStream = load("glDrawTransformFeedbackStream"); context.DrawTransformFeedbackStream = internalLoadAPI(contextPtr->DrawTransformFeedbackStream); contextPtr->EndQueryIndexed = load("glEndQueryIndexed"); context.EndQueryIndexed = internalLoadAPI(contextPtr->EndQueryIndexed); contextPtr->GenTransformFeedbacks = load("glGenTransformFeedbacks"); context.GenTransformFeedbacks = internalLoadAPI(contextPtr->GenTransformFeedbacks); contextPtr->GetActiveSubroutineName = load("glGetActiveSubroutineName"); context.GetActiveSubroutineName = internalLoadAPI(contextPtr->GetActiveSubroutineName); contextPtr->GetActiveSubroutineUniformName = load("glGetActiveSubroutineUniformName"); context.GetActiveSubroutineUniformName = internalLoadAPI(contextPtr->GetActiveSubroutineUniformName); contextPtr->GetActiveSubroutineUniformiv = load("glGetActiveSubroutineUniformiv"); context.GetActiveSubroutineUniformiv = internalLoadAPI(contextPtr->GetActiveSubroutineUniformiv); contextPtr->GetProgramStageiv = load("glGetProgramStageiv"); context.GetProgramStageiv = internalLoadAPI(contextPtr->GetProgramStageiv); contextPtr->GetQueryIndexediv = load("glGetQueryIndexediv"); context.GetQueryIndexediv = internalLoadAPI(contextPtr->GetQueryIndexediv); contextPtr->GetSubroutineIndex = load("glGetSubroutineIndex"); context.GetSubroutineIndex = internalLoadAPI(contextPtr->GetSubroutineIndex); contextPtr->GetSubroutineUniformLocation = load("glGetSubroutineUniformLocation"); context.GetSubroutineUniformLocation = internalLoadAPI(contextPtr->GetSubroutineUniformLocation); contextPtr->GetUniformSubroutineuiv = load("glGetUniformSubroutineuiv"); context.GetUniformSubroutineuiv = internalLoadAPI(contextPtr->GetUniformSubroutineuiv); contextPtr->GetUniformdv = load("glGetUniformdv"); context.GetUniformdv = internalLoadAPI(contextPtr->GetUniformdv); contextPtr->IsTransformFeedback = load("glIsTransformFeedback"); context.IsTransformFeedback = internalLoadAPI(contextPtr->IsTransformFeedback); contextPtr->MinSampleShading = load("glMinSampleShading"); context.MinSampleShading = internalLoadAPI(contextPtr->MinSampleShading); contextPtr->PatchParameterfv = load("glPatchParameterfv"); context.PatchParameterfv = internalLoadAPI(contextPtr->PatchParameterfv); contextPtr->PatchParameteri = load("glPatchParameteri"); context.PatchParameteri = internalLoadAPI(contextPtr->PatchParameteri); contextPtr->PauseTransformFeedback = load("glPauseTransformFeedback"); context.PauseTransformFeedback = internalLoadAPI(contextPtr->PauseTransformFeedback); contextPtr->ResumeTransformFeedback = load("glResumeTransformFeedback"); context.ResumeTransformFeedback = internalLoadAPI(contextPtr->ResumeTransformFeedback); contextPtr->Uniform1d = load("glUniform1d"); context.Uniform1d = internalLoadAPI(contextPtr->Uniform1d); contextPtr->Uniform1dv = load("glUniform1dv"); context.Uniform1dv = internalLoadAPI(contextPtr->Uniform1dv); contextPtr->Uniform2d = load("glUniform2d"); context.Uniform2d = internalLoadAPI(contextPtr->Uniform2d); contextPtr->Uniform2dv = load("glUniform2dv"); context.Uniform2dv = internalLoadAPI(contextPtr->Uniform2dv); contextPtr->Uniform3d = load("glUniform3d"); context.Uniform3d = internalLoadAPI(contextPtr->Uniform3d); contextPtr->Uniform3dv = load("glUniform3dv"); context.Uniform3dv = internalLoadAPI(contextPtr->Uniform3dv); contextPtr->Uniform4d = load("glUniform4d"); context.Uniform4d = internalLoadAPI(contextPtr->Uniform4d); contextPtr->Uniform4dv = load("glUniform4dv"); context.Uniform4dv = internalLoadAPI(contextPtr->Uniform4dv); contextPtr->UniformMatrix2dv = load("glUniformMatrix2dv"); context.UniformMatrix2dv = internalLoadAPI(contextPtr->UniformMatrix2dv); contextPtr->UniformMatrix2x3dv = load("glUniformMatrix2x3dv"); context.UniformMatrix2x3dv = internalLoadAPI(contextPtr->UniformMatrix2x3dv); contextPtr->UniformMatrix2x4dv = load("glUniformMatrix2x4dv"); context.UniformMatrix2x4dv = internalLoadAPI(contextPtr->UniformMatrix2x4dv); contextPtr->UniformMatrix3dv = load("glUniformMatrix3dv"); context.UniformMatrix3dv = internalLoadAPI(contextPtr->UniformMatrix3dv); contextPtr->UniformMatrix3x2dv = load("glUniformMatrix3x2dv"); context.UniformMatrix3x2dv = internalLoadAPI(contextPtr->UniformMatrix3x2dv); contextPtr->UniformMatrix3x4dv = load("glUniformMatrix3x4dv"); context.UniformMatrix3x4dv = internalLoadAPI(contextPtr->UniformMatrix3x4dv); contextPtr->UniformMatrix4dv = load("glUniformMatrix4dv"); context.UniformMatrix4dv = internalLoadAPI(contextPtr->UniformMatrix4dv); contextPtr->UniformMatrix4x2dv = load("glUniformMatrix4x2dv"); context.UniformMatrix4x2dv = internalLoadAPI(contextPtr->UniformMatrix4x2dv); contextPtr->UniformMatrix4x3dv = load("glUniformMatrix4x3dv"); context.UniformMatrix4x3dv = internalLoadAPI(contextPtr->UniformMatrix4x3dv); contextPtr->UniformSubroutinesuiv = load("glUniformSubroutinesuiv"); context.UniformSubroutinesuiv = internalLoadAPI(contextPtr->UniformSubroutinesuiv); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.0 APIs"); } internal static unsafe void LoadGLcore41(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core41) { InternalIO.InternalAppendLog("The core version 4.1 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->ActiveShaderProgram = load("glActiveShaderProgram"); context.ActiveShaderProgram = internalLoadAPI(contextPtr->ActiveShaderProgram); contextPtr->BindProgramPipeline = load("glBindProgramPipeline"); context.BindProgramPipeline = internalLoadAPI(contextPtr->BindProgramPipeline); contextPtr->ClearDepthf = load("glClearDepthf"); context.ClearDepthf = internalLoadAPI(contextPtr->ClearDepthf); contextPtr->CreateShaderProgramv = load("glCreateShaderProgramv"); context.CreateShaderProgramv = internalLoadAPI(contextPtr->CreateShaderProgramv); contextPtr->DeleteProgramPipelines = load("glDeleteProgramPipelines"); context.DeleteProgramPipelines = internalLoadAPI(contextPtr->DeleteProgramPipelines); contextPtr->DepthRangeArrayv = load("glDepthRangeArrayv"); context.DepthRangeArrayv = internalLoadAPI(contextPtr->DepthRangeArrayv); contextPtr->DepthRangeIndexed = load("glDepthRangeIndexed"); context.DepthRangeIndexed = internalLoadAPI(contextPtr->DepthRangeIndexed); contextPtr->DepthRangef = load("glDepthRangef"); context.DepthRangef = internalLoadAPI(contextPtr->DepthRangef); contextPtr->GenProgramPipelines = load("glGenProgramPipelines"); context.GenProgramPipelines = internalLoadAPI(contextPtr->GenProgramPipelines); contextPtr->GetDoublei_v = load("glGetDoublei_v"); context.GetDoublei_v = internalLoadAPI(contextPtr->GetDoublei_v); contextPtr->GetFloati_v = load("glGetFloati_v"); context.GetFloati_v = internalLoadAPI(contextPtr->GetFloati_v); contextPtr->GetProgramBinary = load("glGetProgramBinary"); context.GetProgramBinary = internalLoadAPI(contextPtr->GetProgramBinary); contextPtr->GetProgramPipelineInfoLog = load("glGetProgramPipelineInfoLog"); context.GetProgramPipelineInfoLog = internalLoadAPI(contextPtr->GetProgramPipelineInfoLog); contextPtr->GetProgramPipelineiv = load("glGetProgramPipelineiv"); context.GetProgramPipelineiv = internalLoadAPI(contextPtr->GetProgramPipelineiv); contextPtr->GetShaderPrecisionFormat = load("glGetShaderPrecisionFormat"); context.GetShaderPrecisionFormat = internalLoadAPI(contextPtr->GetShaderPrecisionFormat); contextPtr->GetVertexAttribLdv = load("glGetVertexAttribLdv"); context.GetVertexAttribLdv = internalLoadAPI(contextPtr->GetVertexAttribLdv); contextPtr->IsProgramPipeline = load("glIsProgramPipeline"); context.IsProgramPipeline = internalLoadAPI(contextPtr->IsProgramPipeline); contextPtr->ProgramBinary = load("glProgramBinary"); context.ProgramBinary = internalLoadAPI(contextPtr->ProgramBinary); contextPtr->ProgramParameteri = load("glProgramParameteri"); context.ProgramParameteri = internalLoadAPI(contextPtr->ProgramParameteri); contextPtr->ProgramUniform1d = load("glProgramUniform1d"); context.ProgramUniform1d = internalLoadAPI(contextPtr->ProgramUniform1d); contextPtr->ProgramUniform1dv = load("glProgramUniform1dv"); context.ProgramUniform1dv = internalLoadAPI(contextPtr->ProgramUniform1dv); contextPtr->ProgramUniform1f = load("glProgramUniform1f"); context.ProgramUniform1f = internalLoadAPI(contextPtr->ProgramUniform1f); contextPtr->ProgramUniform1fv = load("glProgramUniform1fv"); context.ProgramUniform1fv = internalLoadAPI(contextPtr->ProgramUniform1fv); contextPtr->ProgramUniform1i = load("glProgramUniform1i"); context.ProgramUniform1i = internalLoadAPI(contextPtr->ProgramUniform1i); contextPtr->ProgramUniform1iv = load("glProgramUniform1iv"); context.ProgramUniform1iv = internalLoadAPI(contextPtr->ProgramUniform1iv); contextPtr->ProgramUniform1ui = load("glProgramUniform1ui"); context.ProgramUniform1ui = internalLoadAPI(contextPtr->ProgramUniform1ui); contextPtr->ProgramUniform1uiv = load("glProgramUniform1uiv"); context.ProgramUniform1uiv = internalLoadAPI(contextPtr->ProgramUniform1uiv); contextPtr->ProgramUniform2d = load("glProgramUniform2d"); context.ProgramUniform2d = internalLoadAPI(contextPtr->ProgramUniform2d); contextPtr->ProgramUniform2dv = load("glProgramUniform2dv"); context.ProgramUniform2dv = internalLoadAPI(contextPtr->ProgramUniform2dv); contextPtr->ProgramUniform2f = load("glProgramUniform2f"); context.ProgramUniform2f = internalLoadAPI(contextPtr->ProgramUniform2f); contextPtr->ProgramUniform2fv = load("glProgramUniform2fv"); context.ProgramUniform2fv = internalLoadAPI(contextPtr->ProgramUniform2fv); contextPtr->ProgramUniform2i = load("glProgramUniform2i"); context.ProgramUniform2i = internalLoadAPI(contextPtr->ProgramUniform2i); contextPtr->ProgramUniform2iv = load("glProgramUniform2iv"); context.ProgramUniform2iv = internalLoadAPI(contextPtr->ProgramUniform2iv); contextPtr->ProgramUniform2ui = load("glProgramUniform2ui"); context.ProgramUniform2ui = internalLoadAPI(contextPtr->ProgramUniform2ui); contextPtr->ProgramUniform2uiv = load("glProgramUniform2uiv"); context.ProgramUniform2uiv = internalLoadAPI(contextPtr->ProgramUniform2uiv); contextPtr->ProgramUniform3d = load("glProgramUniform3d"); context.ProgramUniform3d = internalLoadAPI(contextPtr->ProgramUniform3d); contextPtr->ProgramUniform3dv = load("glProgramUniform3dv"); context.ProgramUniform3dv = internalLoadAPI(contextPtr->ProgramUniform3dv); contextPtr->ProgramUniform3f = load("glProgramUniform3f"); context.ProgramUniform3f = internalLoadAPI(contextPtr->ProgramUniform3f); contextPtr->ProgramUniform3fv = load("glProgramUniform3fv"); context.ProgramUniform3fv = internalLoadAPI(contextPtr->ProgramUniform3fv); contextPtr->ProgramUniform3i = load("glProgramUniform3i"); context.ProgramUniform3i = internalLoadAPI(contextPtr->ProgramUniform3i); contextPtr->ProgramUniform3iv = load("glProgramUniform3iv"); context.ProgramUniform3iv = internalLoadAPI(contextPtr->ProgramUniform3iv); contextPtr->ProgramUniform3ui = load("glProgramUniform3ui"); context.ProgramUniform3ui = internalLoadAPI(contextPtr->ProgramUniform3ui); contextPtr->ProgramUniform3uiv = load("glProgramUniform3uiv"); context.ProgramUniform3uiv = internalLoadAPI(contextPtr->ProgramUniform3uiv); contextPtr->ProgramUniform4d = load("glProgramUniform4d"); context.ProgramUniform4d = internalLoadAPI(contextPtr->ProgramUniform4d); contextPtr->ProgramUniform4dv = load("glProgramUniform4dv"); context.ProgramUniform4dv = internalLoadAPI(contextPtr->ProgramUniform4dv); contextPtr->ProgramUniform4f = load("glProgramUniform4f"); context.ProgramUniform4f = internalLoadAPI(contextPtr->ProgramUniform4f); contextPtr->ProgramUniform4fv = load("glProgramUniform4fv"); context.ProgramUniform4fv = internalLoadAPI(contextPtr->ProgramUniform4fv); contextPtr->ProgramUniform4i = load("glProgramUniform4i"); context.ProgramUniform4i = internalLoadAPI(contextPtr->ProgramUniform4i); contextPtr->ProgramUniform4iv = load("glProgramUniform4iv"); context.ProgramUniform4iv = internalLoadAPI(contextPtr->ProgramUniform4iv); contextPtr->ProgramUniform4ui = load("glProgramUniform4ui"); context.ProgramUniform4ui = internalLoadAPI(contextPtr->ProgramUniform4ui); contextPtr->ProgramUniform4uiv = load("glProgramUniform4uiv"); context.ProgramUniform4uiv = internalLoadAPI(contextPtr->ProgramUniform4uiv); contextPtr->ProgramUniformMatrix2dv = load("glProgramUniformMatrix2dv"); context.ProgramUniformMatrix2dv = internalLoadAPI(contextPtr->ProgramUniformMatrix2dv); contextPtr->ProgramUniformMatrix2fv = load("glProgramUniformMatrix2fv"); context.ProgramUniformMatrix2fv = internalLoadAPI(contextPtr->ProgramUniformMatrix2fv); contextPtr->ProgramUniformMatrix2x3dv = load("glProgramUniformMatrix2x3dv"); context.ProgramUniformMatrix2x3dv = internalLoadAPI(contextPtr->ProgramUniformMatrix2x3dv); contextPtr->ProgramUniformMatrix2x3fv = load("glProgramUniformMatrix2x3fv"); context.ProgramUniformMatrix2x3fv = internalLoadAPI(contextPtr->ProgramUniformMatrix2x3fv); contextPtr->ProgramUniformMatrix2x4dv = load("glProgramUniformMatrix2x4dv"); context.ProgramUniformMatrix2x4dv = internalLoadAPI(contextPtr->ProgramUniformMatrix2x4dv); contextPtr->ProgramUniformMatrix2x4fv = load("glProgramUniformMatrix2x4fv"); context.ProgramUniformMatrix2x4fv = internalLoadAPI(contextPtr->ProgramUniformMatrix2x4fv); contextPtr->ProgramUniformMatrix3dv = load("glProgramUniformMatrix3dv"); context.ProgramUniformMatrix3dv = internalLoadAPI(contextPtr->ProgramUniformMatrix3dv); contextPtr->ProgramUniformMatrix3fv = load("glProgramUniformMatrix3fv"); context.ProgramUniformMatrix3fv = internalLoadAPI(contextPtr->ProgramUniformMatrix3fv); contextPtr->ProgramUniformMatrix3x2dv = load("glProgramUniformMatrix3x2dv"); context.ProgramUniformMatrix3x2dv = internalLoadAPI(contextPtr->ProgramUniformMatrix3x2dv); contextPtr->ProgramUniformMatrix3x2fv = load("glProgramUniformMatrix3x2fv"); context.ProgramUniformMatrix3x2fv = internalLoadAPI(contextPtr->ProgramUniformMatrix3x2fv); contextPtr->ProgramUniformMatrix3x4dv = load("glProgramUniformMatrix3x4dv"); context.ProgramUniformMatrix3x4dv = internalLoadAPI(contextPtr->ProgramUniformMatrix3x4dv); contextPtr->ProgramUniformMatrix3x4fv = load("glProgramUniformMatrix3x4fv"); context.ProgramUniformMatrix3x4fv = internalLoadAPI(contextPtr->ProgramUniformMatrix3x4fv); contextPtr->ProgramUniformMatrix4dv = load("glProgramUniformMatrix4dv"); context.ProgramUniformMatrix4dv = internalLoadAPI(contextPtr->ProgramUniformMatrix4dv); contextPtr->ProgramUniformMatrix4fv = load("glProgramUniformMatrix4fv"); context.ProgramUniformMatrix4fv = internalLoadAPI(contextPtr->ProgramUniformMatrix4fv); contextPtr->ProgramUniformMatrix4x2dv = load("glProgramUniformMatrix4x2dv"); context.ProgramUniformMatrix4x2dv = internalLoadAPI(contextPtr->ProgramUniformMatrix4x2dv); contextPtr->ProgramUniformMatrix4x2fv = load("glProgramUniformMatrix4x2fv"); context.ProgramUniformMatrix4x2fv = internalLoadAPI(contextPtr->ProgramUniformMatrix4x2fv); contextPtr->ProgramUniformMatrix4x3dv = load("glProgramUniformMatrix4x3dv"); context.ProgramUniformMatrix4x3dv = internalLoadAPI(contextPtr->ProgramUniformMatrix4x3dv); contextPtr->ProgramUniformMatrix4x3fv = load("glProgramUniformMatrix4x3fv"); context.ProgramUniformMatrix4x3fv = internalLoadAPI(contextPtr->ProgramUniformMatrix4x3fv); contextPtr->ReleaseShaderCompiler = load("glReleaseShaderCompiler"); context.ReleaseShaderCompiler = internalLoadAPI(contextPtr->ReleaseShaderCompiler); contextPtr->ScissorArrayv = load("glScissorArrayv"); context.ScissorArrayv = internalLoadAPI(contextPtr->ScissorArrayv); contextPtr->ScissorIndexed = load("glScissorIndexed"); context.ScissorIndexed = internalLoadAPI(contextPtr->ScissorIndexed); contextPtr->ScissorIndexedv = load("glScissorIndexedv"); context.ScissorIndexedv = internalLoadAPI(contextPtr->ScissorIndexedv); contextPtr->ShaderBinary = load("glShaderBinary"); context.ShaderBinary = internalLoadAPI(contextPtr->ShaderBinary); contextPtr->UseProgramStages = load("glUseProgramStages"); context.UseProgramStages = internalLoadAPI(contextPtr->UseProgramStages); contextPtr->ValidateProgramPipeline = load("glValidateProgramPipeline"); context.ValidateProgramPipeline = internalLoadAPI(contextPtr->ValidateProgramPipeline); contextPtr->VertexAttribL1d = load("glVertexAttribL1d"); context.VertexAttribL1d = internalLoadAPI(contextPtr->VertexAttribL1d); contextPtr->VertexAttribL1dv = load("glVertexAttribL1dv"); context.VertexAttribL1dv = internalLoadAPI(contextPtr->VertexAttribL1dv); contextPtr->VertexAttribL2d = load("glVertexAttribL2d"); context.VertexAttribL2d = internalLoadAPI(contextPtr->VertexAttribL2d); contextPtr->VertexAttribL2dv = load("glVertexAttribL2dv"); context.VertexAttribL2dv = internalLoadAPI(contextPtr->VertexAttribL2dv); contextPtr->VertexAttribL3d = load("glVertexAttribL3d"); context.VertexAttribL3d = internalLoadAPI(contextPtr->VertexAttribL3d); contextPtr->VertexAttribL3dv = load("glVertexAttribL3dv"); context.VertexAttribL3dv = internalLoadAPI(contextPtr->VertexAttribL3dv); contextPtr->VertexAttribL4d = load("glVertexAttribL4d"); context.VertexAttribL4d = internalLoadAPI(contextPtr->VertexAttribL4d); contextPtr->VertexAttribL4dv = load("glVertexAttribL4dv"); context.VertexAttribL4dv = internalLoadAPI(contextPtr->VertexAttribL4dv); contextPtr->VertexAttribLPointer = load("glVertexAttribLPointer"); context.VertexAttribLPointer = internalLoadAPI(contextPtr->VertexAttribLPointer); contextPtr->ViewportArrayv = load("glViewportArrayv"); context.ViewportArrayv = internalLoadAPI(contextPtr->ViewportArrayv); contextPtr->ViewportIndexedf = load("glViewportIndexedf"); context.ViewportIndexedf = internalLoadAPI(contextPtr->ViewportIndexedf); contextPtr->ViewportIndexedfv = load("glViewportIndexedfv"); context.ViewportIndexedfv = internalLoadAPI(contextPtr->ViewportIndexedfv); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.1 APIs"); } internal static unsafe void LoadGLcore42(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core42) { InternalIO.InternalAppendLog("The core version 4.2 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindImageTexture = load("glBindImageTexture"); context.BindImageTexture = internalLoadAPI(contextPtr->BindImageTexture); contextPtr->DrawArraysInstancedBaseInstance = load("glDrawArraysInstancedBaseInstance"); context.DrawArraysInstancedBaseInstance = internalLoadAPI(contextPtr->DrawArraysInstancedBaseInstance); contextPtr->DrawElementsInstancedBaseInstance = load("glDrawElementsInstancedBaseInstance"); context.DrawElementsInstancedBaseInstance = internalLoadAPI(contextPtr->DrawElementsInstancedBaseInstance); contextPtr->DrawElementsInstancedBaseVertexBaseInstance = load("glDrawElementsInstancedBaseVertexBaseInstance"); context.DrawElementsInstancedBaseVertexBaseInstance = internalLoadAPI(contextPtr->DrawElementsInstancedBaseVertexBaseInstance); contextPtr->DrawTransformFeedbackInstanced = load("glDrawTransformFeedbackInstanced"); context.DrawTransformFeedbackInstanced = internalLoadAPI(contextPtr->DrawTransformFeedbackInstanced); contextPtr->DrawTransformFeedbackStreamInstanced = load("glDrawTransformFeedbackStreamInstanced"); context.DrawTransformFeedbackStreamInstanced = internalLoadAPI(contextPtr->DrawTransformFeedbackStreamInstanced); contextPtr->GetActiveAtomicCounterBufferiv = load("glGetActiveAtomicCounterBufferiv"); context.GetActiveAtomicCounterBufferiv = internalLoadAPI(contextPtr->GetActiveAtomicCounterBufferiv); contextPtr->GetInternalformativ = load("glGetInternalformativ"); context.GetInternalformativ = internalLoadAPI(contextPtr->GetInternalformativ); contextPtr->MemoryBarrier = load("glMemoryBarrier"); context.MemoryBarrier = internalLoadAPI(contextPtr->MemoryBarrier); contextPtr->TexStorage1D = load("glTexStorage1D"); context.TexStorage1D = internalLoadAPI(contextPtr->TexStorage1D); contextPtr->TexStorage2D = load("glTexStorage2D"); context.TexStorage2D = internalLoadAPI(contextPtr->TexStorage2D); contextPtr->TexStorage3D = load("glTexStorage3D"); context.TexStorage3D = internalLoadAPI(contextPtr->TexStorage3D); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.2 APIs"); } internal static unsafe void LoadGLcore43(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core43) { InternalIO.InternalAppendLog("The core version 4.3 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindVertexBuffer = load("glBindVertexBuffer"); context.BindVertexBuffer = internalLoadAPI(contextPtr->BindVertexBuffer); contextPtr->ClearBufferData = load("glClearBufferData"); context.ClearBufferData = internalLoadAPI(contextPtr->ClearBufferData); contextPtr->ClearBufferSubData = load("glClearBufferSubData"); context.ClearBufferSubData = internalLoadAPI(contextPtr->ClearBufferSubData); contextPtr->CopyImageSubData = load("glCopyImageSubData"); context.CopyImageSubData = internalLoadAPI(contextPtr->CopyImageSubData); contextPtr->DebugMessageCallback = load("glDebugMessageCallback"); context.DebugMessageCallback = internalLoadAPI(contextPtr->DebugMessageCallback); contextPtr->DebugMessageControl = load("glDebugMessageControl"); context.DebugMessageControl = internalLoadAPI(contextPtr->DebugMessageControl); contextPtr->DebugMessageInsert = load("glDebugMessageInsert"); context.DebugMessageInsert = internalLoadAPI(contextPtr->DebugMessageInsert); contextPtr->DispatchCompute = load("glDispatchCompute"); context.DispatchCompute = internalLoadAPI(contextPtr->DispatchCompute); contextPtr->DispatchComputeIndirect = load("glDispatchComputeIndirect"); context.DispatchComputeIndirect = internalLoadAPI(contextPtr->DispatchComputeIndirect); contextPtr->FramebufferParameteri = load("glFramebufferParameteri"); context.FramebufferParameteri = internalLoadAPI(contextPtr->FramebufferParameteri); contextPtr->GetDebugMessageLog = load("glGetDebugMessageLog"); context.GetDebugMessageLog = internalLoadAPI(contextPtr->GetDebugMessageLog); contextPtr->GetFramebufferParameteriv = load("glGetFramebufferParameteriv"); context.GetFramebufferParameteriv = internalLoadAPI(contextPtr->GetFramebufferParameteriv); contextPtr->GetInternalformati64v = load("glGetInternalformati64v"); context.GetInternalformati64v = internalLoadAPI(contextPtr->GetInternalformati64v); contextPtr->GetObjectLabel = load("glGetObjectLabel"); context.GetObjectLabel = internalLoadAPI(contextPtr->GetObjectLabel); contextPtr->GetObjectPtrLabel = load("glGetObjectPtrLabel"); context.GetObjectPtrLabel = internalLoadAPI(contextPtr->GetObjectPtrLabel); contextPtr->GetPointerv = load("glGetPointerv"); context.GetPointerv = internalLoadAPI(contextPtr->GetPointerv); contextPtr->GetProgramInterfaceiv = load("glGetProgramInterfaceiv"); context.GetProgramInterfaceiv = internalLoadAPI(contextPtr->GetProgramInterfaceiv); contextPtr->GetProgramResourceIndex = load("glGetProgramResourceIndex"); context.GetProgramResourceIndex = internalLoadAPI(contextPtr->GetProgramResourceIndex); contextPtr->GetProgramResourceLocation = load("glGetProgramResourceLocation"); context.GetProgramResourceLocation = internalLoadAPI(contextPtr->GetProgramResourceLocation); contextPtr->GetProgramResourceLocationIndex = load("glGetProgramResourceLocationIndex"); context.GetProgramResourceLocationIndex = internalLoadAPI(contextPtr->GetProgramResourceLocationIndex); contextPtr->GetProgramResourceName = load("glGetProgramResourceName"); context.GetProgramResourceName = internalLoadAPI(contextPtr->GetProgramResourceName); contextPtr->GetProgramResourceiv = load("glGetProgramResourceiv"); context.GetProgramResourceiv = internalLoadAPI(contextPtr->GetProgramResourceiv); contextPtr->InvalidateBufferData = load("glInvalidateBufferData"); context.InvalidateBufferData = internalLoadAPI(contextPtr->InvalidateBufferData); contextPtr->InvalidateBufferSubData = load("glInvalidateBufferSubData"); context.InvalidateBufferSubData = internalLoadAPI(contextPtr->InvalidateBufferSubData); contextPtr->InvalidateFramebuffer = load("glInvalidateFramebuffer"); context.InvalidateFramebuffer = internalLoadAPI(contextPtr->InvalidateFramebuffer); contextPtr->InvalidateSubFramebuffer = load("glInvalidateSubFramebuffer"); context.InvalidateSubFramebuffer = internalLoadAPI(contextPtr->InvalidateSubFramebuffer); contextPtr->InvalidateTexImage = load("glInvalidateTexImage"); context.InvalidateTexImage = internalLoadAPI(contextPtr->InvalidateTexImage); contextPtr->InvalidateTexSubImage = load("glInvalidateTexSubImage"); context.InvalidateTexSubImage = internalLoadAPI(contextPtr->InvalidateTexSubImage); contextPtr->MultiDrawArraysIndirect = load("glMultiDrawArraysIndirect"); context.MultiDrawArraysIndirect = internalLoadAPI(contextPtr->MultiDrawArraysIndirect); contextPtr->MultiDrawElementsIndirect = load("glMultiDrawElementsIndirect"); context.MultiDrawElementsIndirect = internalLoadAPI(contextPtr->MultiDrawElementsIndirect); contextPtr->ObjectLabel = load("glObjectLabel"); context.ObjectLabel = internalLoadAPI(contextPtr->ObjectLabel); contextPtr->ObjectPtrLabel = load("glObjectPtrLabel"); context.ObjectPtrLabel = internalLoadAPI(contextPtr->ObjectPtrLabel); contextPtr->PopDebugGroup = load("glPopDebugGroup"); context.PopDebugGroup = internalLoadAPI(contextPtr->PopDebugGroup); contextPtr->PushDebugGroup = load("glPushDebugGroup"); context.PushDebugGroup = internalLoadAPI(contextPtr->PushDebugGroup); contextPtr->ShaderStorageBlockBinding = load("glShaderStorageBlockBinding"); context.ShaderStorageBlockBinding = internalLoadAPI(contextPtr->ShaderStorageBlockBinding); contextPtr->TexBufferRange = load("glTexBufferRange"); context.TexBufferRange = internalLoadAPI(contextPtr->TexBufferRange); contextPtr->TexStorage2DMultisample = load("glTexStorage2DMultisample"); context.TexStorage2DMultisample = internalLoadAPI(contextPtr->TexStorage2DMultisample); contextPtr->TexStorage3DMultisample = load("glTexStorage3DMultisample"); context.TexStorage3DMultisample = internalLoadAPI(contextPtr->TexStorage3DMultisample); contextPtr->TextureView = load("glTextureView"); context.TextureView = internalLoadAPI(contextPtr->TextureView); contextPtr->VertexAttribBinding = load("glVertexAttribBinding"); context.VertexAttribBinding = internalLoadAPI(contextPtr->VertexAttribBinding); contextPtr->VertexAttribFormat = load("glVertexAttribFormat"); context.VertexAttribFormat = internalLoadAPI(contextPtr->VertexAttribFormat); contextPtr->VertexAttribIFormat = load("glVertexAttribIFormat"); context.VertexAttribIFormat = internalLoadAPI(contextPtr->VertexAttribIFormat); contextPtr->ClearBufferData = load("glClearBufferData"); context.ClearBufferData = internalLoadAPI(contextPtr->ClearBufferData); contextPtr->VertexBindingDivisor = load("glVertexBindingDivisor"); context.VertexBindingDivisor = internalLoadAPI(contextPtr->VertexBindingDivisor); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.3 APIs"); } internal static unsafe void LoadGLcore44(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core44) { InternalIO.InternalAppendLog("The core version 4.4 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindBuffersBase = load("glBindBuffersBase"); context.BindBuffersBase = internalLoadAPI(contextPtr->BindBuffersBase); contextPtr->BindBuffersRange = load("glBindBuffersRange"); context.BindBuffersRange = internalLoadAPI(contextPtr->BindBuffersRange); contextPtr->BindImageTextures = load("glBindImageTextures"); context.BindImageTextures = internalLoadAPI(contextPtr->BindImageTextures); contextPtr->BindSamplers = load("glBindSamplers"); context.BindSamplers = internalLoadAPI(contextPtr->BindSamplers); contextPtr->BindTextures = load("glBindTextures"); context.BindTextures = internalLoadAPI(contextPtr->BindTextures); contextPtr->BindVertexBuffers = load("glBindVertexBuffers"); context.BindVertexBuffers = internalLoadAPI(contextPtr->BindVertexBuffers); contextPtr->BufferStorage = load("glBufferStorage"); context.BufferStorage = internalLoadAPI(contextPtr->BufferStorage); contextPtr->ClearTexImage = load("glClearTexImage"); context.ClearTexImage = internalLoadAPI(contextPtr->ClearTexImage); contextPtr->ClearTexSubImage = load("glClearTexSubImage"); context.ClearTexSubImage = internalLoadAPI(contextPtr->ClearTexSubImage); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.4 APIs"); } internal static unsafe void LoadGLcore45(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core45) { InternalIO.InternalAppendLog("The core version 4.5 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->BindTextureUnit = load("glBindTextureUnit"); context.BindTextureUnit = internalLoadAPI(contextPtr->BindTextureUnit); contextPtr->BlitNamedFramebuffer = load("glBlitNamedFramebuffer"); context.BlitNamedFramebuffer = internalLoadAPI(contextPtr->BlitNamedFramebuffer); contextPtr->CheckNamedFramebufferStatus = load("glCheckNamedFramebufferStatus"); context.CheckNamedFramebufferStatus = internalLoadAPI(contextPtr->CheckNamedFramebufferStatus); contextPtr->ClearNamedBufferData = load("glClearNamedBufferData"); context.ClearNamedBufferData = internalLoadAPI(contextPtr->ClearNamedBufferData); contextPtr->ClearNamedBufferSubData = load("glClearNamedBufferSubData"); context.ClearNamedBufferSubData = internalLoadAPI(contextPtr->ClearNamedBufferSubData); contextPtr->ClearNamedFramebufferfi = load("glClearNamedFramebufferfi"); context.ClearNamedFramebufferfi = internalLoadAPI(contextPtr->ClearNamedFramebufferfi); contextPtr->ClearNamedFramebufferfv = load("glClearNamedFramebufferfv"); context.ClearNamedFramebufferfv = internalLoadAPI(contextPtr->ClearNamedFramebufferfv); contextPtr->ClearNamedFramebufferiv = load("glClearNamedFramebufferiv"); context.ClearNamedFramebufferiv = internalLoadAPI(contextPtr->ClearNamedFramebufferiv); contextPtr->ClearNamedFramebufferuiv = load("glClearNamedFramebufferuiv"); context.ClearNamedFramebufferuiv = internalLoadAPI(contextPtr->ClearNamedFramebufferuiv); contextPtr->ClipControl = load("glClipControl"); context.ClipControl = internalLoadAPI(contextPtr->ClipControl); contextPtr->CompressedTextureSubImage1D = load("glCompressedTextureSubImage1D"); context.CompressedTextureSubImage1D = internalLoadAPI(contextPtr->CompressedTextureSubImage1D); contextPtr->CompressedTextureSubImage2D = load("glCompressedTextureSubImage2D"); context.CompressedTextureSubImage2D = internalLoadAPI(contextPtr->CompressedTextureSubImage2D); contextPtr->CompressedTextureSubImage3D = load("glCompressedTextureSubImage3D"); context.CompressedTextureSubImage3D = internalLoadAPI(contextPtr->CompressedTextureSubImage3D); contextPtr->CopyNamedBufferSubData = load("glCopyNamedBufferSubData"); context.CopyNamedBufferSubData = internalLoadAPI(contextPtr->CopyNamedBufferSubData); contextPtr->CopyTextureSubImage1D = load("glCopyTextureSubImage1D"); context.CopyTextureSubImage1D = internalLoadAPI(contextPtr->CopyTextureSubImage1D); contextPtr->CopyTextureSubImage2D = load("glCopyTextureSubImage2D"); context.CopyTextureSubImage2D = internalLoadAPI(contextPtr->CopyTextureSubImage2D); contextPtr->CopyTextureSubImage3D = load("glCopyTextureSubImage3D"); context.CopyTextureSubImage3D = internalLoadAPI(contextPtr->CopyTextureSubImage3D); contextPtr->CreateBuffers = load("glCreateBuffers"); context.CreateBuffers = internalLoadAPI(contextPtr->CreateBuffers); contextPtr->CreateFramebuffers = load("glCreateFramebuffers"); context.CreateFramebuffers = internalLoadAPI(contextPtr->CreateFramebuffers); contextPtr->CreateProgramPipelines = load("glCreateProgramPipelines"); context.CreateProgramPipelines = internalLoadAPI(contextPtr->CreateProgramPipelines); contextPtr->CreateQueries = load("glCreateQueries"); context.CreateQueries = internalLoadAPI(contextPtr->CreateQueries); contextPtr->CreateRenderbuffers = load("glCreateRenderbuffers"); context.CreateRenderbuffers = internalLoadAPI(contextPtr->CreateRenderbuffers); contextPtr->CreateSamplers = load("glCreateSamplers"); context.CreateSamplers = internalLoadAPI(contextPtr->CreateSamplers); contextPtr->CreateTextures = load("glCreateTextures"); context.CreateTextures = internalLoadAPI(contextPtr->CreateTextures); contextPtr->CreateTransformFeedbacks = load("glCreateTransformFeedbacks"); context.CreateTransformFeedbacks = internalLoadAPI(contextPtr->CreateTransformFeedbacks); contextPtr->CreateVertexArrays = load("glCreateVertexArrays"); context.CreateVertexArrays = internalLoadAPI(contextPtr->CreateVertexArrays); contextPtr->DisableVertexArrayAttrib = load("glDisableVertexArrayAttrib"); context.DisableVertexArrayAttrib = internalLoadAPI(contextPtr->DisableVertexArrayAttrib); contextPtr->EnableVertexArrayAttrib = load("glEnableVertexArrayAttrib"); context.EnableVertexArrayAttrib = internalLoadAPI(contextPtr->EnableVertexArrayAttrib); contextPtr->FlushMappedNamedBufferRange = load("glFlushMappedNamedBufferRange"); context.FlushMappedNamedBufferRange = internalLoadAPI(contextPtr->FlushMappedNamedBufferRange); contextPtr->GenerateTextureMipmap = load("glGenerateTextureMipmap"); context.GenerateTextureMipmap = internalLoadAPI(contextPtr->GenerateTextureMipmap); contextPtr->GetCompressedTextureImage = load("glGetCompressedTextureImage"); context.GetCompressedTextureImage = internalLoadAPI(contextPtr->GetCompressedTextureImage); contextPtr->GetCompressedTextureSubImage = load("glGetCompressedTextureSubImage"); context.GetCompressedTextureSubImage = internalLoadAPI(contextPtr->GetCompressedTextureSubImage); contextPtr->GetGraphicsResetStatus = load("glGetGraphicsResetStatus"); context.GetGraphicsResetStatus = internalLoadAPI(contextPtr->GetGraphicsResetStatus); contextPtr->GetNamedBufferParameteri64v = load("glGetNamedBufferParameteri64v"); context.GetNamedBufferParameteri64v = internalLoadAPI(contextPtr->GetNamedBufferParameteri64v); contextPtr->GetNamedBufferParameteriv = load("glGetNamedBufferParameteriv"); context.GetNamedBufferParameteriv = internalLoadAPI(contextPtr->GetNamedBufferParameteriv); contextPtr->GetNamedBufferPointerv = load("glGetNamedBufferPointerv"); context.GetNamedBufferPointerv = internalLoadAPI(contextPtr->GetNamedBufferPointerv); contextPtr->GetNamedBufferSubData = load("glGetNamedBufferSubData"); context.GetNamedBufferSubData = internalLoadAPI(contextPtr->GetNamedBufferSubData); contextPtr->GetNamedFramebufferAttachmentParameteriv = load("glGetNamedFramebufferAttachmentParameteriv"); context.GetNamedFramebufferAttachmentParameteriv = internalLoadAPI(contextPtr->GetNamedFramebufferAttachmentParameteriv); contextPtr->GetNamedFramebufferParameteriv = load("glGetNamedFramebufferParameteriv"); context.GetNamedFramebufferParameteriv = internalLoadAPI(contextPtr->GetNamedFramebufferParameteriv); contextPtr->GetNamedRenderbufferParameteriv = load("glGetNamedRenderbufferParameteriv"); context.GetNamedRenderbufferParameteriv = internalLoadAPI(contextPtr->GetNamedRenderbufferParameteriv); contextPtr->GetQueryBufferObjecti64v = load("glGetQueryBufferObjecti64v"); context.GetQueryBufferObjecti64v = internalLoadAPI(contextPtr->GetQueryBufferObjecti64v); contextPtr->GetQueryBufferObjectiv = load("glGetQueryBufferObjectiv"); context.GetQueryBufferObjectiv = internalLoadAPI(contextPtr->GetQueryBufferObjectiv); contextPtr->GetQueryBufferObjectui64v = load("glGetQueryBufferObjectui64v"); context.GetQueryBufferObjectui64v = internalLoadAPI(contextPtr->GetQueryBufferObjectui64v); contextPtr->GetQueryBufferObjectuiv = load("glGetQueryBufferObjectuiv"); context.GetQueryBufferObjectuiv = internalLoadAPI(contextPtr->GetQueryBufferObjectuiv); contextPtr->GetTextureImage = load("glGetTextureImage"); context.GetTextureImage = internalLoadAPI(contextPtr->GetTextureImage); contextPtr->GetTextureLevelParameterfv = load("glGetTextureLevelParameterfv"); context.GetTextureLevelParameterfv = internalLoadAPI(contextPtr->GetTextureLevelParameterfv); contextPtr->GetTextureLevelParameteriv = load("glGetTextureLevelParameteriv"); context.GetTextureLevelParameteriv = internalLoadAPI(contextPtr->GetTextureLevelParameteriv); contextPtr->GetTextureParameterIiv = load("glGetTextureParameterIiv"); context.GetTextureParameterIiv = internalLoadAPI(contextPtr->GetTextureParameterIiv); contextPtr->GetTextureParameterIuiv = load("glGetTextureParameterIuiv"); context.GetTextureParameterIuiv = internalLoadAPI(contextPtr->GetTextureParameterIuiv); contextPtr->GetTextureParameterfv = load("glGetTextureParameterfv"); context.GetTextureParameterfv = internalLoadAPI(contextPtr->GetTextureParameterfv); contextPtr->GetTextureParameteriv = load("glGetTextureParameteriv"); context.GetTextureParameteriv = internalLoadAPI(contextPtr->GetTextureParameteriv); contextPtr->GetTextureSubImage = load("glGetTextureSubImage"); context.GetTextureSubImage = internalLoadAPI(contextPtr->GetTextureSubImage); contextPtr->GetTransformFeedbacki64_v = load("glGetTransformFeedbacki64_v"); context.GetTransformFeedbacki64_v = internalLoadAPI(contextPtr->GetTransformFeedbacki64_v); contextPtr->GetTransformFeedbacki_v = load("glGetTransformFeedbacki_v"); context.GetTransformFeedbacki_v = internalLoadAPI(contextPtr->GetTransformFeedbacki_v); contextPtr->GetTransformFeedbackiv = load("glGetTransformFeedbackiv"); context.GetTransformFeedbackiv = internalLoadAPI(contextPtr->GetTransformFeedbackiv); contextPtr->GetVertexArrayIndexed64iv = load("glGetVertexArrayIndexed64iv"); context.GetVertexArrayIndexed64iv = internalLoadAPI(contextPtr->GetVertexArrayIndexed64iv); contextPtr->GetVertexArrayIndexediv = load("glGetVertexArrayIndexediv"); context.GetVertexArrayIndexediv = internalLoadAPI(contextPtr->GetVertexArrayIndexediv); contextPtr->GetVertexArrayiv = load("glGetVertexArrayiv"); context.GetVertexArrayiv = internalLoadAPI(contextPtr->GetVertexArrayiv); contextPtr->GetnCompressedTexImage = load("glGetnCompressedTexImage"); context.GetnCompressedTexImage = internalLoadAPI(contextPtr->GetnCompressedTexImage); contextPtr->GetnTexImage = load("glGetnTexImage"); context.GetnTexImage = internalLoadAPI(contextPtr->GetnTexImage); contextPtr->GetnUniformdv = load("glGetnUniformdv"); context.GetnUniformdv = internalLoadAPI(contextPtr->GetnUniformdv); contextPtr->GetnUniformfv = load("glGetnUniformfv"); context.GetnUniformfv = internalLoadAPI(contextPtr->GetnUniformfv); contextPtr->GetnUniformiv = load("glGetnUniformiv"); context.GetnUniformiv = internalLoadAPI(contextPtr->GetnUniformiv); contextPtr->GetnUniformuiv = load("glGetnUniformuiv"); context.GetnUniformuiv = internalLoadAPI(contextPtr->GetnUniformuiv); contextPtr->InvalidateNamedFramebufferData = load("glInvalidateNamedFramebufferData"); context.InvalidateNamedFramebufferData = internalLoadAPI(contextPtr->InvalidateNamedFramebufferData); contextPtr->InvalidateNamedFramebufferSubData = load("glInvalidateNamedFramebufferSubData"); context.InvalidateNamedFramebufferSubData = internalLoadAPI(contextPtr->InvalidateNamedFramebufferSubData); contextPtr->MapNamedBuffer = load("glMapNamedBuffer"); context.MapNamedBuffer = internalLoadAPI(contextPtr->MapNamedBuffer); contextPtr->MapNamedBufferRange = load("glMapNamedBufferRange"); context.MapNamedBufferRange = internalLoadAPI(contextPtr->MapNamedBufferRange); contextPtr->MemoryBarrierByRegion = load("glMemoryBarrierByRegion"); context.MemoryBarrierByRegion = internalLoadAPI(contextPtr->MemoryBarrierByRegion); contextPtr->NamedBufferData = load("glNamedBufferData"); context.NamedBufferData = internalLoadAPI(contextPtr->NamedBufferData); contextPtr->NamedBufferStorage = load("glNamedBufferStorage"); context.NamedBufferStorage = internalLoadAPI(contextPtr->NamedBufferStorage); contextPtr->NamedBufferSubData = load("glNamedBufferSubData"); context.NamedBufferSubData = internalLoadAPI(contextPtr->NamedBufferSubData); contextPtr->NamedFramebufferDrawBuffer = load("glNamedFramebufferDrawBuffer"); context.NamedFramebufferDrawBuffer = internalLoadAPI(contextPtr->NamedFramebufferDrawBuffer); contextPtr->NamedFramebufferDrawBuffers = load("glNamedFramebufferDrawBuffers"); context.NamedFramebufferDrawBuffers = internalLoadAPI(contextPtr->NamedFramebufferDrawBuffers); contextPtr->NamedFramebufferParameteri = load("glNamedFramebufferParameteri"); context.NamedFramebufferParameteri = internalLoadAPI(contextPtr->NamedFramebufferParameteri); contextPtr->NamedFramebufferReadBuffer = load("glNamedFramebufferReadBuffer"); context.NamedFramebufferReadBuffer = internalLoadAPI(contextPtr->NamedFramebufferReadBuffer); contextPtr->NamedFramebufferRenderbuffer = load("glNamedFramebufferRenderbuffer"); context.NamedFramebufferRenderbuffer = internalLoadAPI(contextPtr->NamedFramebufferRenderbuffer); contextPtr->NamedFramebufferTexture = load("glNamedFramebufferTexture"); context.NamedFramebufferTexture = internalLoadAPI(contextPtr->NamedFramebufferTexture); contextPtr->NamedFramebufferTextureLayer = load("glNamedFramebufferTextureLayer"); context.NamedFramebufferTextureLayer = internalLoadAPI(contextPtr->NamedFramebufferTextureLayer); contextPtr->NamedRenderbufferStorage = load("glNamedRenderbufferStorage"); context.NamedRenderbufferStorage = internalLoadAPI(contextPtr->NamedRenderbufferStorage); contextPtr->NamedRenderbufferStorageMultisample = load("glNamedRenderbufferStorageMultisample"); context.NamedRenderbufferStorageMultisample = internalLoadAPI(contextPtr->NamedRenderbufferStorageMultisample); contextPtr->ReadnPixels = load("glReadnPixels"); context.ReadnPixels = internalLoadAPI(contextPtr->ReadnPixels); contextPtr->TextureBarrier = load("glTextureBarrier"); context.TextureBarrier = internalLoadAPI(contextPtr->TextureBarrier); contextPtr->TextureBuffer = load("glTextureBuffer"); context.TextureBuffer = internalLoadAPI(contextPtr->TextureBuffer); contextPtr->TextureBufferRange = load("glTextureBufferRange"); context.TextureBufferRange = internalLoadAPI(contextPtr->TextureBufferRange); contextPtr->TextureParameterIiv = load("glTextureParameterIiv"); context.TextureParameterIiv = internalLoadAPI(contextPtr->TextureParameterIiv); contextPtr->TextureParameterIuiv = load("glTextureParameterIuiv"); context.TextureParameterIuiv = internalLoadAPI(contextPtr->TextureParameterIuiv); contextPtr->TextureParameterf = load("glTextureParameterf"); context.TextureParameterf = internalLoadAPI(contextPtr->TextureParameterf); contextPtr->TextureParameterfv = load("glTextureParameterfv"); context.TextureParameterfv = internalLoadAPI(contextPtr->TextureParameterfv); contextPtr->TextureParameteri = load("glTextureParameteri"); context.TextureParameteri = internalLoadAPI(contextPtr->TextureParameteri); contextPtr->TextureParameteriv = load("glTextureParameteriv"); context.TextureParameteriv = internalLoadAPI(contextPtr->TextureParameteriv); contextPtr->TextureStorage1D = load("glTextureStorage1D"); context.TextureStorage1D = internalLoadAPI(contextPtr->TextureStorage1D); contextPtr->TextureStorage2D = load("glTextureStorage2D"); context.TextureStorage2D = internalLoadAPI(contextPtr->TextureStorage2D); contextPtr->TextureStorage2DMultisample = load("glTextureStorage2DMultisample"); context.TextureStorage2DMultisample = internalLoadAPI(contextPtr->TextureStorage2DMultisample); contextPtr->TextureStorage3D = load("glTextureStorage3D"); context.TextureStorage3D = internalLoadAPI(contextPtr->TextureStorage3D); contextPtr->TextureStorage3DMultisample = load("glTextureStorage3DMultisample"); context.TextureStorage3DMultisample = internalLoadAPI(contextPtr->TextureStorage3DMultisample); contextPtr->TextureSubImage1D = load("glTextureSubImage1D"); context.TextureSubImage1D = internalLoadAPI(contextPtr->TextureSubImage1D); contextPtr->TextureSubImage2D = load("glTextureSubImage2D"); context.TextureSubImage2D = internalLoadAPI(contextPtr->TextureSubImage2D); contextPtr->TextureSubImage3D = load("glTextureSubImage3D"); context.TextureSubImage3D = internalLoadAPI(contextPtr->TextureSubImage3D); contextPtr->TransformFeedbackBufferBase = load("glTransformFeedbackBufferBase"); context.TransformFeedbackBufferBase = internalLoadAPI(contextPtr->TransformFeedbackBufferBase); contextPtr->TransformFeedbackBufferRange = load("glTransformFeedbackBufferRange"); context.TransformFeedbackBufferRange = internalLoadAPI(contextPtr->TransformFeedbackBufferRange); contextPtr->UnmapNamedBuffer = load("glUnmapNamedBuffer"); context.UnmapNamedBuffer = internalLoadAPI(contextPtr->UnmapNamedBuffer); contextPtr->VertexArrayAttribBinding = load("glVertexArrayAttribBinding"); context.VertexArrayAttribBinding = internalLoadAPI(contextPtr->VertexArrayAttribBinding); contextPtr->VertexArrayAttribFormat = load("glVertexArrayAttribFormat"); context.VertexArrayAttribFormat = internalLoadAPI(contextPtr->VertexArrayAttribFormat); contextPtr->VertexArrayAttribIFormat = load("glVertexArrayAttribIFormat"); context.VertexArrayAttribIFormat = internalLoadAPI(contextPtr->VertexArrayAttribIFormat); contextPtr->VertexArrayAttribLFormat = load("glVertexArrayAttribLFormat"); context.VertexArrayAttribLFormat = internalLoadAPI(contextPtr->VertexArrayAttribLFormat); contextPtr->VertexArrayBindingDivisor = load("glVertexArrayBindingDivisor"); context.VertexArrayBindingDivisor = internalLoadAPI(contextPtr->VertexArrayBindingDivisor); contextPtr->VertexArrayElementBuffer = load("glVertexArrayElementBuffer"); context.VertexArrayElementBuffer = internalLoadAPI(contextPtr->VertexArrayElementBuffer); contextPtr->VertexArrayVertexBuffer = load("glVertexArrayVertexBuffer"); context.VertexArrayVertexBuffer = internalLoadAPI(contextPtr->VertexArrayVertexBuffer); contextPtr->VertexArrayVertexBuffers = load("glVertexArrayVertexBuffers"); context.VertexArrayVertexBuffers = internalLoadAPI(contextPtr->VertexArrayVertexBuffers); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.5 APIs"); } internal static unsafe void LoadGLcore46(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load) { if (!core46) { InternalIO.InternalAppendLog("The core version 4.6 is not supported."); throw new Exception("Final Version"); } #region load contextPtr->MultiDrawArraysIndirectCount = load("glMultiDrawArraysIndirectCount"); context.MultiDrawArraysIndirectCount = internalLoadAPI(contextPtr->MultiDrawArraysIndirectCount); contextPtr->MultiDrawElementsIndirectCount = load("glMultiDrawElementsIndirectCount"); context.MultiDrawElementsIndirectCount = internalLoadAPI(contextPtr->MultiDrawElementsIndirectCount); contextPtr->PolygonOffsetClamp = load("glPolygonOffsetClamp"); context.PolygonOffsetClamp = internalLoadAPI(contextPtr->PolygonOffsetClamp); contextPtr->SpecializeShader = load("glSpecializeShader"); context.SpecializeShader = internalLoadAPI(contextPtr->SpecializeShader); #endregion InternalIO.InternalAppendLog("Successfully load all OpenGL 4.6 APIs"); } } }