//----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glApiManager.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the “Software”), to deal in the Software without restriction, // including without limitation the rights to use, copy, modify, merge, // publish, distribute, sublicense, and/or sell copies of the Software, // and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and // this permission notice shall be included in all copies // or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED “AS IS”, // WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH // THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.HighPerformance; using StgSharp.Math; using StgSharp.MVVM; using StgSharp.MVVM; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Graphics.OpenGL { public static partial class glManager { private const int glExtension = 0x1f03; private const int glVersion = 0x1f02; private static readonly string[] glBranch = { "OpenGL ES-CM ", "OpenGL ES-CL ", "OpenGL ES ", "OpenGL SC " }; private static string glExtensionList; //-------------------------------------------------------------------------------- /// /// Get the function pointer of given OpenGL api _label /// /// /// ContextName of the OpenGL api /// /// /// The funtion pointer of the api in stream of /// public static IntPtr LoadGLfunc( string name ) { IntPtr ret = InternalIO.glfwGetProcAddress( name ); if( ret == default ) { InternalIO.InternalAppendLog( $"Cannot load OpenGL api called {name}, this api may not exist or supported." ); return ret; } return ret; } /// /// Load all supported OpenGL APIs and bind them to given . /// /// /// The handle to current OpenGL viewPortDisplay /// public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) { OpenglContext* context = ( OpenglContext* )contextHandle; delegate* loader = &InternalIO.glfwGetProcAddress; if( ( IntPtr )context->glGetString != IntPtr.Zero ) { return; } IntPtr proc = loader( "glGetString" ); if( proc == IntPtr.Zero ) { #if DEBUG Console.WriteLine( "Cannot load GL." ); #endif throw new Exception( "Cannot load gl" ); } context->glGetString = ( delegate* )proc; string coreVersion; if( context->glGetString( glVersion ) == IntPtr.Zero ) { InternalIO.InternalWriteLog( "Failed to call glGetString", LogType.Error ); } coreVersion = Marshal.PtrToStringAnsi( context->glGetString( glVersion ) ) ?? string.Empty; foreach( string branch in glBranch ) { if( coreVersion.Contains( branch ) ) { coreVersion.Replace( branch, string.Empty ); } } 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( context, loader ); LoadGLcore11( context, loader ); LoadGLcore12( context, loader ); LoadGLcore13( context, loader ); LoadGLcore14( context, loader ); LoadGLcore15( context, loader ); LoadGLcore20( context, loader ); LoadGLcore21( context, loader ); LoadGLcore30( context, loader ); LoadGLcore31( context, loader ); LoadGLcore32( context, loader ); LoadGLcore33( context, loader ); LoadGLcore40( context, loader ); LoadGLcore41( context, loader ); LoadGLcore42( context, loader ); LoadGLcore43( context, loader ); LoadGLcore44( context, loader ); LoadGLcore45( context, loader ); LoadGLcore46( context, loader ); #endregion load_core_gl } catch( Exception ex ) { if( ex.Message != "Final Version" ) { throw; } } uint code = context->glGetError(); if( code != 0 ) { Console.WriteLine(code); throw new GlExecutionException( code ); } int extensionCount; context->glGetIntegerv( glConst.NUM_EXTENSIONS, &extensionCount ); if( extensionCount == 0 ) { InternalIO.InternalWriteLog( "No supported OpenGL extensions are found.", LogType.Info ); return; } List extensions = new List(); for( uint i = 0; i < extensionCount; i++ ) { byte* strPtr = context->glGetStringi( glConst.EXTENSIONS, i ); extensions.Add( Marshal.PtrToStringAnsi( ( IntPtr )strPtr ) ); } InternalIO.InternalWriteLog( $"{$"Find OpenGL extensions:"}{Environment.NewLine}{($"{string.Join(';', extensions)}")}", LogType.Info ); #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 checkGLextensions } internal static void CheckCoreVersion( int majorVersion, int minorVersion ) { if( majorVersion < 3 ) { throw new InvalidOperationException( "StgSharp does not support OpenGL immediate mode." ); } 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 static unsafe string GetExtensions( this OpenglContext context ) { if( context.glGetString == null ) { return string.Empty; } return Marshal.PtrToStringAnsi( context.glGetString( 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( OpenglContext* contextPtr, delegate* load ) { if( !core10 ) { InternalIO.InternalAppendLog( "The core version 1.0 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBlendFunc = ( delegate* )load( "glBlendFunc" ); contextPtr->glClear = ( delegate* )load( "glClear" ); contextPtr->glClearColor = ( delegate* )load( "glClearColor" ); contextPtr->glClearDepth = ( delegate* )load( "glClearDepth" ); contextPtr->glClearStencil = ( delegate* )load( "glClearStencil" ); contextPtr->glColorMask = ( delegate* )load( "glColorMask" ); contextPtr->glCullFace = ( delegate* )load( "glCullFace" ); contextPtr->glDepthFunc = ( delegate* )load( "glDepthFunc" ); contextPtr->glDepthMask = ( delegate* )load( "glDepthMask" ); contextPtr->glDepthRange = ( delegate* )load( "glDepthRange" ); contextPtr->glDisable = ( delegate* )load( "glDisable" ); contextPtr->glDrawBuffer = ( delegate* )load( "glDrawBuffer" ); contextPtr->glEnable = ( delegate* )load( "glEnable" ); contextPtr->glFinish = ( delegate* )load( "glFinish" ); contextPtr->glFlush = ( delegate* )load( "glFlush" ); contextPtr->glFrontFace = ( delegate* )load( "glFrontFace" ); contextPtr->glGetBooleanv = ( delegate* )load( "glGetBooleanv" ); contextPtr->glGetDoublev = ( delegate* )load( "glGetDoublev" ); contextPtr->glGetError = ( delegate* )load( "glGetError" ); contextPtr->glGetFloatv = ( delegate* )load( "glGetFloatv" ); contextPtr->glGetIntegerv = ( delegate* )load( "glGetIntegerv" ); contextPtr->glGetString = ( delegate* )load( "glGetString" ); contextPtr->glGetTexImage = ( delegate* )load( "glGetTexImage" ); contextPtr->glGetTexLevelParameterfv = ( delegate* )load( "glGetTexLevelParameterfv" ); contextPtr->glGetTexLevelParameteriv = ( delegate* )load( "glGetTexLevelParameteriv" ); contextPtr->glGetTexParameterfv = ( delegate* )load( "glGetTexParameterfv" ); contextPtr->glGetTexParameteriv = ( delegate* )load( "glGetTexParameteriv" ); contextPtr->glHint = ( delegate* )load( "glHint" ); contextPtr->glIsEnabled = ( delegate* )load( "glIsEnabled" ); contextPtr->glLineWidth = ( delegate* )load( "glLineWidth" ); contextPtr->glLogicOp = ( delegate* )load( "glLogicOp" ); contextPtr->glPixelStoref = ( delegate* )load( "glPixelStoref" ); contextPtr->glPixelStorei = ( delegate* )load( "glPixelStorei" ); contextPtr->glPointSize = ( delegate* )load( "glPointSize" ); contextPtr->glPolygonMode = ( delegate* )load( "glPolygonMode" ); contextPtr->glReadBuffer = ( delegate* )load( "glReadBuffer" ); contextPtr->glReadPixels = ( delegate* )load( "glReadPixels" ); contextPtr->glScissor = ( delegate* )load( "glScissor" ); contextPtr->glStencilFunc = ( delegate* )load( "glStencilFunc" ); contextPtr->glStencilMask = ( delegate* )load( "glStencilMask" ); contextPtr->glStencilOp = ( delegate* )load( "glStencilOp" ); contextPtr->glTexImage1D = ( delegate* )load( "glTexImage1D" ); contextPtr->glTexImage2D = ( delegate* )load( "glTexImage2D" ); contextPtr->glTexParameterf = ( delegate* )load( "glTexParameterf" ); contextPtr->glTexParameterfv = ( delegate* )load( "glTexParameterfv" ); contextPtr->glTexParameteri = ( delegate* )load( "glTexParameteri" ); contextPtr->glTexParameteriv = ( delegate* )load( "glTexParameteriv" ); contextPtr->glViewport = ( delegate* )load( "glViewport" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.0 APIs" ); } internal static unsafe void LoadGLcore11( OpenglContext* contextPtr, delegate* load ) { if( !core11 ) { InternalIO.InternalAppendLog( "The core version 1.1 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindTexture = ( delegate* )load( "glBindTexture" ); contextPtr->glCopyTexImage1D = ( delegate* )load( "glCopyTexImage1D" ); contextPtr->glCopyTexImage2D = ( delegate* )load( "glCopyTexImage2D" ); contextPtr->glCopyTexSubImage1D = ( delegate* )load( "glCopyTexSubImage1D" ); contextPtr->glCopyTexSubImage2D = ( delegate* )load( "glCopyTexSubImage2D" ); contextPtr->glDeleteTextures = ( delegate* )load( "glDeleteTextures" ); contextPtr->glDrawArrays = ( delegate* )load( "glDrawArrays" ); contextPtr->glDrawElements = ( delegate* )load( "glDrawElements" ); contextPtr->glGenTextures = ( delegate* )load( "glGenTextures" ); contextPtr->glGetPointerv = ( delegate* )load( "glGetPointerv" ); contextPtr->glIsTexture = ( delegate* )load( "glIsTexture" ); contextPtr->glPolygonOffset = ( delegate* )load( "glPolygonOffset" ); contextPtr->glTexSubImage1D = ( delegate* )load( "glTexSubImage1D" ); contextPtr->glTexSubImage2D = ( delegate* )load( "glTexSubImage2D" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.1 APIs" ); } internal static unsafe void LoadGLcore12( OpenglContext* contextPtr, delegate* load ) { if( !core12 ) { InternalIO.InternalAppendLog( "The core version 1.2 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glCopyTexSubImage3D = ( delegate* )load( "glCopyTexSubImage3D" ); contextPtr->glDrawRangeElements = ( delegate* )load( "glDrawRangeElements" ); contextPtr->glTexImage3D = ( delegate* )load( "glTexImage3D" ); contextPtr->glTexSubImage3D = ( delegate* )load( "glTexSubImage3D" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.2 APIs" ); } internal static unsafe void LoadGLcore13( OpenglContext* contextPtr, delegate* load ) { if( !core13 ) { InternalIO.InternalAppendLog( "The core version 1.3 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glActiveTexture = ( delegate* )load( "glActiveTexture" ); contextPtr->glCompressedTexImage1D = ( delegate* )load( "glCompressedTexImage1D" ); contextPtr->glCompressedTexImage2D = ( delegate* )load( "glCompressedTexImage2D" ); contextPtr->glCompressedTexImage3D = ( delegate* )load( "glCompressedTexImage3D" ); contextPtr->glCompressedTexSubImage1D = ( delegate* )load( "glCompressedTexSubImage1D" ); contextPtr->glCompressedTexSubImage2D = ( delegate* )load( "glCompressedTexSubImage2D" ); contextPtr->glCompressedTexSubImage3D = ( delegate* )load( "glCompressedTexSubImage3D" ); contextPtr->glGetCompressedTexImage = ( delegate* )load( "glGetCompressedTexImage" ); contextPtr->glSampleCoverage = ( delegate* )load( "glSampleCoverage" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.3 APIs" ); } internal static unsafe void LoadGLcore14( OpenglContext* contextPtr, delegate* load ) { if( !core14 ) { InternalIO.InternalAppendLog( "The core version 1.4 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBlendColor = ( delegate* )load( "glBlendColor" ); contextPtr->glBlendEquation = ( delegate* )load( "glBlendEquation" ); contextPtr->glBlendFuncSeparate = ( delegate* )load( "glBlendFuncSeparate" ); contextPtr->glMultiDrawArrays = ( delegate* )load( "glMultiDrawArrays" ); contextPtr->glMultiDrawElements = ( delegate* )load( "glMultiDrawElements" ); contextPtr->glPointParameterf = ( delegate* )load( "glPointParameterf" ); contextPtr->glPointParameterfv = ( delegate* )load( "glPointParameterfv" ); contextPtr->glPointParameteri = ( delegate* )load( "glPointParameteri" ); contextPtr->glPointParameteriv = ( delegate* )load( "glPointParameteriv" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.4 APIs" ); } internal static unsafe void LoadGLcore15( OpenglContext* contextPtr, delegate* load ) { if( !core15 ) { InternalIO.InternalAppendLog( "The core version 1.5 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBeginQuery = ( delegate* )load( "glBeginQuery" ); contextPtr->glBindBuffer = ( delegate* )load( "glBindBuffer" ); contextPtr->glBufferData = ( delegate* )load( "glBufferData" ); contextPtr->glBufferSubData = ( delegate* )load( "glBufferSubData" ); contextPtr->glDeleteBuffers = ( delegate* )load( "glDeleteBuffers" ); contextPtr->glDeleteQueries = ( delegate* )load( "glDeleteQueries" ); contextPtr->glEndQuery = ( delegate* )load( "glEndQuery" ); contextPtr->glGenBuffers = ( delegate* )load( "glGenBuffers" ); contextPtr->glGenQueries = ( delegate* )load( "glGenQueries" ); contextPtr->glGetBufferParameteriv = ( delegate* )load( "glGetBufferParameteriv" ); contextPtr->glGetBufferPointerv = ( delegate* )load( "glGetBufferPointerv" ); contextPtr->glGetBufferSubData = ( delegate* )load( "glGetBufferSubData" ); contextPtr->glGetQueryObjectiv = ( delegate* )load( "glGetQueryObjectiv" ); contextPtr->glGetQueryObjectuiv = ( delegate* )load( "glGetQueryObjectuiv" ); contextPtr->glGetQueryiv = ( delegate* )load( "glGetQueryiv" ); contextPtr->glIsBuffer = ( delegate* )load( "glIsBuffer" ); contextPtr->glIsQuery = ( delegate* )load( "glIsQuery" ); contextPtr->glMapBuffer = ( delegate* )load( "glMapBuffer" ); contextPtr->glUnmapBuffer = ( delegate* )load( "glUnmapBuffer" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.5 APIs" ); } internal static unsafe void LoadGLcore20( OpenglContext* contextPtr, delegate* load ) { if( !core20 ) { InternalIO.InternalAppendLog( "The core version 2.0 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glAttachShader = ( delegate* )load( "glAttachShader" ); contextPtr->glBindAttribLocation = ( delegate* )load( "glBindAttribLocation" ); contextPtr->glBlendEquationSeparate = ( delegate* )load( "glBlendEquationSeparate" ); contextPtr->glCompileShader = ( delegate* )load( "glCompileShader" ); contextPtr->glCreateProgram = ( delegate* )load( "glCreateProgram" ); contextPtr->glCreateShader = ( delegate* )load( "glCreateShader" ); contextPtr->glDeleteProgram = ( delegate* )load( "glDeleteProgram" ); contextPtr->glDeleteShader = ( delegate* )load( "glDeleteShader" ); contextPtr->glDetachShader = ( delegate* )load( "glDetachShader" ); contextPtr->glDisableVertexAttribArray = ( delegate* )load( "glDisableVertexAttribArray" ); contextPtr->glDrawBuffers = ( delegate* )load( "glDrawBuffers" ); contextPtr->glEnableVertexAttribArray = ( delegate* )load( "glEnableVertexAttribArray" ); contextPtr->glGetActiveAttrib = ( delegate* )load( "glGetActiveAttrib" ); contextPtr->glGetActiveUniform = ( delegate* )load( "glGetActiveUniform" ); contextPtr->glGetAttachedShaders = ( delegate* )load( "glGetAttachedShaders" ); contextPtr->glGetAttribLocation = ( delegate* )load( "glGetAttribLocation" ); contextPtr->glGetProgramInfoLog = ( delegate* )load( "glGetProgramInfoLog" ); contextPtr->glGetProgramiv = ( delegate* )load( "glGetProgramiv" ); contextPtr->glGetShaderInfoLog = ( delegate* )load( "glGetShaderInfoLog" ); contextPtr->glGetShaderSource = ( delegate* )load( "glGetShaderSource" ); contextPtr->glGetShaderiv = ( delegate* )load( "glGetShaderiv" ); contextPtr->glGetUniformLocation = ( delegate* )load( "glGetUniformLocation" ); contextPtr->glGetUniformfv = ( delegate* )load( "glGetUniformfv" ); contextPtr->glGetUniformiv = ( delegate* )load( "glGetUniformiv" ); contextPtr->glGetVertexAttribPointerv = ( delegate* )load( "glGetVertexAttribPointerv" ); contextPtr->glGetVertexAttribdv = ( delegate* )load( "glGetVertexAttribdv" ); contextPtr->glGetVertexAttribfv = ( delegate* )load( "glGetVertexAttribfv" ); contextPtr->glGetVertexAttribiv = ( delegate* )load( "glGetVertexAttribiv" ); contextPtr->glIsProgram = ( delegate* )load( "glIsProgram" ); contextPtr->glIsShader = ( delegate* )load( "glIsShader" ); contextPtr->glLinkProgram = ( delegate* )load( "glLinkProgram" ); contextPtr->glShaderSource = ( delegate* unmanaged[Stdcall] )load( "glShaderSource" ); contextPtr->glStencilFuncSeparate = ( delegate* )load( "glStencilFuncSeparate" ); contextPtr->glStencilMaskSeparate = ( delegate* )load( "glStencilMaskSeparate" ); contextPtr->glStencilOpSeparate = ( delegate* )load( "glStencilOpSeparate" ); contextPtr->glUniform1f = ( delegate* )load( "glUniform1f" ); contextPtr->glUniform1fv = ( delegate* )load( "glUniform1fv" ); contextPtr->glUniform1i = ( delegate* )load( "glUniform1i" ); contextPtr->glUniform1iv = ( delegate* )load( "glUniform1iv" ); contextPtr->glUniform2f = ( delegate* )load( "glUniform2f" ); contextPtr->glUniform2fv = ( delegate* )load( "glUniform2fv" ); contextPtr->glUniform2i = ( delegate* )load( "glUniform2i" ); contextPtr->glUniform2iv = ( delegate* )load( "glUniform2iv" ); contextPtr->glUniform3f = ( delegate* )load( "glUniform3f" ); contextPtr->glUniform3fv = ( delegate* )load( "glUniform3fv" ); contextPtr->glUniform3i = ( delegate* )load( "glUniform3i" ); contextPtr->glUniform3iv = ( delegate* )load( "glUniform3iv" ); contextPtr->glUniform4f = ( delegate* )load( "glUniform4f" ); contextPtr->glUniform4fv = ( delegate* )load( "glUniform4fv" ); contextPtr->glUniform4i = ( delegate* )load( "glUniform4i" ); contextPtr->glUniform4iv = ( delegate* )load( "glUniform4iv" ); contextPtr->glUniformMatrix2fv = ( delegate* )load( "glUniformMatrix2fv" ); contextPtr->glUniformMatrix3fv = ( delegate* )load( "glUniformMatrix3fv" ); contextPtr->glUniformMatrix4fv = ( delegate* )load( "glUniformMatrix4fv" ); contextPtr->glUseProgram = ( delegate* )load( "glUseProgram" ); contextPtr->glValidateProgram = ( delegate* )load( "glValidateProgram" ); contextPtr->glVertexAttrib1d = ( delegate* )load( "glVertexAttrib1d" ); contextPtr->glVertexAttrib1dv = ( delegate* )load( "glVertexAttrib1dv" ); contextPtr->glVertexAttrib1f = ( delegate* )load( "glVertexAttrib1f" ); contextPtr->glVertexAttrib1fv = ( delegate* )load( "glVertexAttrib1fv" ); contextPtr->glVertexAttrib1s = ( delegate* )load( "glVertexAttrib1s" ); contextPtr->glVertexAttrib1sv = ( delegate* )load( "glVertexAttrib1sv" ); contextPtr->glVertexAttrib2d = ( delegate* )load( "glVertexAttrib2d" ); contextPtr->glVertexAttrib2dv = ( delegate* )load( "glVertexAttrib2dv" ); contextPtr->glVertexAttrib2f = ( delegate* )load( "glVertexAttrib2f" ); contextPtr->glVertexAttrib2fv = ( delegate* )load( "glVertexAttrib2fv" ); contextPtr->glVertexAttrib2s = ( delegate* )load( "glVertexAttrib2s" ); contextPtr->glVertexAttrib2sv = ( delegate* )load( "glVertexAttrib2sv" ); contextPtr->glVertexAttrib3d = ( delegate* )load( "glVertexAttrib3d" ); contextPtr->glVertexAttrib3dv = ( delegate* )load( "glVertexAttrib3dv" ); contextPtr->glVertexAttrib3f = ( delegate* )load( "glVertexAttrib3f" ); contextPtr->glVertexAttrib3fv = ( delegate* )load( "glVertexAttrib3fv" ); contextPtr->glVertexAttrib3s = ( delegate* )load( "glVertexAttrib3s" ); contextPtr->glVertexAttrib3sv = ( delegate* )load( "glVertexAttrib3sv" ); contextPtr->glVertexAttrib4Nbv = ( delegate* )load( "glVertexAttrib4Nbv" ); contextPtr->glVertexAttrib4Niv = ( delegate* )load( "glVertexAttrib4Niv" ); contextPtr->glVertexAttrib4Nsv = ( delegate* )load( "glVertexAttrib4Nsv" ); contextPtr->glVertexAttrib4Nub = ( delegate* )load( "glVertexAttrib4Nub" ); contextPtr->glVertexAttrib4Nubv = ( delegate* )load( "glVertexAttrib4Nubv" ); contextPtr->glVertexAttrib4Nuiv = ( delegate* )load( "glVertexAttrib4Nuiv" ); contextPtr->glVertexAttrib4Nusv = ( delegate* )load( "glVertexAttrib4Nusv" ); contextPtr->glVertexAttrib4bv = ( delegate* )load( "glVertexAttrib4bv" ); contextPtr->glVertexAttrib4d = ( delegate* )load( "glVertexAttrib4d" ); contextPtr->glVertexAttrib4dv = ( delegate* )load( "glVertexAttrib4dv" ); contextPtr->glVertexAttrib4f = ( delegate* )load( "glVertexAttrib4f" ); contextPtr->glVertexAttrib4fv = ( delegate* )load( "glVertexAttrib4fv" ); contextPtr->glVertexAttrib4iv = ( delegate* )load( "glVertexAttrib4iv" ); contextPtr->glVertexAttrib4s = ( delegate* )load( "glVertexAttrib4s" ); contextPtr->glVertexAttrib4sv = ( delegate* )load( "glVertexAttrib4sv" ); contextPtr->glVertexAttrib4ubv = ( delegate* )load( "glVertexAttrib4ubv" ); contextPtr->glVertexAttrib4uiv = ( delegate* )load( "glVertexAttrib4uiv" ); contextPtr->glVertexAttrib4usv = ( delegate* )load( "glVertexAttrib4usv" ); contextPtr->glVertexAttribPointer = ( delegate* )load( "glVertexAttribPointer" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 2.0 APIs" ); } internal static unsafe void LoadGLcore21( OpenglContext* contextPtr, delegate* load ) { if( !core21 ) { InternalIO.InternalAppendLog( "The core version 2.1 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glUniformMatrix2x3fv = ( delegate* )load( "glUniformMatrix2x3fv" ); contextPtr->glUniformMatrix2x4fv = ( delegate* )load( "glUniformMatrix2x4fv" ); contextPtr->glUniformMatrix3x2fv = ( delegate* )load( "glUniformMatrix3x2fv" ); contextPtr->glUniformMatrix3x4fv = ( delegate* )load( "glUniformMatrix3x4fv" ); contextPtr->glUniformMatrix4x2fv = ( delegate* )load( "glUniformMatrix4x2fv" ); contextPtr->glUniformMatrix4x3fv = ( delegate* )load( "glUniformMatrix4x3fv" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 2.1 APIs" ); } internal static unsafe void LoadGLcore30( OpenglContext* contextPtr, delegate* load ) { if( !core30 ) { InternalIO.InternalAppendLog( "The core version 3.0 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBeginConditionalRender = ( delegate* )load( "glBeginConditionalRender" ); contextPtr->glBeginTransformFeedback = ( delegate* )load( "glBeginTransformFeedback" ); contextPtr->glBindBufferBase = ( delegate* )load( "glBindBufferBase" ); contextPtr->glBindBufferRange = ( delegate* )load( "glBindBufferRange" ); contextPtr->glBindFragDataLocation = ( delegate* )load( "glBindFragDataLocation" ); contextPtr->glBindFramebuffer = ( delegate* )load( "glBindFramebuffer" ); contextPtr->glBindRenderbuffer = ( delegate* )load( "glBindRenderbuffer" ); contextPtr->glBindVertexArray = ( delegate* )load( "glBindVertexArray" ); contextPtr->glBlitFramebuffer = ( delegate* )load( "glBlitFramebuffer" ); contextPtr->glCheckFramebufferStatus = ( delegate* )load( "glCheckFramebufferStatus" ); contextPtr->glClampColor = ( delegate* )load( "glClampColor" ); contextPtr->glClearBufferfi = ( delegate* )load( "glClearBufferfi" ); contextPtr->glClearBufferfv = ( delegate* )load( "glClearBufferfv" ); contextPtr->glClearBufferiv = ( delegate* )load( "glClearBufferiv" ); contextPtr->glClearBufferuiv = ( delegate* )load( "glClearBufferuiv" ); contextPtr->glColorMaski = ( delegate* )load( "glColorMaski" ); contextPtr->glDeleteFramebuffers = ( delegate* )load( "glDeleteFramebuffers" ); contextPtr->glDeleteRenderbuffers = ( delegate* )load( "glDeleteRenderbuffers" ); contextPtr->glDeleteVertexArrays = ( delegate* )load( "glDeleteVertexArrays" ); contextPtr->glDisablei = ( delegate* )load( "glDisablei" ); contextPtr->glEnablei = ( delegate* )load( "glEnablei" ); contextPtr->glEndConditionalRender = ( delegate* )load( "glEndConditionalRender" ); contextPtr->glEndTransformFeedback = ( delegate* )load( "glEndTransformFeedback" ); contextPtr->glFlushMappedBufferRange = ( delegate* )load( "glFlushMappedBufferRange" ); contextPtr->glFramebufferRenderbuffer = ( delegate* )load( "glFramebufferRenderbuffer" ); contextPtr->glFramebufferTexture1D = ( delegate* )load( "glFramebufferTexture1D" ); contextPtr->glFramebufferTexture2D = ( delegate* )load( "glFramebufferTexture2D" ); contextPtr->glFramebufferTexture3D = ( delegate* )load( "glFramebufferTexture3D" ); contextPtr->glFramebufferTextureLayer = ( delegate* )load( "glFramebufferTextureLayer" ); contextPtr->glGenFramebuffers = ( delegate* )load( "glGenFramebuffers" ); contextPtr->glGenRenderbuffers = ( delegate* )load( "glGenRenderbuffers" ); contextPtr->glGenVertexArrays = ( delegate* )load( "glGenVertexArrays" ); contextPtr->glGenerateMipmap = ( delegate* )load( "glGenerateMipmap" ); contextPtr->glGetBooleani_v = ( delegate* )load( "glGetBooleani_v" ); contextPtr->glGetFragDataLocation = ( delegate* )load( "glGetFragDataLocation" ); contextPtr->glGetFramebufferAttachmentParameteriv = ( delegate* )load( "glGetFramebufferAttachmentParameteriv" ); contextPtr->glGetIntegeri_v = ( delegate* )load( "glGetIntegeri_v" ); contextPtr->glGetRenderbufferParameteriv = ( delegate* )load( "glGetRenderbufferParameteriv" ); contextPtr->glGetStringi = ( delegate* )load( "glGetStringi" ); contextPtr->glGetTexParameterIiv = ( delegate* )load( "glGetTexParameterIiv" ); contextPtr->glGetTexParameterIuiv = ( delegate* )load( "glGetTexParameterIuiv" ); contextPtr->glGetTransformFeedbackVarying = ( delegate* )load( "glGetTransformFeedbackVarying" ); contextPtr->glGetUniformuiv = ( delegate* )load( "glGetUniformuiv" ); contextPtr->glGetVertexAttribIiv = ( delegate* )load( "glGetVertexAttribIiv" ); contextPtr->glGetVertexAttribIuiv = ( delegate* )load( "glGetVertexAttribIuiv" ); contextPtr->glIsEnabledi = ( delegate* )load( "glIsEnabledi" ); contextPtr->glIsFramebuffer = ( delegate* )load( "glIsFramebuffer" ); contextPtr->glIsRenderbuffer = ( delegate* )load( "glIsRenderbuffer" ); contextPtr->glIsVertexArray = ( delegate* )load( "glIsVertexArray" ); contextPtr->glMapBufferRange = ( delegate* )load( "glMapBufferRange" ); contextPtr->glRenderbufferStorage = ( delegate* )load( "glRenderbufferStorage" ); contextPtr->glRenderbufferStorageMultisample = ( delegate* )load( "glRenderbufferStorageMultisample" ); contextPtr->glTexParameterIiv = ( delegate* )load( "glTexParameterIiv" ); contextPtr->glTexParameterIuiv = ( delegate* )load( "glTexParameterIuiv" ); contextPtr->glTransformFeedbackVaryings = ( delegate* )load( "glTransformFeedbackVaryings" ); contextPtr->glUniform1ui = ( delegate* )load( "glUniform1ui" ); contextPtr->glUniform1uiv = ( delegate* )load( "glUniform1uiv" ); contextPtr->glUniform2ui = ( delegate* )load( "glUniform2ui" ); contextPtr->glUniform2uiv = ( delegate* )load( "glUniform2uiv" ); contextPtr->glUniform3ui = ( delegate* )load( "glUniform3ui" ); contextPtr->glUniform3uiv = ( delegate* )load( "glUniform3uiv" ); contextPtr->glUniform4ui = ( delegate* )load( "glUniform4ui" ); contextPtr->glUniform4uiv = ( delegate* )load( "glUniform4uiv" ); contextPtr->glVertexAttribI1i = ( delegate* )load( "glVertexAttribI1i" ); contextPtr->glVertexAttribI1iv = ( delegate* )load( "glVertexAttribI1iv" ); contextPtr->glVertexAttribI1ui = ( delegate* )load( "glVertexAttribI1ui" ); contextPtr->glVertexAttribI1uiv = ( delegate* )load( "glVertexAttribI1uiv" ); contextPtr->glVertexAttribI2i = ( delegate* )load( "glVertexAttribI2i" ); contextPtr->glVertexAttribI2iv = ( delegate* )load( "glVertexAttribI2iv" ); contextPtr->glVertexAttribI2ui = ( delegate* )load( "glVertexAttribI2ui" ); contextPtr->glVertexAttribI2uiv = ( delegate* )load( "glVertexAttribI2uiv" ); contextPtr->glVertexAttribI3i = ( delegate* )load( "glVertexAttribI3i" ); contextPtr->glVertexAttribI3iv = ( delegate* )load( "glVertexAttribI3iv" ); contextPtr->glVertexAttribI3ui = ( delegate* )load( "glVertexAttribI3ui" ); contextPtr->glVertexAttribI3uiv = ( delegate* )load( "glVertexAttribI3uiv" ); contextPtr->glVertexAttribI4bv = ( delegate* )load( "glVertexAttribI4bv" ); contextPtr->glVertexAttribI4i = ( delegate* )load( "glVertexAttribI4i" ); contextPtr->glVertexAttribI4iv = ( delegate* )load( "glVertexAttribI4iv" ); contextPtr->glVertexAttribI4sv = ( delegate* )load( "glVertexAttribI4sv" ); contextPtr->glVertexAttribI4ubv = ( delegate* )load( "glVertexAttribI4ubv" ); contextPtr->glVertexAttribI4ui = ( delegate* )load( "glVertexAttribI4ui" ); contextPtr->glVertexAttribI4uiv = ( delegate* )load( "glVertexAttribI4uiv" ); contextPtr->glVertexAttribI4usv = ( delegate* )load( "glVertexAttribI4usv" ); contextPtr->glVertexAttribIPointer = ( delegate* )load( "glVertexAttribIPointer" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.0 APIs" ); } internal static unsafe void LoadGLcore31( OpenglContext* contextPtr, delegate* load ) { if( !core31 ) { InternalIO.InternalAppendLog( "The core version 3.1 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindBufferBase = ( delegate* )load( "glBindBufferBase" ); contextPtr->glBindBufferRange = ( delegate* )load( "glBindBufferRange" ); contextPtr->glCopyBufferSubData = ( delegate* )load( "glCopyBufferSubData" ); contextPtr->glDrawArraysInstanced = ( delegate* )load( "glDrawArraysInstanced" ); contextPtr->glDrawElementsInstanced = ( delegate* )load( "glDrawElementsInstanced" ); contextPtr->glGetActiveUniformBlockName = ( delegate* )load( "glGetActiveUniformBlockName" ); contextPtr->glGetActiveUniformBlockiv = ( delegate* )load( "glGetActiveUniformBlockiv" ); contextPtr->glGetActiveUniformName = ( delegate* )load( "glGetActiveUniformName" ); contextPtr->glGetActiveUniformsiv = ( delegate* )load( "glGetActiveUniformsiv" ); contextPtr->glGetIntegeri_v = ( delegate* )load( "glGetIntegeri_v" ); contextPtr->glGetUniformBlockIndex = ( delegate* )load( "glGetUniformBlockIndex" ); contextPtr->glGetUniformIndices = ( delegate* )load( "glGetUniformIndices" ); contextPtr->glPrimitiveRestartIndex = ( delegate* )load( "glPrimitiveRestartIndex" ); contextPtr->glTexBuffer = ( delegate* )load( "glTexBuffer" ); contextPtr->glUniformBlockBinding = ( delegate* )load( "glUniformBlockBinding" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.1 APIs" ); } internal static unsafe void LoadGLcore32( OpenglContext* contextPtr, delegate* load ) { if( !core32 ) { InternalIO.InternalAppendLog( "The core version 3.2 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glClientWaitSync = ( delegate* )load( "glClientWaitSync" ); contextPtr->glDeleteSync = ( delegate* )load( "glDeleteSync" ); contextPtr->glDrawElementsBaseVertex = ( delegate* )load( "glDrawElementsBaseVertex" ); contextPtr->glDrawElementsInstancedBaseVertex = ( delegate* )load( "glDrawElementsInstancedBaseVertex" ); contextPtr->glDrawRangeElementsBaseVertex = ( delegate* )load( "glDrawRangeElementsBaseVertex" ); contextPtr->glFenceSync = ( delegate* )load( "glFenceSync" ); contextPtr->glFramebufferTexture = ( delegate* )load( "glFramebufferTexture" ); contextPtr->glGetBufferParameteri64v = ( delegate* )load( "glGetBufferParameteri64v" ); contextPtr->glGetInteger64i_v = ( delegate* )load( "glGetInteger64i_v" ); contextPtr->glGetInteger64v = ( delegate* )load( "glGetInteger64v" ); contextPtr->glGetMultisamplefv = ( delegate* )load( "glGetMultisamplefv" ); contextPtr->glGetSynciv = ( delegate* )load( "glGetSynciv" ); contextPtr->glIsSync = ( delegate* )load( "glIsSync" ); contextPtr->glMultiDrawElementsBaseVertex = ( delegate* )load( "glMultiDrawElementsBaseVertex" ); contextPtr->glProvokingVertex = ( delegate* )load( "glProvokingVertex" ); contextPtr->glSampleMaski = ( delegate* )load( "glSampleMaski" ); contextPtr->glTexImage2DMultisample = ( delegate* )load( "glTexImage2DMultisample" ); contextPtr->glTexImage3DMultisample = ( delegate* )load( "glTexImage3DMultisample" ); contextPtr->glWaitSync = ( delegate* )load( "glWaitSync" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.2 APIs" ); } internal static unsafe void LoadGLcore33( OpenglContext* contextPtr, delegate* load ) { if( !core33 ) { InternalIO.InternalAppendLog( "The core version 3.3 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindFragDataLocationIndexed = ( delegate* )load( "glBindFragDataLocationIndexed" ); contextPtr->glBindSampler = ( delegate* )load( "glBindSampler" ); contextPtr->glDeleteSamplers = ( delegate* )load( "glDeleteSamplers" ); contextPtr->glGenSamplers = ( delegate* )load( "glGenSamplers" ); contextPtr->glGetFragDataIndex = ( delegate* )load( "glGetFragDataIndex" ); contextPtr->glGetQueryObjecti64v = ( delegate* )load( "glGetQueryObjecti64v" ); contextPtr->glGetQueryObjectui64v = ( delegate* )load( "glGetQueryObjectui64v" ); contextPtr->glGetSamplerParameterIiv = ( delegate* )load( "glGetSamplerParameterIiv" ); contextPtr->glGetSamplerParameterIuiv = ( delegate* )load( "glGetSamplerParameterIuiv" ); contextPtr->glGetSamplerParameterfv = ( delegate* )load( "glGetSamplerParameterfv" ); contextPtr->glGetSamplerParameteriv = ( delegate* )load( "glGetSamplerParameteriv" ); contextPtr->glIsSampler = ( delegate* )load( "glIsSampler" ); contextPtr->glQueryCounter = ( delegate* )load( "glQueryCounter" ); contextPtr->glSamplerParameterIiv = ( delegate* )load( "glSamplerParameterIiv" ); contextPtr->glSamplerParameterIuiv = ( delegate* )load( "glSamplerParameterIuiv" ); contextPtr->glSamplerParameterf = ( delegate* )load( "glSamplerParameterf" ); contextPtr->glSamplerParameterfv = ( delegate* )load( "glSamplerParameterfv" ); contextPtr->glSamplerParameteri = ( delegate* )load( "glSamplerParameteri" ); contextPtr->glSamplerParameteriv = ( delegate* )load( "glSamplerParameteriv" ); contextPtr->glVertexAttribDivisor = ( delegate* )load( "glVertexAttribDivisor" ); contextPtr->glVertexAttribP1ui = ( delegate* )load( "glVertexAttribP1ui" ); contextPtr->glVertexAttribP1uiv = ( delegate* )load( "glVertexAttribP1uiv" ); contextPtr->glVertexAttribP2ui = ( delegate* )load( "glVertexAttribP2ui" ); contextPtr->glVertexAttribP2uiv = ( delegate* )load( "glVertexAttribP2uiv" ); contextPtr->glVertexAttribP3ui = ( delegate* )load( "glVertexAttribP3ui" ); contextPtr->glVertexAttribP3uiv = ( delegate* )load( "glVertexAttribP3uiv" ); contextPtr->glVertexAttribP4ui = ( delegate* )load( "glVertexAttribP4ui" ); contextPtr->glVertexAttribP4uiv = ( delegate* )load( "glVertexAttribP4uiv" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.3 APIs" ); } internal static unsafe void LoadGLcore40( OpenglContext* contextPtr, delegate* load ) { if( !core40 ) { InternalIO.InternalAppendLog( "The core version 4.0 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBeginQueryIndexed = ( delegate* )load( "glBeginQueryIndexed" ); contextPtr->glBindTransformFeedback = ( delegate* )load( "glBindTransformFeedback" ); contextPtr->glBlendEquationSeparatei = ( delegate* )load( "glBlendEquationSeparatei" ); contextPtr->glBlendEquationi = ( delegate* )load( "glBlendEquationi" ); contextPtr->glBlendFuncSeparatei = ( delegate* )load( "glBlendFuncSeparatei" ); contextPtr->glBlendFunci = ( delegate* )load( "glBlendFunci" ); contextPtr->glDeleteTransformFeedbacks = ( delegate* )load( "glDeleteTransformFeedbacks" ); contextPtr->glDrawArraysIndirect = ( delegate* )load( "glDrawArraysIndirect" ); contextPtr->glDrawElementsIndirect = ( delegate* )load( "glDrawElementsIndirect" ); contextPtr->glDrawTransformFeedback = ( delegate* )load( "glDrawTransformFeedback" ); contextPtr->glDrawTransformFeedbackStream = ( delegate* )load( "glDrawTransformFeedbackStream" ); contextPtr->glEndQueryIndexed = ( delegate* )load( "glEndQueryIndexed" ); contextPtr->glGenTransformFeedbacks = ( delegate* )load( "glGenTransformFeedbacks" ); contextPtr->glGetActiveSubroutineName = ( delegate* )load( "glGetActiveSubroutineName" ); contextPtr->glGetActiveSubroutineUniformName = ( delegate* )load( "glGetActiveSubroutineUniformName" ); contextPtr->glGetActiveSubroutineUniformiv = ( delegate* )load( "glGetActiveSubroutineUniformiv" ); contextPtr->glGetProgramStageiv = ( delegate* )load( "glGetProgramStageiv" ); contextPtr->glGetQueryIndexediv = ( delegate* )load( "glGetQueryIndexediv" ); contextPtr->glGetSubroutineIndex = ( delegate* )load( "glGetSubroutineIndex" ); contextPtr->glGetSubroutineUniformLocation = ( delegate* )load( "glGetSubroutineUniformLocation" ); contextPtr->glGetUniformSubroutineuiv = ( delegate* )load( "glGetUniformSubroutineuiv" ); contextPtr->glGetUniformdv = ( delegate* )load( "glGetUniformdv" ); contextPtr->glIsTransformFeedback = ( delegate* )load( "glIsTransformFeedback" ); contextPtr->glMinSampleShading = ( delegate* )load( "glMinSampleShading" ); contextPtr->glPatchParameterfv = ( delegate* )load( "glPatchParameterfv" ); contextPtr->glPatchParameteri = ( delegate* )load( "glPatchParameteri" ); contextPtr->glPauseTransformFeedback = ( delegate* )load( "glPauseTransformFeedback" ); contextPtr->glResumeTransformFeedback = ( delegate* )load( "glResumeTransformFeedback" ); contextPtr->glUniform1d = ( delegate* )load( "glUniform1d" ); contextPtr->glUniform1dv = ( delegate* )load( "glUniform1dv" ); contextPtr->glUniform2d = ( delegate* )load( "glUniform2d" ); contextPtr->glUniform2dv = ( delegate* )load( "glUniform2dv" ); contextPtr->glUniform3d = ( delegate* )load( "glUniform3d" ); contextPtr->glUniform3dv = ( delegate* )load( "glUniform3dv" ); contextPtr->glUniform4d = ( delegate* )load( "glUniform4d" ); contextPtr->glUniform4dv = ( delegate* )load( "glUniform4dv" ); contextPtr->glUniformMatrix2dv = ( delegate* )load( "glUniformMatrix2dv" ); contextPtr->glUniformMatrix2x3dv = ( delegate* )load( "glUniformMatrix2x3dv" ); contextPtr->glUniformMatrix2x4dv = ( delegate* )load( "glUniformMatrix2x4dv" ); contextPtr->glUniformMatrix3dv = ( delegate* )load( "glUniformMatrix3dv" ); contextPtr->glUniformMatrix3x2dv = ( delegate* )load( "glUniformMatrix3x2dv" ); contextPtr->glUniformMatrix3x4dv = ( delegate* )load( "glUniformMatrix3x4dv" ); contextPtr->glUniformMatrix4dv = ( delegate* )load( "glUniformMatrix4dv" ); contextPtr->glUniformMatrix4x2dv = ( delegate* )load( "glUniformMatrix4x2dv" ); contextPtr->glUniformMatrix4x3dv = ( delegate* )load( "glUniformMatrix4x3dv" ); contextPtr->glUniformSubroutinesuiv = ( delegate* )load( "glUniformSubroutinesuiv" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.0 APIs" ); } internal static unsafe void LoadGLcore41( OpenglContext* contextPtr, delegate* load ) { if( !core41 ) { InternalIO.InternalAppendLog( "The core version 4.1 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glActiveShaderProgram = ( delegate* )load( "glActiveShaderProgram" ); contextPtr->glBindProgramPipeline = ( delegate* )load( "glBindProgramPipeline" ); contextPtr->glClearDepthf = ( delegate* )load( "glClearDepthf" ); contextPtr->glCreateShaderProgramv = ( delegate* )load( "glCreateShaderProgramv" ); contextPtr->glDeleteProgramPipelines = ( delegate* )load( "glDeleteProgramPipelines" ); contextPtr->glDepthRangeArrayv = ( delegate* )load( "glDepthRangeArrayv" ); contextPtr->glDepthRangeIndexed = ( delegate* )load( "glDepthRangeIndexed" ); contextPtr->glDepthRangef = ( delegate* )load( "glDepthRangef" ); contextPtr->glGenProgramPipelines = ( delegate* )load( "glGenProgramPipelines" ); contextPtr->glGetDoublei_v = ( delegate* )load( "glGetDoublei_v" ); contextPtr->glGetFloati_v = ( delegate* )load( "glGetFloati_v" ); contextPtr->glGetProgramBinary = ( delegate* )load( "glGetProgramBinary" ); contextPtr->glGetProgramPipelineInfoLog = ( delegate* )load( "glGetProgramPipelineInfoLog" ); contextPtr->glGetProgramPipelineiv = ( delegate* )load( "glGetProgramPipelineiv" ); contextPtr->glGetShaderPrecisionFormat = ( delegate* )load( "glGetShaderPrecisionFormat" ); contextPtr->glGetVertexAttribLdv = ( delegate* )load( "glGetVertexAttribLdv" ); contextPtr->glIsProgramPipeline = ( delegate* )load( "glIsProgramPipeline" ); contextPtr->glProgramBinary = ( delegate* )load( "glProgramBinary" ); contextPtr->glProgramParameteri = ( delegate* )load( "glProgramParameteri" ); contextPtr->glProgramUniform1d = ( delegate* )load( "glProgramUniform1d" ); contextPtr->glProgramUniform1dv = ( delegate* )load( "glProgramUniform1dv" ); contextPtr->glProgramUniform1f = ( delegate* )load( "glProgramUniform1f" ); contextPtr->glProgramUniform1fv = ( delegate* )load( "glProgramUniform1fv" ); contextPtr->glProgramUniform1i = ( delegate* )load( "glProgramUniform1i" ); contextPtr->glProgramUniform1iv = ( delegate* )load( "glProgramUniform1iv" ); contextPtr->glProgramUniform1ui = ( delegate* )load( "glProgramUniform1ui" ); contextPtr->glProgramUniform1uiv = ( delegate* )load( "glProgramUniform1uiv" ); contextPtr->glProgramUniform2d = ( delegate* )load( "glProgramUniform2d" ); contextPtr->glProgramUniform2dv = ( delegate* )load( "glProgramUniform2dv" ); contextPtr->glProgramUniform2f = ( delegate* )load( "glProgramUniform2f" ); contextPtr->glProgramUniform2fv = ( delegate* )load( "glProgramUniform2fv" ); contextPtr->glProgramUniform2i = ( delegate* )load( "glProgramUniform2i" ); contextPtr->glProgramUniform2iv = ( delegate* )load( "glProgramUniform2iv" ); contextPtr->glProgramUniform2ui = ( delegate* )load( "glProgramUniform2ui" ); contextPtr->glProgramUniform2uiv = ( delegate* )load( "glProgramUniform2uiv" ); contextPtr->glProgramUniform3d = ( delegate* )load( "glProgramUniform3d" ); contextPtr->glProgramUniform3dv = ( delegate* )load( "glProgramUniform3dv" ); contextPtr->glProgramUniform3f = ( delegate* )load( "glProgramUniform3f" ); contextPtr->glProgramUniform3fv = ( delegate* )load( "glProgramUniform3fv" ); contextPtr->glProgramUniform3i = ( delegate* )load( "glProgramUniform3i" ); contextPtr->glProgramUniform3iv = ( delegate* )load( "glProgramUniform3iv" ); contextPtr->glProgramUniform3ui = ( delegate* )load( "glProgramUniform3ui" ); contextPtr->glProgramUniform3uiv = ( delegate* )load( "glProgramUniform3uiv" ); contextPtr->glProgramUniform4d = ( delegate* )load( "glProgramUniform4d" ); contextPtr->glProgramUniform4dv = ( delegate* )load( "glProgramUniform4dv" ); contextPtr->glProgramUniform4f = ( delegate* )load( "glProgramUniform4f" ); contextPtr->glProgramUniform4fv = ( delegate* )load( "glProgramUniform4fv" ); contextPtr->glProgramUniform4i = ( delegate* )load( "glProgramUniform4i" ); contextPtr->glProgramUniform4iv = ( delegate* )load( "glProgramUniform4iv" ); contextPtr->glProgramUniform4ui = ( delegate* )load( "glProgramUniform4ui" ); contextPtr->glProgramUniform4uiv = ( delegate* )load( "glProgramUniform4uiv" ); contextPtr->glProgramUniformMatrix2dv = ( delegate* )load( "glProgramUniformMatrix2dv" ); contextPtr->glProgramUniformMatrix2fv = ( delegate* )load( "glProgramUniformMatrix2fv" ); contextPtr->glProgramUniformMatrix2x3dv = ( delegate* )load( "glProgramUniformMatrix2x3dv" ); contextPtr->glProgramUniformMatrix2x3fv = ( delegate* )load( "glProgramUniformMatrix2x3fv" ); contextPtr->glProgramUniformMatrix2x4dv = ( delegate* )load( "glProgramUniformMatrix2x4dv" ); contextPtr->glProgramUniformMatrix2x4fv = ( delegate* )load( "glProgramUniformMatrix2x4fv" ); contextPtr->glProgramUniformMatrix3dv = ( delegate* )load( "glProgramUniformMatrix3dv" ); contextPtr->glProgramUniformMatrix3fv = ( delegate* )load( "glProgramUniformMatrix3fv" ); contextPtr->glProgramUniformMatrix3x2dv = ( delegate* )load( "glProgramUniformMatrix3x2dv" ); contextPtr->glProgramUniformMatrix3x2fv = ( delegate* )load( "glProgramUniformMatrix3x2fv" ); contextPtr->glProgramUniformMatrix3x4dv = ( delegate* )load( "glProgramUniformMatrix3x4dv" ); contextPtr->glProgramUniformMatrix3x4fv = ( delegate* )load( "glProgramUniformMatrix3x4fv" ); contextPtr->glProgramUniformMatrix4dv = ( delegate* )load( "glProgramUniformMatrix4dv" ); contextPtr->glProgramUniformMatrix4fv = ( delegate* )load( "glProgramUniformMatrix4fv" ); contextPtr->glProgramUniformMatrix4x2dv = ( delegate* )load( "glProgramUniformMatrix4x2dv" ); contextPtr->glProgramUniformMatrix4x2fv = ( delegate* )load( "glProgramUniformMatrix4x2fv" ); contextPtr->glProgramUniformMatrix4x3dv = ( delegate* )load( "glProgramUniformMatrix4x3dv" ); contextPtr->glProgramUniformMatrix4x3fv = ( delegate* )load( "glProgramUniformMatrix4x3fv" ); contextPtr->glReleaseShaderCompiler = ( delegate* )load( "glReleaseShaderCompiler" ); contextPtr->glScissorArrayv = ( delegate* )load( "glScissorArrayv" ); contextPtr->glScissorIndexed = ( delegate* )load( "glScissorIndexed" ); contextPtr->glScissorIndexedv = ( delegate* )load( "glScissorIndexedv" ); contextPtr->glShaderBinary = ( delegate* )load( "glShaderBinary" ); contextPtr->glUseProgramStages = ( delegate* )load( "glUseProgramStages" ); contextPtr->glValidateProgramPipeline = ( delegate* )load( "glValidateProgramPipeline" ); contextPtr->glVertexAttribL1d = ( delegate* )load( "glVertexAttribL1d" ); contextPtr->glVertexAttribL1dv = ( delegate* )load( "glVertexAttribL1dv" ); contextPtr->glVertexAttribL2d = ( delegate* )load( "glVertexAttribL2d" ); contextPtr->glVertexAttribL2dv = ( delegate* )load( "glVertexAttribL2dv" ); contextPtr->glVertexAttribL3d = ( delegate* )load( "glVertexAttribL3d" ); contextPtr->glVertexAttribL3dv = ( delegate* )load( "glVertexAttribL3dv" ); contextPtr->glVertexAttribL4d = ( delegate* )load( "glVertexAttribL4d" ); contextPtr->glVertexAttribL4dv = ( delegate* )load( "glVertexAttribL4dv" ); contextPtr->glVertexAttribLPointer = ( delegate* )load( "glVertexAttribLPointer" ); contextPtr->glViewportArrayv = ( delegate* )load( "glViewportArrayv" ); contextPtr->glViewportIndexedf = ( delegate* )load( "glViewportIndexedf" ); contextPtr->glViewportIndexedfv = ( delegate* )load( "glViewportIndexedfv" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.1 APIs" ); } internal static unsafe void LoadGLcore42( OpenglContext* contextPtr, delegate* load ) { if( !core42 ) { InternalIO.InternalAppendLog( "The core version 4.2 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindImageTexture = ( delegate* )load( "glBindImageTexture" ); contextPtr->glDrawArraysInstancedBaseInstance = ( delegate* )load( "glDrawArraysInstancedBaseInstance" ); contextPtr->glDrawElementsInstancedBaseInstance = ( delegate* )load( "glDrawElementsInstancedBaseInstance" ); contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = ( delegate* )load( "glDrawElementsInstancedBaseVertexBaseInstance" ); contextPtr->glDrawTransformFeedbackInstanced = ( delegate* )load( "glDrawTransformFeedbackInstanced" ); contextPtr->glDrawTransformFeedbackStreamInstanced = ( delegate* )load( "glDrawTransformFeedbackStreamInstanced" ); contextPtr->glGetActiveAtomicCounterBufferiv = ( delegate* )load( "glGetActiveAtomicCounterBufferiv" ); contextPtr->glGetInternalformativ = ( delegate* )load( "glGetInternalformativ" ); contextPtr->glMemoryBarrier = ( delegate* )load( "glMemoryBarrier" ); contextPtr->glTexStorage1D = ( delegate* )load( "glTexStorage1D" ); contextPtr->glTexStorage2D = ( delegate* )load( "glTexStorage2D" ); contextPtr->glTexStorage3D = ( delegate* )load( "glTexStorage3D" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.2 APIs" ); } internal static unsafe void LoadGLcore43( OpenglContext* contextPtr, delegate* load ) { if( !core43 ) { InternalIO.InternalAppendLog( "The core version 4.3 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindVertexBuffer = ( delegate* )load( "glBindVertexBuffer" ); contextPtr->glClearBufferData = ( delegate* )load( "glClearBufferData" ); contextPtr->glClearBufferSubData = ( delegate* )load( "glClearBufferSubData" ); contextPtr->glCopyImageSubData = ( delegate* )load( "glCopyImageSubData" ); contextPtr->glDebugMessageCallback = ( delegate* )load( "glDebugMessageCallback" ); contextPtr->glDebugMessageControl = ( delegate* )load( "glDebugMessageControl" ); contextPtr->glDebugMessageInsert = ( delegate* )load( "glDebugMessageInsert" ); contextPtr->glDispatchCompute = ( delegate* )load( "glDispatchCompute" ); contextPtr->glDispatchComputeIndirect = ( delegate* )load( "glDispatchComputeIndirect" ); contextPtr->glFramebufferParameteri = ( delegate* )load( "glFramebufferParameteri" ); contextPtr->glGetDebugMessageLog = ( delegate* )load( "glGetDebugMessageLog" ); contextPtr->glGetFramebufferParameteriv = ( delegate* )load( "glGetFramebufferParameteriv" ); contextPtr->glGetInternalformati64v = ( delegate* )load( "glGetInternalformati64v" ); contextPtr->glGetObjectLabel = ( delegate* )load( "glGetObjectLabel" ); contextPtr->glGetObjectPtrLabel = ( delegate* )load( "glGetObjectPtrLabel" ); contextPtr->glGetPointerv = ( delegate* )load( "glGetPointerv" ); contextPtr->glGetProgramInterfaceiv = ( delegate* )load( "glGetProgramInterfaceiv" ); contextPtr->glGetProgramResourceIndex = ( delegate* )load( "glGetProgramResourceIndex" ); contextPtr->glGetProgramResourceLocation = ( delegate* )load( "glGetProgramResourceLocation" ); contextPtr->glGetProgramResourceLocationIndex = ( delegate* )load( "glGetProgramResourceLocationIndex" ); contextPtr->glGetProgramResourceName = ( delegate* )load( "glGetProgramResourceName" ); contextPtr->glGetProgramResourceiv = ( delegate* )load( "glGetProgramResourceiv" ); contextPtr->glInvalidateBufferData = ( delegate* )load( "glInvalidateBufferData" ); contextPtr->glInvalidateBufferSubData = ( delegate* )load( "glInvalidateBufferSubData" ); contextPtr->glInvalidateFramebuffer = ( delegate* )load( "glInvalidateFramebuffer" ); contextPtr->glInvalidateSubFramebuffer = ( delegate* )load( "glInvalidateSubFramebuffer" ); contextPtr->glInvalidateTexImage = ( delegate* )load( "glInvalidateTexImage" ); contextPtr->glInvalidateTexSubImage = ( delegate* )load( "glInvalidateTexSubImage" ); contextPtr->glMultiDrawArraysIndirect = ( delegate* )load( "glMultiDrawArraysIndirect" ); contextPtr->glMultiDrawElementsIndirect = ( delegate* )load( "glMultiDrawElementsIndirect" ); contextPtr->glObjectLabel = ( delegate* )load( "glObjectLabel" ); contextPtr->glObjectPtrLabel = ( delegate* )load( "glObjectPtrLabel" ); contextPtr->glPopDebugGroup = ( delegate* )load( "glPopDebugGroup" ); contextPtr->glPushDebugGroup = ( delegate* )load( "glPushDebugGroup" ); contextPtr->glShaderStorageBlockBinding = ( delegate* )load( "glShaderStorageBlockBinding" ); contextPtr->glTexBufferRange = ( delegate* )load( "glTexBufferRange" ); contextPtr->glTexStorage2DMultisample = ( delegate* )load( "glTexStorage2DMultisample" ); contextPtr->glTexStorage3DMultisample = ( delegate* )load( "glTexStorage3DMultisample" ); contextPtr->glTextureView = ( delegate* )load( "glTextureView" ); contextPtr->glVertexAttribBinding = ( delegate* )load( "glVertexAttribBinding" ); contextPtr->glVertexAttribFormat = ( delegate* )load( "glVertexAttribFormat" ); contextPtr->glVertexAttribIFormat = ( delegate* )load( "glVertexAttribIFormat" ); contextPtr->glClearBufferData = ( delegate* )load( "glClearBufferData" ); contextPtr->glVertexBindingDivisor = ( delegate* )load( "glVertexBindingDivisor" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.3 APIs" ); } internal static unsafe void LoadGLcore44( OpenglContext* contextPtr, delegate* load ) { if( !core44 ) { InternalIO.InternalAppendLog( "The core version 4.4 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindBuffersBase = ( delegate* )load( "glBindBuffersBase" ); contextPtr->glBindBuffersRange = ( delegate* )load( "glBindBuffersRange" ); contextPtr->glBindImageTextures = ( delegate* )load( "glBindImageTextures" ); contextPtr->glBindSamplers = ( delegate* )load( "glBindSamplers" ); contextPtr->glBindTextures = ( delegate* )load( "glBindTextures" ); contextPtr->glBindVertexBuffers = ( delegate* )load( "glBindVertexBuffers" ); contextPtr->glBufferStorage = ( delegate* )load( "glBufferStorage" ); contextPtr->glClearTexImage = ( delegate* )load( "glClearTexImage" ); contextPtr->glClearTexSubImage = ( delegate* )load( "glClearTexSubImage" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.4 APIs" ); } internal static unsafe void LoadGLcore45( OpenglContext* contextPtr, delegate* load ) { if( !core45 ) { InternalIO.InternalAppendLog( "The core version 4.5 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glBindTextureUnit = ( delegate* )load( "glBindTextureUnit" ); contextPtr->glBlitNamedFramebuffer = ( delegate* )load( "glBlitNamedFramebuffer" ); contextPtr->glCheckNamedFramebufferStatus = ( delegate* )load( "glCheckNamedFramebufferStatus" ); contextPtr->glClearNamedBufferData = ( delegate* )load( "glClearNamedBufferData" ); contextPtr->glClearNamedBufferSubData = ( delegate* )load( "glClearNamedBufferSubData" ); contextPtr->glClearNamedFramebufferfi = ( delegate* )load( "glClearNamedFramebufferfi" ); contextPtr->glClearNamedFramebufferfv = ( delegate* )load( "glClearNamedFramebufferfv" ); contextPtr->glClearNamedFramebufferiv = ( delegate* )load( "glClearNamedFramebufferiv" ); contextPtr->glClearNamedFramebufferuiv = ( delegate* )load( "glClearNamedFramebufferuiv" ); contextPtr->glClipControl = ( delegate* )load( "glClipControl" ); contextPtr->glCompressedTextureSubImage1D = ( delegate* )load( "glCompressedTextureSubImage1D" ); contextPtr->glCompressedTextureSubImage2D = ( delegate* )load( "glCompressedTextureSubImage2D" ); contextPtr->glCompressedTextureSubImage3D = ( delegate* )load( "glCompressedTextureSubImage3D" ); contextPtr->glCopyNamedBufferSubData = ( delegate* )load( "glCopyNamedBufferSubData" ); contextPtr->glCopyTextureSubImage1D = ( delegate* )load( "glCopyTextureSubImage1D" ); contextPtr->glCopyTextureSubImage2D = ( delegate* )load( "glCopyTextureSubImage2D" ); contextPtr->glCopyTextureSubImage3D = ( delegate* )load( "glCopyTextureSubImage3D" ); contextPtr->glCreateBuffers = ( delegate* )load( "glCreateBuffers" ); contextPtr->glCreateFramebuffers = ( delegate* )load( "glCreateFramebuffers" ); contextPtr->glCreateProgramPipelines = ( delegate* )load( "glCreateProgramPipelines" ); contextPtr->glCreateQueries = ( delegate* )load( "glCreateQueries" ); contextPtr->glCreateRenderbuffers = ( delegate* )load( "glCreateRenderbuffers" ); contextPtr->glCreateSamplers = ( delegate* )load( "glCreateSamplers" ); contextPtr->glCreateTextures = ( delegate* )load( "glCreateTextures" ); contextPtr->glCreateTransformFeedbacks = ( delegate* )load( "glCreateTransformFeedbacks" ); contextPtr->glCreateVertexArrays = ( delegate* )load( "glCreateVertexArrays" ); contextPtr->glDisableVertexArrayAttrib = ( delegate* )load( "glDisableVertexArrayAttrib" ); contextPtr->glEnableVertexArrayAttrib = ( delegate* )load( "glEnableVertexArrayAttrib" ); contextPtr->glFlushMappedNamedBufferRange = ( delegate* )load( "glFlushMappedNamedBufferRange" ); contextPtr->glGenerateTextureMipmap = ( delegate* )load( "glGenerateTextureMipmap" ); contextPtr->glGetCompressedTextureImage = ( delegate* )load( "glGetCompressedTextureImage" ); contextPtr->glGetCompressedTextureSubImage = ( delegate* )load( "glGetCompressedTextureSubImage" ); contextPtr->glGetGraphicsResetStatus = ( delegate* )load( "glGetGraphicsResetStatus" ); contextPtr->glGetNamedBufferParameteri64v = ( delegate* )load( "glGetNamedBufferParameteri64v" ); contextPtr->glGetNamedBufferParameteriv = ( delegate* )load( "glGetNamedBufferParameteriv" ); contextPtr->glGetNamedBufferPointerv = ( delegate* )load( "glGetNamedBufferPointerv" ); contextPtr->glGetNamedBufferSubData = ( delegate* )load( "glGetNamedBufferSubData" ); contextPtr->glGetNamedFramebufferAttachmentParameteriv = ( delegate* )load( "glGetNamedFramebufferAttachmentParameteriv" ); contextPtr->glGetNamedFramebufferParameteriv = ( delegate* )load( "glGetNamedFramebufferParameteriv" ); contextPtr->glGetNamedRenderbufferParameteriv = ( delegate* )load( "glGetNamedRenderbufferParameteriv" ); contextPtr->glGetQueryBufferObjecti64v = ( delegate* )load( "glGetQueryBufferObjecti64v" ); contextPtr->glGetQueryBufferObjectiv = ( delegate* )load( "glGetQueryBufferObjectiv" ); contextPtr->glGetQueryBufferObjectui64v = ( delegate* )load( "glGetQueryBufferObjectui64v" ); contextPtr->glGetQueryBufferObjectuiv = ( delegate* )load( "glGetQueryBufferObjectuiv" ); contextPtr->glGetTextureImage = ( delegate* )load( "glGetTextureImage" ); contextPtr->glGetTextureLevelParameterfv = ( delegate* )load( "glGetTextureLevelParameterfv" ); contextPtr->glGetTextureLevelParameteriv = ( delegate* )load( "glGetTextureLevelParameteriv" ); contextPtr->glGetTextureParameterIiv = ( delegate* )load( "glGetTextureParameterIiv" ); contextPtr->glGetTextureParameterIuiv = ( delegate* )load( "glGetTextureParameterIuiv" ); contextPtr->glGetTextureParameterfv = ( delegate* )load( "glGetTextureParameterfv" ); contextPtr->glGetTextureParameteriv = ( delegate* )load( "glGetTextureParameteriv" ); contextPtr->glGetTextureSubImage = ( delegate* )load( "glGetTextureSubImage" ); contextPtr->glGetTransformFeedbacki64_v = ( delegate* )load( "glGetTransformFeedbacki64_v" ); contextPtr->glGetTransformFeedbacki_v = ( delegate* )load( "glGetTransformFeedbacki_v" ); contextPtr->glGetTransformFeedbackiv = ( delegate* )load( "glGetTransformFeedbackiv" ); contextPtr->glGetVertexArrayIndexed64iv = ( delegate* )load( "glGetVertexArrayIndexed64iv" ); contextPtr->glGetVertexArrayIndexediv = ( delegate* )load( "glGetVertexArrayIndexediv" ); contextPtr->glGetVertexArrayiv = ( delegate* )load( "glGetVertexArrayiv" ); contextPtr->glGetnCompressedTexImage = ( delegate* )load( "glGetnCompressedTexImage" ); contextPtr->glGetnTexImage = ( delegate* )load( "glGetnTexImage" ); contextPtr->glGetnUniformdv = ( delegate* )load( "glGetnUniformdv" ); contextPtr->glGetnUniformfv = ( delegate* )load( "glGetnUniformfv" ); contextPtr->glGetnUniformiv = ( delegate* )load( "glGetnUniformiv" ); contextPtr->glGetnUniformuiv = ( delegate* )load( "glGetnUniformuiv" ); contextPtr->glInvalidateNamedFramebufferData = ( delegate* )load( "glInvalidateNamedFramebufferData" ); contextPtr->glInvalidateNamedFramebufferSubData = ( delegate* )load( "glInvalidateNamedFramebufferSubData" ); contextPtr->glMapNamedBuffer = ( delegate* )load( "glMapNamedBuffer" ); contextPtr->glMapNamedBufferRange = ( delegate* )load( "glMapNamedBufferRange" ); contextPtr->glMemoryBarrierByRegion = ( delegate* )load( "glMemoryBarrierByRegion" ); contextPtr->glNamedBufferData = ( delegate* )load( "glNamedBufferData" ); contextPtr->glNamedBufferStorage = ( delegate* )load( "glNamedBufferStorage" ); contextPtr->glNamedBufferSubData = ( delegate* )load( "glNamedBufferSubData" ); contextPtr->glNamedFramebufferDrawBuffer = ( delegate* )load( "glNamedFramebufferDrawBuffer" ); contextPtr->glNamedFramebufferDrawBuffers = ( delegate* )load( "glNamedFramebufferDrawBuffers" ); contextPtr->glNamedFramebufferParameteri = ( delegate* )load( "glNamedFramebufferParameteri" ); contextPtr->glNamedFramebufferReadBuffer = ( delegate* )load( "glNamedFramebufferReadBuffer" ); contextPtr->glNamedFramebufferRenderbuffer = ( delegate* )load( "glNamedFramebufferRenderbuffer" ); contextPtr->glNamedFramebufferTexture = ( delegate* )load( "glNamedFramebufferTexture" ); contextPtr->glNamedFramebufferTextureLayer = ( delegate* )load( "glNamedFramebufferTextureLayer" ); contextPtr->glNamedRenderbufferStorage = ( delegate* )load( "glNamedRenderbufferStorage" ); contextPtr->glNamedRenderbufferStorageMultisample = ( delegate* )load( "glNamedRenderbufferStorageMultisample" ); contextPtr->glReadnPixels = ( delegate* )load( "glReadnPixels" ); contextPtr->glTextureBarrier = ( delegate* )load( "glTextureBarrier" ); contextPtr->glTextureBuffer = ( delegate* )load( "glTextureBuffer" ); contextPtr->glTextureBufferRange = ( delegate* )load( "glTextureBufferRange" ); contextPtr->glTextureParameterIiv = ( delegate* )load( "glTextureParameterIiv" ); contextPtr->glTextureParameterIuiv = ( delegate* )load( "glTextureParameterIuiv" ); contextPtr->glTextureParameterf = ( delegate* )load( "glTextureParameterf" ); contextPtr->glTextureParameterfv = ( delegate* )load( "glTextureParameterfv" ); contextPtr->glTextureParameteri = ( delegate* )load( "glTextureParameteri" ); contextPtr->glTextureParameteriv = ( delegate* )load( "glTextureParameteriv" ); contextPtr->glTextureStorage1D = ( delegate* )load( "glTextureStorage1D" ); contextPtr->glTextureStorage2D = ( delegate* )load( "glTextureStorage2D" ); contextPtr->glTextureStorage2DMultisample = ( delegate* )load( "glTextureStorage2DMultisample" ); contextPtr->glTextureStorage3D = ( delegate* )load( "glTextureStorage3D" ); contextPtr->glTextureStorage3DMultisample = ( delegate* )load( "glTextureStorage3DMultisample" ); contextPtr->glTextureSubImage1D = ( delegate* )load( "glTextureSubImage1D" ); contextPtr->glTextureSubImage2D = ( delegate* )load( "glTextureSubImage2D" ); contextPtr->glTextureSubImage3D = ( delegate* )load( "glTextureSubImage3D" ); contextPtr->glTransformFeedbackBufferBase = ( delegate* )load( "glTransformFeedbackBufferBase" ); contextPtr->glTransformFeedbackBufferRange = ( delegate* )load( "glTransformFeedbackBufferRange" ); contextPtr->glUnmapNamedBuffer = ( delegate* )load( "glUnmapNamedBuffer" ); contextPtr->glVertexArrayAttribBinding = ( delegate* )load( "glVertexArrayAttribBinding" ); contextPtr->glVertexArrayAttribFormat = ( delegate* )load( "glVertexArrayAttribFormat" ); contextPtr->glVertexArrayAttribIFormat = ( delegate* )load( "glVertexArrayAttribIFormat" ); contextPtr->glVertexArrayAttribLFormat = ( delegate* )load( "glVertexArrayAttribLFormat" ); contextPtr->glVertexArrayBindingDivisor = ( delegate* )load( "glVertexArrayBindingDivisor" ); contextPtr->glVertexArrayElementBuffer = ( delegate* )load( "glVertexArrayElementBuffer" ); contextPtr->glVertexArrayVertexBuffer = ( delegate* )load( "glVertexArrayVertexBuffer" ); contextPtr->glVertexArrayVertexBuffers = ( delegate* )load( "glVertexArrayVertexBuffers" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.5 APIs" ); } internal static unsafe void LoadGLcore46( OpenglContext* contextPtr, delegate* load ) { if( !core46 ) { InternalIO.InternalAppendLog( "The core version 4.6 is not supported." ); throw new Exception( "Final Version" ); } #region load contextPtr->glMultiDrawArraysIndirectCount = ( delegate* )load( "glMultiDrawArraysIndirectCount" ); contextPtr->glMultiDrawElementsIndirectCount = ( delegate* )load( "glMultiDrawElementsIndirectCount" ); contextPtr->glPolygonOffsetClamp = ( delegate* )load( "glPolygonOffsetClamp" ); contextPtr->glSpecializeShader = ( delegate* )load( "glSpecializeShader" ); #endregion load InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.6 APIs" ); } } }