diff --git a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin
index 5ae6ce25..d4c01512 100644
Binary files a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin and b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin differ
diff --git a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v7.bin b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v7.bin
index e5b23995..e415b1a6 100644
Binary files a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v7.bin and b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v7.bin differ
diff --git a/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 b/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2
index 235877c0..b9873dbf 100644
Binary files a/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 and b/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/0cd72df0-52f4-4d34-9868-74ee31e950de.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/0cd72df0-52f4-4d34-9868-74ee31e950de.vsidx
deleted file mode 100644
index af4f51b3..00000000
Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/0cd72df0-52f4-4d34-9868-74ee31e950de.vsidx and /dev/null differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/62b9e6f2-6b4f-4e7d-a395-700543dccae1.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/62b9e6f2-6b4f-4e7d-a395-700543dccae1.vsidx
deleted file mode 100644
index a797202f..00000000
Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/62b9e6f2-6b4f-4e7d-a395-700543dccae1.vsidx and /dev/null differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/870158db-8c8f-4108-a9bf-ac25c336543c.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/870158db-8c8f-4108-a9bf-ac25c336543c.vsidx
new file mode 100644
index 00000000..42b12222
Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/870158db-8c8f-4108-a9bf-ac25c336543c.vsidx differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/8d1808a6-3769-46b1-ad88-3820029edf26.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/8d1808a6-3769-46b1-ad88-3820029edf26.vsidx
deleted file mode 100644
index 58bdc55d..00000000
Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/8d1808a6-3769-46b1-ad88-3820029edf26.vsidx and /dev/null differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/8d825efa-5750-446d-9d66-3f445b0cba61.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/8d825efa-5750-446d-9d66-3f445b0cba61.vsidx
new file mode 100644
index 00000000..625bb1ec
Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/8d825efa-5750-446d-9d66-3f445b0cba61.vsidx differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/902fb5a5-a89f-4f6f-bb1e-80d20f0c5294.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/902fb5a5-a89f-4f6f-bb1e-80d20f0c5294.vsidx
new file mode 100644
index 00000000..544e13e9
Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/902fb5a5-a89f-4f6f-bb1e-80d20f0c5294.vsidx differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/915cf882-4ba0-4dd6-897c-fe26631b344e.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/915cf882-4ba0-4dd6-897c-fe26631b344e.vsidx
new file mode 100644
index 00000000..5214eb49
Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/915cf882-4ba0-4dd6-897c-fe26631b344e.vsidx differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/94222711-4f1a-475f-909d-1b446f2de9d5.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/94222711-4f1a-475f-909d-1b446f2de9d5.vsidx
new file mode 100644
index 00000000..bbbc67ac
Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/94222711-4f1a-475f-909d-1b446f2de9d5.vsidx differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/a4275f53-d306-4bfd-87d1-51adfae33677.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/a4275f53-d306-4bfd-87d1-51adfae33677.vsidx
deleted file mode 100644
index 82af2d85..00000000
Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/a4275f53-d306-4bfd-87d1-51adfae33677.vsidx and /dev/null differ
diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/c020f91c-4e65-4640-b966-f16e017967a7.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/c020f91c-4e65-4640-b966-f16e017967a7.vsidx
deleted file mode 100644
index bedf3389..00000000
Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/c020f91c-4e65-4640-b966-f16e017967a7.vsidx and /dev/null differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 b/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2
index d1ca4606..0f3d2cbe 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 and b/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/.suo b/源代码/.vs/StgSharpDevelop/v17/.suo
index 124e0fb2..1fe04092 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/.suo and b/源代码/.vs/StgSharpDevelop/v17/.suo differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/Browse.VC.db b/源代码/.vs/StgSharpDevelop/v17/Browse.VC.db
index 9b663ffd..0b1f251e 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/Browse.VC.db and b/源代码/.vs/StgSharpDevelop/v17/Browse.VC.db differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db b/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db
index baca7f76..0256809a 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db and b/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/fileList.bin b/源代码/.vs/StgSharpDevelop/v17/fileList.bin
index 4f4dd2d4..efe433a0 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/fileList.bin and b/源代码/.vs/StgSharpDevelop/v17/fileList.bin differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/b62eabe021f7a074/GL.ipch b/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/b62eabe021f7a074/GL.ipch
index df2d6938..53988d4f 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/b62eabe021f7a074/GL.ipch and b/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/b62eabe021f7a074/GL.ipch differ
diff --git a/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/fd8fe869b9042dc6/STGSHARPC.ipch b/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/fd8fe869b9042dc6/STGSHARPC.ipch
index 9fdff7b7..8e84d1f0 100644
Binary files a/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/fd8fe869b9042dc6/STGSHARPC.ipch and b/源代码/.vs/StgSharpDevelop/v17/ipch/AutoPCH/fd8fe869b9042dc6/STGSHARPC.ipch differ
diff --git a/源代码/OpenGL/GLFW3h拆分.xlsx b/源代码/OpenGL/GLFW3h拆分.xlsx
index 82335a8c..7a118ca7 100644
Binary files a/源代码/OpenGL/GLFW3h拆分.xlsx and b/源代码/OpenGL/GLFW3h拆分.xlsx differ
diff --git a/源代码/OpenGL/~$GLFW3h拆分.xlsx b/源代码/OpenGL/~$GLFW3h拆分.xlsx
new file mode 100644
index 00000000..9f037ba8
Binary files /dev/null and b/源代码/OpenGL/~$GLFW3h拆分.xlsx differ
diff --git a/源代码/Output/x64/Debug/net6.0/SS_errorlog.log b/源代码/Output/x64/Debug/net6.0/SS_errorlog.log
index e69de29b..f15c28cf 100644
--- a/源代码/Output/x64/Debug/net6.0/SS_errorlog.log
+++ b/源代码/Output/x64/Debug/net6.0/SS_errorlog.log
@@ -0,0 +1,89 @@
+
+
+
+
+Info @ 2023-11-14T02:37:48.7343911+08:00
+Program start
+Info @ 2023-11-14T02:37:48.7633374+08:00
+Successfully load GLFW APIs. StgSharp is now working on p/invoke mode
+Info @ 2023-11-14T02:37:48.8851886+08:00
+Successfully create a context binded to current form. Its ID is 1818270039616
+Error @ 2023-11-14T02:37:48.9267693+08:00
+Object reference not set to an instance of an object.
+ at StgSharp.Graphics.Shader..ctor() in D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\Graphics\GL\Buffer\Shader.cs:line 16
+ at StgSharp.Program.DebugMain(String[] args) in D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\Program.cs:line 34
+ at StgSharp.Program.Main(String[] args) in D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\Program.cs:line 129
+
+
+
+
+Info @ 2023-11-14T02:45:18.8693338+08:00
+Program start
+Info @ 2023-11-14T02:45:18.9004651+08:00
+Successfully load GLFW APIs. StgSharp is now working on p/invoke mode
+Info @ 2023-11-14T02:45:19.0302489+08:00
+Successfully create a context binded to current form. Its ID is 1935559252096
+Info @ 2023-11-14T02:45:19.0530565+08:00
+Find core OpenGL version.
+Successfully load all OpenGL 1.0 APIs
+Successfully load all OpenGL 1.1 APIs
+Successfully load all OpenGL 1.2 APIs
+Successfully load all OpenGL 1.3 APIs
+Successfully load all OpenGL 1.4 APIs
+Successfully load all OpenGL 1.5 APIs
+Successfully load all OpenGL 2.0 APIs
+Successfully load all OpenGL 2.1 APIs
+Successfully load all OpenGL 3.0 APIs
+Successfully load all OpenGL 3.1 APIs
+Successfully load all OpenGL 3.2 APIs
+Successfully load all OpenGL 3.3 APIs
+Successfully load all OpenGL 4.0 APIs
+Successfully load all OpenGL 4.1 APIs
+Successfully load all OpenGL 4.2 APIs
+Successfully load all OpenGL 4.3 APIs
+Successfully load all OpenGL 4.4 APIs
+Cannot load OpenGL api called glGetnTexImage, this api may not exist or supported.
+Cannot load OpenGL api called glGetnUniformdv, this api may not exist or supported.
+Successfully load all OpenGL 4.5 APIs
+Cannot load OpenGL api called glMultiDrawArraysIndirectCount, this api may not exist or supported.
+Cannot load OpenGL api called glMultiDrawElementsIndirectCount, this api may not exist or supported.
+Successfully load all OpenGL 4.6 APIs
+Info @ 2023-11-14T02:45:19.1203473+08:00
+No supported OpenGL extensions are found.
+
+
+
+
+Info @ 2023-11-14T02:46:07.2551309+08:00
+Program start
+Info @ 2023-11-14T02:46:07.2827034+08:00
+Successfully load GLFW APIs. StgSharp is now working on p/invoke mode
+Info @ 2023-11-14T02:46:07.3949286+08:00
+Successfully create a context binded to current form. Its ID is 2011041170880
+Info @ 2023-11-14T02:46:07.4163324+08:00
+Find core OpenGL version.
+Successfully load all OpenGL 1.0 APIs
+Successfully load all OpenGL 1.1 APIs
+Successfully load all OpenGL 1.2 APIs
+Successfully load all OpenGL 1.3 APIs
+Successfully load all OpenGL 1.4 APIs
+Successfully load all OpenGL 1.5 APIs
+Successfully load all OpenGL 2.0 APIs
+Successfully load all OpenGL 2.1 APIs
+Successfully load all OpenGL 3.0 APIs
+Successfully load all OpenGL 3.1 APIs
+Successfully load all OpenGL 3.2 APIs
+Successfully load all OpenGL 3.3 APIs
+Successfully load all OpenGL 4.0 APIs
+Successfully load all OpenGL 4.1 APIs
+Successfully load all OpenGL 4.2 APIs
+Successfully load all OpenGL 4.3 APIs
+Successfully load all OpenGL 4.4 APIs
+Cannot load OpenGL api called glGetnTexImage, this api may not exist or supported.
+Cannot load OpenGL api called glGetnUniformdv, this api may not exist or supported.
+Successfully load all OpenGL 4.5 APIs
+Cannot load OpenGL api called glMultiDrawArraysIndirectCount, this api may not exist or supported.
+Cannot load OpenGL api called glMultiDrawElementsIndirectCount, this api may not exist or supported.
+Successfully load all OpenGL 4.6 APIs
+Info @ 2023-11-14T02:46:07.5006823+08:00
+No supported OpenGL extensions are found.
diff --git a/源代码/Output/x64/Debug/net6.0/StgSharpC.dll b/源代码/Output/x64/Debug/net6.0/StgSharpC.dll
index 1f520537..c9713799 100644
Binary files a/源代码/Output/x64/Debug/net6.0/StgSharpC.dll and b/源代码/Output/x64/Debug/net6.0/StgSharpC.dll differ
diff --git a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.dll b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.dll
index 9eafa987..d90c3e18 100644
Binary files a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.dll and b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.dll differ
diff --git a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.pdb b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.pdb
index 396b2cb2..3b8c87d0 100644
Binary files a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.pdb and b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.pdb differ
diff --git a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.xml b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.xml
index d8587c99..182964df 100644
--- a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.xml
+++ b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.xml
@@ -125,6 +125,13 @@
The instance of created form
+
+
+ Get the function pointer of given OpenGL api name
+
+ Name of the OpenGL api
+ The funtion pointer of the api in form of
+
Init an instance of OpenGL program,
diff --git a/源代码/StgSharp/Control/IO/GLIO.cs b/源代码/StgSharp/Control/IO/GLIO.cs
index 79fe6437..815146d4 100644
--- a/源代码/StgSharp/Control/IO/GLIO.cs
+++ b/源代码/StgSharp/Control/IO/GLIO.cs
@@ -18,26 +18,14 @@ namespace StgSharp
CallingConvention = CallingConvention.Cdecl)]
internal static extern uint InternalLinkShaderProgram(uint shaderProgram);
- [DllImport(SSC_libname, EntryPoint = "gladLoaderLoadGLContext",
- CallingConvention = CallingConvention.Cdecl)]
- internal static extern unsafe int InternalLoadGLapi(GLcontext* contextPtr);
-
- [DllImport(SSC_libname, EntryPoint = "gladLoadGLContext",
- CallingConvention = CallingConvention.Cdecl)]
- internal static extern unsafe int InternalLoaderLoadGLapi(GLcontext* contextPtr, GLfuncLoader loader);
-
[DllImport(SSC_libname, EntryPoint = "loadShaderCode",
CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
internal static extern unsafe uint InternalLoadShaderCode(string shaderCode, int shaderType);
- [DllImport(SSC_libname, EntryPoint = "gladLoaderUnloadGLContext",
- CallingConvention = CallingConvention.Cdecl)]
- internal static extern unsafe void InternalUnloadGLcontext(GLcontext* context);
-
[DllImport(SSC_libname, EntryPoint = "setCurrentGLContext",
CallingConvention = CallingConvention.Cdecl)]
- internal static extern unsafe void InternalSetCurrentGLContext(IntPtr windowID, GLcontext* context);
+ internal static extern unsafe void InternalSetCurrentGLContext(IntPtr windowID, IntPtr context);
[DllImport(SSC_libname, EntryPoint = "readLog",
CallingConvention = CallingConvention.Cdecl)]
@@ -58,649 +46,6 @@ namespace StgSharp.Graphics
{
IntPtr usrPtr;
- #region platformSig
-
- internal int VERSION_1_0;
- internal int VERSION_1_1;
- internal int VERSION_1_2;
- internal int VERSION_1_3;
- internal int VERSION_1_4;
- internal int VERSION_1_5;
- internal int VERSION_2_0;
- internal int VERSION_2_1;
- internal int VERSION_3_0;
- internal int VERSION_3_1;
- internal int VERSION_3_2;
- internal int VERSION_3_3;
- internal int VERSION_4_0;
- internal int VERSION_4_1;
- internal int VERSION_4_2;
- internal int VERSION_4_3;
- internal int VERSION_4_4;
- internal int VERSION_4_5;
- internal int VERSION_4_6;
- internal int _3DFX_multisample;
- internal int _3DFX_tbuffer;
- internal int _3DFX_texture_compression_FXT1;
- internal int AMD_blend_minmax_factor;
- internal int AMD_conservative_depth;
- internal int AMD_debug_output;
- internal int AMD_depth_clamp_separate;
- internal int AMD_draw_buffers_blend;
- internal int AMD_framebuffer_multisample_advanced;
- internal int AMD_framebuffer_sample_positions;
- internal int AMD_gcn_shader;
- internal int AMD_gpu_shader_half_float;
- internal int AMD_gpu_shader_int16;
- internal int AMD_gpu_shader_int64;
- internal int AMD_interleaved_elements;
- internal int AMD_multi_draw_indirect;
- internal int AMD_name_gen_delete;
- internal int AMD_occlusion_query_event;
- internal int AMD_performance_monitor;
- internal int AMD_pinned_memory;
- internal int AMD_query_buffer_object;
- internal int AMD_sample_positions;
- internal int AMD_seamless_cubemap_per_texture;
- internal int AMD_shader_atomic_counter_ops;
- internal int AMD_shader_ballot;
- internal int AMD_shader_explicit_vertex_parameter;
- internal int AMD_shader_gpu_shader_half_float_fetch;
- internal int AMD_shader_image_load_store_lod;
- internal int AMD_shader_stencil_export;
- internal int AMD_shader_trinary_minmax;
- internal int AMD_sparse_texture;
- internal int AMD_stencil_operation_extended;
- internal int AMD_texture_gather_bias_lod;
- internal int AMD_texture_texture4;
- internal int AMD_transform_feedback3_lines_triangles;
- internal int AMD_transform_feedback4;
- internal int AMD_vertex_shader_layer;
- internal int AMD_vertex_shader_tessellator;
- internal int AMD_vertex_shader_viewport_index;
- internal int APPLE_aux_depth_stencil;
- internal int APPLE_client_storage;
- internal int APPLE_element_array;
- internal int APPLE_fence;
- internal int APPLE_float_pixels;
- internal int APPLE_flush_buffer_range;
- internal int APPLE_object_purgeable;
- internal int APPLE_rgb_422;
- internal int APPLE_row_bytes;
- internal int APPLE_specular_vector;
- internal int APPLE_texture_range;
- internal int APPLE_transform_hint;
- internal int APPLE_vertex_array_object;
- internal int APPLE_vertex_array_range;
- internal int APPLE_vertex_program_evaluators;
- internal int APPLE_ycbcr_422;
- internal int ARB_ES2_compatibility;
- internal int ARB_ES3_1_compatibility;
- internal int ARB_ES3_2_compatibility;
- internal int ARB_ES3_compatibility;
- internal int ARB_arrays_of_arrays;
- internal int ARB_base_instance;
- internal int ARB_bindless_texture;
- internal int ARB_blend_func_extended;
- internal int ARB_buffer_storage;
- internal int ARB_cl_event;
- internal int ARB_clear_buffer_object;
- internal int ARB_clear_texture;
- internal int ARB_clip_control;
- internal int ARB_color_buffer_float;
- internal int ARB_compatibility;
- internal int ARB_compressed_texture_pixel_storage;
- internal int ARB_compute_shader;
- internal int ARB_compute_variable_group_size;
- internal int ARB_conditional_render_inverted;
- internal int ARB_conservative_depth;
- internal int ARB_copy_buffer;
- internal int ARB_copy_image;
- internal int ARB_cull_distance;
- internal int ARB_debug_output;
- internal int ARB_depth_buffer_float;
- internal int ARB_depth_clamp;
- internal int ARB_depth_texture;
- internal int ARB_derivative_control;
- internal int ARB_direct_state_access;
- internal int ARB_draw_buffers;
- internal int ARB_draw_buffers_blend;
- internal int ARB_draw_elements_base_vertex;
- internal int ARB_draw_indirect;
- internal int ARB_draw_instanced;
- internal int ARB_enhanced_layouts;
- internal int ARB_explicit_attrib_location;
- internal int ARB_explicit_uniform_location;
- internal int ARB_fragment_coord_conventions;
- internal int ARB_fragment_layer_viewport;
- internal int ARB_fragment_program;
- internal int ARB_fragment_program_shadow;
- internal int ARB_fragment_shader;
- internal int ARB_fragment_shader_interlock;
- internal int ARB_framebuffer_no_attachments;
- internal int ARB_framebuffer_object;
- internal int ARB_framebuffer_sRGB;
- internal int ARB_geometry_shader4;
- internal int ARB_get_program_binary;
- internal int ARB_get_texture_sub_image;
- internal int ARB_gl_spirv;
- internal int ARB_gpu_shader5;
- internal int ARB_gpu_shader_fp64;
- internal int ARB_gpu_shader_int64;
- internal int ARB_half_float_pixel;
- internal int ARB_half_float_vertex;
- internal int ARB_imaging;
- internal int ARB_indirect_parameters;
- internal int ARB_instanced_arrays;
- internal int ARB_internalformat_query;
- internal int ARB_internalformat_query2;
- internal int ARB_invalidate_subdata;
- internal int ARB_map_buffer_alignment;
- internal int ARB_map_buffer_range;
- internal int ARB_matrix_palette;
- internal int ARB_multi_bind;
- internal int ARB_multi_draw_indirect;
- internal int ARB_multisample;
- internal int ARB_multitexture;
- internal int ARB_occlusion_query;
- internal int ARB_occlusion_query2;
- internal int ARB_parallel_shader_compile;
- internal int ARB_pipeline_statistics_query;
- internal int ARB_pixel_buffer_object;
- internal int ARB_point_parameters;
- internal int ARB_point_sprite;
- internal int ARB_polygon_offset_clamp;
- internal int ARB_post_depth_coverage;
- internal int ARB_program_interface_query;
- internal int ARB_provoking_vertex;
- internal int ARB_query_buffer_object;
- internal int ARB_robust_buffer_access_behavior;
- internal int ARB_robustness;
- internal int ARB_robustness_isolation;
- internal int ARB_sample_locations;
- internal int ARB_sample_shading;
- internal int ARB_sampler_objects;
- internal int ARB_seamless_cube_map;
- internal int ARB_seamless_cubemap_per_texture;
- internal int ARB_separate_shader_objects;
- internal int ARB_shader_atomic_counter_ops;
- internal int ARB_shader_atomic_counters;
- internal int ARB_shader_ballot;
- internal int ARB_shader_bit_encoding;
- internal int ARB_shader_clock;
- internal int ARB_shader_draw_parameters;
- internal int ARB_shader_group_vote;
- internal int ARB_shader_image_load_store;
- internal int ARB_shader_image_size;
- internal int ARB_shader_objects;
- internal int ARB_shader_precision;
- internal int ARB_shader_stencil_export;
- internal int ARB_shader_storage_buffer_object;
- internal int ARB_shader_subroutine;
- internal int ARB_shader_texture_image_samples;
- internal int ARB_shader_texture_lod;
- internal int ARB_shader_viewport_layer_array;
- internal int ARB_shading_language_100;
- internal int ARB_shading_language_420pack;
- internal int ARB_shading_language_include;
- internal int ARB_shading_language_packing;
- internal int ARB_shadow;
- internal int ARB_shadow_ambient;
- internal int ARB_sparse_buffer;
- internal int ARB_sparse_texture;
- internal int ARB_sparse_texture2;
- internal int ARB_sparse_texture_clamp;
- internal int ARB_spirv_extensions;
- internal int ARB_stencil_texturing;
- internal int ARB_sync;
- internal int ARB_tessellation_shader;
- internal int ARB_texture_barrier;
- internal int ARB_texture_border_clamp;
- internal int ARB_texture_buffer_object;
- internal int ARB_texture_buffer_object_rgb32;
- internal int ARB_texture_buffer_range;
- internal int ARB_texture_compression;
- internal int ARB_texture_compression_bptc;
- internal int ARB_texture_compression_rgtc;
- internal int ARB_texture_cube_map;
- internal int ARB_texture_cube_map_array;
- internal int ARB_texture_env_add;
- internal int ARB_texture_env_combine;
- internal int ARB_texture_env_crossbar;
- internal int ARB_texture_env_dot3;
- internal int ARB_texture_filter_anisotropic;
- internal int ARB_texture_filter_minmax;
- internal int ARB_texture_float;
- internal int ARB_texture_gather;
- internal int ARB_texture_mirror_clamp_to_edge;
- internal int ARB_texture_mirrored_repeat;
- internal int ARB_texture_multisample;
- internal int ARB_texture_non_power_of_two;
- internal int ARB_texture_query_levels;
- internal int ARB_texture_query_lod;
- internal int ARB_texture_rectangle;
- internal int ARB_texture_rg;
- internal int ARB_texture_rgb10_a2ui;
- internal int ARB_texture_stencil8;
- internal int ARB_texture_storage;
- internal int ARB_texture_storage_multisample;
- internal int ARB_texture_swizzle;
- internal int ARB_texture_view;
- internal int ARB_timer_query;
- internal int ARB_transform_feedback2;
- internal int ARB_transform_feedback3;
- internal int ARB_transform_feedback_instanced;
- internal int ARB_transform_feedback_overflow_query;
- internal int ARB_transpose_matrix;
- internal int ARB_uniform_buffer_object;
- internal int ARB_vertex_array_bgra;
- internal int ARB_vertex_array_object;
- internal int ARB_vertex_attrib_64bit;
- internal int ARB_vertex_attrib_binding;
- internal int ARB_vertex_blend;
- internal int ARB_vertex_buffer_object;
- internal int ARB_vertex_program;
- internal int ARB_vertex_shader;
- internal int ARB_vertex_type_10f_11f_11f_rev;
- internal int ARB_vertex_type_2_10_10_10_rev;
- internal int ARB_viewport_array;
- internal int ARB_window_pos;
- internal int ATI_draw_buffers;
- internal int ATI_element_array;
- internal int ATI_envmap_bumpmap;
- internal int ATI_fragment_shader;
- internal int ATI_map_object_buffer;
- internal int ATI_meminfo;
- internal int ATI_pixel_format_float;
- internal int ATI_pn_triangles;
- internal int ATI_separate_stencil;
- internal int ATI_text_fragment_shader;
- internal int ATI_texture_env_combine3;
- internal int ATI_texture_float;
- internal int ATI_texture_mirror_once;
- internal int ATI_vertex_array_object;
- internal int ATI_vertex_attrib_array_object;
- internal int ATI_vertex_streams;
- internal int EXT_422_pixels;
- internal int EXT_EGL_image_storage;
- internal int EXT_EGL_sync;
- internal int EXT_abgr;
- internal int EXT_bgra;
- internal int EXT_bindable_uniform;
- internal int EXT_blend_color;
- internal int EXT_blend_equation_separate;
- internal int EXT_blend_func_separate;
- internal int EXT_blend_logic_op;
- internal int EXT_blend_minmax;
- internal int EXT_blend_subtract;
- internal int EXT_clip_volume_hint;
- internal int EXT_cmyka;
- internal int EXT_color_subtable;
- internal int EXT_compiled_vertex_array;
- internal int EXT_convolution;
- internal int EXT_coordinate_frame;
- internal int EXT_copy_texture;
- internal int EXT_cull_vertex;
- internal int EXT_debug_label;
- internal int EXT_debug_marker;
- internal int EXT_depth_bounds_test;
- internal int EXT_direct_state_access;
- internal int EXT_draw_buffers2;
- internal int EXT_draw_instanced;
- internal int EXT_draw_range_elements;
- internal int EXT_external_buffer;
- internal int EXT_fog_coord;
- internal int EXT_framebuffer_blit;
- internal int EXT_framebuffer_blit_layers;
- internal int EXT_framebuffer_multisample;
- internal int EXT_framebuffer_multisample_blit_scaled;
- internal int EXT_framebuffer_object;
- internal int EXT_framebuffer_sRGB;
- internal int EXT_geometry_shader4;
- internal int EXT_gpu_program_parameters;
- internal int EXT_gpu_shader4;
- internal int EXT_histogram;
- internal int EXT_index_array_formats;
- internal int EXT_index_func;
- internal int EXT_index_material;
- internal int EXT_index_texture;
- internal int EXT_light_texture;
- internal int EXT_memory_object;
- internal int EXT_memory_object_fd;
- internal int EXT_memory_object_win32;
- internal int EXT_misc_attribute;
- internal int EXT_multi_draw_arrays;
- internal int EXT_multisample;
- internal int EXT_multiview_tessellation_geometry_shader;
- internal int EXT_multiview_texture_multisample;
- internal int EXT_multiview_timer_query;
- internal int EXT_packed_depth_stencil;
- internal int EXT_packed_float;
- internal int EXT_packed_pixels;
- internal int EXT_paletted_texture;
- internal int EXT_pixel_buffer_object;
- internal int EXT_pixel_transform;
- internal int EXT_pixel_transform_color_table;
- internal int EXT_point_parameters;
- internal int EXT_polygon_offset;
- internal int EXT_polygon_offset_clamp;
- internal int EXT_post_depth_coverage;
- internal int EXT_provoking_vertex;
- internal int EXT_raster_multisample;
- internal int EXT_rescale_normal;
- internal int EXT_secondary_color;
- internal int EXT_semaphore;
- internal int EXT_semaphore_fd;
- internal int EXT_semaphore_win32;
- internal int EXT_separate_shader_objects;
- internal int EXT_separate_specular_color;
- internal int EXT_shader_framebuffer_fetch;
- internal int EXT_shader_framebuffer_fetch_non_coherent;
- internal int EXT_shader_image_load_formatted;
- internal int EXT_shader_image_load_store;
- internal int EXT_shader_integer_mix;
- internal int EXT_shader_samples_identical;
- internal int EXT_shadow_funcs;
- internal int EXT_shared_texture_palette;
- internal int EXT_sparse_texture2;
- internal int EXT_stencil_clear_tag;
- internal int EXT_stencil_two_side;
- internal int EXT_stencil_wrap;
- internal int EXT_subtexture;
- internal int EXT_texture;
- internal int EXT_texture3D;
- internal int EXT_texture_array;
- internal int EXT_texture_buffer_object;
- internal int EXT_texture_compression_latc;
- internal int EXT_texture_compression_rgtc;
- internal int EXT_texture_compression_s3tc;
- internal int EXT_texture_cube_map;
- internal int EXT_texture_env_add;
- internal int EXT_texture_env_combine;
- internal int EXT_texture_env_dot3;
- internal int EXT_texture_filter_anisotropic;
- internal int EXT_texture_filter_minmax;
- internal int EXT_texture_integer;
- internal int EXT_texture_lod_bias;
- internal int EXT_texture_mirror_clamp;
- internal int EXT_texture_object;
- internal int EXT_texture_perturb_normal;
- internal int EXT_texture_sRGB;
- internal int EXT_texture_sRGB_R8;
- internal int EXT_texture_sRGB_RG8;
- internal int EXT_texture_sRGB_decode;
- internal int EXT_texture_shadow_lod;
- internal int EXT_texture_shared_exponent;
- internal int EXT_texture_snorm;
- internal int EXT_texture_storage;
- internal int EXT_texture_swizzle;
- internal int EXT_timer_query;
- internal int EXT_transform_feedback;
- internal int EXT_vertex_array;
- internal int EXT_vertex_array_bgra;
- internal int EXT_vertex_attrib_64bit;
- internal int EXT_vertex_shader;
- internal int EXT_vertex_weighting;
- internal int EXT_win32_keyed_mutex;
- internal int EXT_window_rectangles;
- internal int EXT_x11_sync_object;
- internal int GREMEDY_frame_terminator;
- internal int GREMEDY_string_marker;
- internal int HP_convolution_border_modes;
- internal int HP_image_transform;
- internal int HP_occlusion_test;
- internal int HP_texture_lighting;
- internal int IBM_cull_vertex;
- internal int IBM_multimode_draw_arrays;
- internal int IBM_rasterpos_clip;
- internal int IBM_static_data;
- internal int IBM_texture_mirrored_repeat;
- internal int IBM_vertex_array_lists;
- internal int INGR_blend_func_separate;
- internal int INGR_color_clamp;
- internal int INGR_interlace_read;
- internal int INTEL_blackhole_render;
- internal int INTEL_conservative_rasterization;
- internal int INTEL_fragment_shader_ordering;
- internal int INTEL_framebuffer_CMAA;
- internal int INTEL_map_texture;
- internal int INTEL_parallel_arrays;
- internal int INTEL_performance_query;
- internal int KHR_blend_equation_advanced;
- internal int KHR_blend_equation_advanced_coherent;
- internal int KHR_context_flush_control;
- internal int KHR_debug;
- internal int KHR_no_error;
- internal int KHR_parallel_shader_compile;
- internal int KHR_robust_buffer_access_behavior;
- internal int KHR_robustness;
- internal int KHR_shader_subgroup;
- internal int KHR_texture_compression_astc_hdr;
- internal int KHR_texture_compression_astc_ldr;
- internal int KHR_texture_compression_astc_sliced_3d;
- internal int MESAX_texture_stack;
- internal int MESA_framebuffer_flip_x;
- internal int MESA_framebuffer_flip_y;
- internal int MESA_framebuffer_swap_xy;
- internal int MESA_pack_invert;
- internal int MESA_program_binary_formats;
- internal int MESA_resize_buffers;
- internal int MESA_shader_integer_functions;
- internal int MESA_tile_raster_order;
- internal int MESA_window_pos;
- internal int MESA_ycbcr_texture;
- internal int NVX_blend_equation_advanced_multi_draw_buffers;
- internal int NVX_conditional_render;
- internal int NVX_gpu_memory_info;
- internal int NVX_gpu_multicast2;
- internal int NVX_linked_gpu_multicast;
- internal int NVX_progress_fence;
- internal int NV_alpha_to_coverage_dither_control;
- internal int NV_bindless_multi_draw_indirect;
- internal int NV_bindless_multi_draw_indirect_count;
- internal int NV_bindless_texture;
- internal int NV_blend_equation_advanced;
- internal int NV_blend_equation_advanced_coherent;
- internal int NV_blend_minmax_factor;
- internal int NV_blend_square;
- internal int NV_clip_space_w_scaling;
- internal int NV_command_list;
- internal int NV_compute_program5;
- internal int NV_compute_shader_derivatives;
- internal int NV_conditional_render;
- internal int NV_conservative_raster;
- internal int NV_conservative_raster_dilate;
- internal int NV_conservative_raster_pre_snap;
- internal int NV_conservative_raster_pre_snap_triangles;
- internal int NV_conservative_raster_underestimation;
- internal int NV_copy_depth_to_color;
- internal int NV_copy_image;
- internal int NV_deep_texture3D;
- internal int NV_depth_buffer_float;
- internal int NV_depth_clamp;
- internal int NV_draw_texture;
- internal int NV_draw_vulkan_image;
- internal int NV_evaluators;
- internal int NV_explicit_multisample;
- internal int NV_fence;
- internal int NV_fill_rectangle;
- internal int NV_float_buffer;
- internal int NV_fog_distance;
- internal int NV_fragment_coverage_to_color;
- internal int NV_fragment_program;
- internal int NV_fragment_program2;
- internal int NV_fragment_program4;
- internal int NV_fragment_program_option;
- internal int NV_fragment_shader_barycentric;
- internal int NV_fragment_shader_interlock;
- internal int NV_framebuffer_mixed_samples;
- internal int NV_framebuffer_multisample_coverage;
- internal int NV_geometry_program4;
- internal int NV_geometry_shader4;
- internal int NV_geometry_shader_passthrough;
- internal int NV_gpu_multicast;
- internal int NV_gpu_program4;
- internal int NV_gpu_program5;
- internal int NV_gpu_program5_mem_extended;
- internal int NV_gpu_shader5;
- internal int NV_half_float;
- internal int NV_internalformat_sample_query;
- internal int NV_light_max_exponent;
- internal int NV_memory_attachment;
- internal int NV_memory_object_sparse;
- internal int NV_mesh_shader;
- internal int NV_multisample_coverage;
- internal int NV_multisample_filter_hint;
- internal int NV_occlusion_query;
- internal int NV_packed_depth_stencil;
- internal int NV_parameter_buffer_object;
- internal int NV_parameter_buffer_object2;
- internal int NV_path_rendering;
- internal int NV_path_rendering_shared_edge;
- internal int NV_pixel_data_range;
- internal int NV_point_sprite;
- internal int NV_present_video;
- internal int NV_primitive_restart;
- internal int NV_primitive_shading_rate;
- internal int NV_query_resource;
- internal int NV_query_resource_tag;
- internal int NV_register_combiners;
- internal int NV_register_combiners2;
- internal int NV_representative_fragment_test;
- internal int NV_robustness_video_memory_purge;
- internal int NV_sample_locations;
- internal int NV_sample_mask_override_coverage;
- internal int NV_scissor_exclusive;
- internal int NV_shader_atomic_counters;
- internal int NV_shader_atomic_float;
- internal int NV_shader_atomic_float64;
- internal int NV_shader_atomic_fp16_vector;
- internal int NV_shader_atomic_int64;
- internal int NV_shader_buffer_load;
- internal int NV_shader_buffer_store;
- internal int NV_shader_storage_buffer_object;
- internal int NV_shader_subgroup_partitioned;
- internal int NV_shader_texture_footprint;
- internal int NV_shader_thread_group;
- internal int NV_shader_thread_shuffle;
- internal int NV_shading_rate_image;
- internal int NV_stereo_view_rendering;
- internal int NV_tessellation_program5;
- internal int NV_texgen_emboss;
- internal int NV_texgen_reflection;
- internal int NV_texture_barrier;
- internal int NV_texture_compression_vtc;
- internal int NV_texture_env_combine4;
- internal int NV_texture_expand_normal;
- internal int NV_texture_multisample;
- internal int NV_texture_rectangle;
- internal int NV_texture_rectangle_compressed;
- internal int NV_texture_shader;
- internal int NV_texture_shader2;
- internal int NV_texture_shader3;
- internal int NV_timeline_semaphore;
- internal int NV_transform_feedback;
- internal int NV_transform_feedback2;
- internal int NV_uniform_buffer_std430_layout;
- internal int NV_uniform_buffer_unified_memory;
- internal int NV_vdpau_interop;
- internal int NV_vdpau_interop2;
- internal int NV_vertex_array_range;
- internal int NV_vertex_array_range2;
- internal int NV_vertex_attrib_integer_64bit;
- internal int NV_vertex_buffer_unified_memory;
- internal int NV_vertex_program;
- internal int NV_vertex_program1_1;
- internal int NV_vertex_program2;
- internal int NV_vertex_program2_option;
- internal int NV_vertex_program3;
- internal int NV_vertex_program4;
- internal int NV_video_capture;
- internal int NV_viewport_array2;
- internal int NV_viewport_swizzle;
- internal int OES_byte_coordinates;
- internal int OES_compressed_paletted_texture;
- internal int OES_fixed_point;
- internal int OES_query_matrix;
- internal int OES_read_format;
- internal int OES_single_precision;
- internal int OML_interlace;
- internal int OML_resample;
- internal int OML_subsample;
- internal int OVR_multiview;
- internal int OVR_multiview2;
- internal int PGI_misc_hints;
- internal int PGI_vertex_hints;
- internal int REND_screen_coordinates;
- internal int S3_s3tc;
- internal int SGIS_detail_texture;
- internal int SGIS_fog_function;
- internal int SGIS_generate_mipmap;
- internal int SGIS_multisample;
- internal int SGIS_pixel_texture;
- internal int SGIS_point_line_texgen;
- internal int SGIS_point_parameters;
- internal int SGIS_sharpen_texture;
- internal int SGIS_texture4D;
- internal int SGIS_texture_border_clamp;
- internal int SGIS_texture_color_mask;
- internal int SGIS_texture_edge_clamp;
- internal int SGIS_texture_filter4;
- internal int SGIS_texture_lod;
- internal int SGIS_texture_select;
- internal int SGIX_async;
- internal int SGIX_async_histogram;
- internal int SGIX_async_pixel;
- internal int SGIX_blend_alpha_minmax;
- internal int SGIX_calligraphic_fragment;
- internal int SGIX_clipmap;
- internal int SGIX_convolution_accuracy;
- internal int SGIX_depth_pass_instrument;
- internal int SGIX_depth_texture;
- internal int SGIX_flush_raster;
- internal int SGIX_fog_offset;
- internal int SGIX_fragment_lighting;
- internal int SGIX_framezoom;
- internal int SGIX_igloo_interface;
- internal int SGIX_instruments;
- internal int SGIX_interlace;
- internal int SGIX_ir_instrument1;
- internal int SGIX_list_priority;
- internal int SGIX_pixel_texture;
- internal int SGIX_pixel_tiles;
- internal int SGIX_polynomial_ffd;
- internal int SGIX_reference_plane;
- internal int SGIX_resample;
- internal int SGIX_scalebias_hint;
- internal int SGIX_shadow;
- internal int SGIX_shadow_ambient;
- internal int SGIX_sprite;
- internal int SGIX_subsample;
- internal int SGIX_tag_sample_buffer;
- internal int SGIX_texture_add_env;
- internal int SGIX_texture_coordinate_clamp;
- internal int SGIX_texture_lod_bias;
- internal int SGIX_texture_multi_buffer;
- internal int SGIX_texture_scale_bias;
- internal int SGIX_vertex_preclip;
- internal int SGIX_ycrcb;
- internal int SGIX_ycrcb_subsample;
- internal int SGIX_ycrcba;
- internal int SGI_color_matrix;
- internal int SGI_color_table;
- internal int SGI_texture_color_table;
- internal int SUNX_constant_data;
- internal int SUN_convolution_border_modes;
- internal int SUN_global_alpha;
- internal int SUN_mesh_array;
- internal int SUN_slice_accum;
- internal int SUN_triangle_list;
- internal int SUN_vertex;
- internal int WIN_phong_shading;
- internal int WIN_specular_fog;
-
- #endregion
-
#region glapi
#region code
@@ -1581,7 +926,7 @@ namespace StgSharp.Graphics
internal IntPtr GetShadingRateSampleLocationivNV;
internal IntPtr GetSharpenTexFuncSGIS;
internal IntPtr GetStageIndexNV;
- internal IntPtr GetString;
+ internal IntPtr GetString = IntPtr.Zero;
internal IntPtr GetStringi;
internal IntPtr GetSubroutineIndex;
internal IntPtr GetSubroutineUniformLocation;
@@ -3242,656 +2587,18 @@ namespace StgSharp.Graphics
#endregion
internal IntPtr glad_loader_handler;
+
+ public GLcontextIO()
+ {
+
+ }
}
[StructLayout(LayoutKind.Sequential)]
- public unsafe struct GLcontext
+ public class GLcontext
{
internal IntPtr usrPtr;
- #region platformSig
-
- internal int VERSION_1_0;
- internal int VERSION_1_1;
- internal int VERSION_1_2;
- internal int VERSION_1_3;
- internal int VERSION_1_4;
- internal int VERSION_1_5;
- internal int VERSION_2_0;
- internal int VERSION_2_1;
- internal int VERSION_3_0;
- internal int VERSION_3_1;
- internal int VERSION_3_2;
- internal int VERSION_3_3;
- internal int VERSION_4_0;
- internal int VERSION_4_1;
- internal int VERSION_4_2;
- internal int VERSION_4_3;
- internal int VERSION_4_4;
- internal int VERSION_4_5;
- internal int VERSION_4_6;
- internal int _3DFX_multisample;
- internal int _3DFX_tbuffer;
- internal int _3DFX_texture_compression_FXT1;
- internal int AMD_blend_minmax_factor;
- internal int AMD_conservative_depth;
- internal int AMD_debug_output;
- internal int AMD_depth_clamp_separate;
- internal int AMD_draw_buffers_blend;
- internal int AMD_framebuffer_multisample_advanced;
- internal int AMD_framebuffer_sample_positions;
- internal int AMD_gcn_shader;
- internal int AMD_gpu_shader_half_float;
- internal int AMD_gpu_shader_int16;
- internal int AMD_gpu_shader_int64;
- internal int AMD_interleaved_elements;
- internal int AMD_multi_draw_indirect;
- internal int AMD_name_gen_delete;
- internal int AMD_occlusion_query_event;
- internal int AMD_performance_monitor;
- internal int AMD_pinned_memory;
- internal int AMD_query_buffer_object;
- internal int AMD_sample_positions;
- internal int AMD_seamless_cubemap_per_texture;
- internal int AMD_shader_atomic_counter_ops;
- internal int AMD_shader_ballot;
- internal int AMD_shader_explicit_vertex_parameter;
- internal int AMD_shader_gpu_shader_half_float_fetch;
- internal int AMD_shader_image_load_store_lod;
- internal int AMD_shader_stencil_export;
- internal int AMD_shader_trinary_minmax;
- internal int AMD_sparse_texture;
- internal int AMD_stencil_operation_extended;
- internal int AMD_texture_gather_bias_lod;
- internal int AMD_texture_texture4;
- internal int AMD_transform_feedback3_lines_triangles;
- internal int AMD_transform_feedback4;
- internal int AMD_vertex_shader_layer;
- internal int AMD_vertex_shader_tessellator;
- internal int AMD_vertex_shader_viewport_index;
- internal int APPLE_aux_depth_stencil;
- internal int APPLE_client_storage;
- internal int APPLE_element_array;
- internal int APPLE_fence;
- internal int APPLE_float_pixels;
- internal int APPLE_flush_buffer_range;
- internal int APPLE_object_purgeable;
- internal int APPLE_rgb_422;
- internal int APPLE_row_bytes;
- internal int APPLE_specular_vector;
- internal int APPLE_texture_range;
- internal int APPLE_transform_hint;
- internal int APPLE_vertex_array_object;
- internal int APPLE_vertex_array_range;
- internal int APPLE_vertex_program_evaluators;
- internal int APPLE_ycbcr_422;
- internal int ARB_ES2_compatibility;
- internal int ARB_ES3_1_compatibility;
- internal int ARB_ES3_2_compatibility;
- internal int ARB_ES3_compatibility;
- internal int ARB_arrays_of_arrays;
- internal int ARB_base_instance;
- internal int ARB_bindless_texture;
- internal int ARB_blend_func_extended;
- internal int ARB_buffer_storage;
- internal int ARB_cl_event;
- internal int ARB_clear_buffer_object;
- internal int ARB_clear_texture;
- internal int ARB_clip_control;
- internal int ARB_color_buffer_float;
- internal int ARB_compatibility;
- internal int ARB_compressed_texture_pixel_storage;
- internal int ARB_compute_shader;
- internal int ARB_compute_variable_group_size;
- internal int ARB_conditional_render_inverted;
- internal int ARB_conservative_depth;
- internal int ARB_copy_buffer;
- internal int ARB_copy_image;
- internal int ARB_cull_distance;
- internal int ARB_debug_output;
- internal int ARB_depth_buffer_float;
- internal int ARB_depth_clamp;
- internal int ARB_depth_texture;
- internal int ARB_derivative_control;
- internal int ARB_direct_state_access;
- internal int ARB_draw_buffers;
- internal int ARB_draw_buffers_blend;
- internal int ARB_draw_elements_base_vertex;
- internal int ARB_draw_indirect;
- internal int ARB_draw_instanced;
- internal int ARB_enhanced_layouts;
- internal int ARB_explicit_attrib_location;
- internal int ARB_explicit_uniform_location;
- internal int ARB_fragment_coord_conventions;
- internal int ARB_fragment_layer_viewport;
- internal int ARB_fragment_program;
- internal int ARB_fragment_program_shadow;
- internal int ARB_fragment_shader;
- internal int ARB_fragment_shader_interlock;
- internal int ARB_framebuffer_no_attachments;
- internal int ARB_framebuffer_object;
- internal int ARB_framebuffer_sRGB;
- internal int ARB_geometry_shader4;
- internal int ARB_get_program_binary;
- internal int ARB_get_texture_sub_image;
- internal int ARB_gl_spirv;
- internal int ARB_gpu_shader5;
- internal int ARB_gpu_shader_fp64;
- internal int ARB_gpu_shader_int64;
- internal int ARB_half_float_pixel;
- internal int ARB_half_float_vertex;
- internal int ARB_imaging;
- internal int ARB_indirect_parameters;
- internal int ARB_instanced_arrays;
- internal int ARB_internalformat_query;
- internal int ARB_internalformat_query2;
- internal int ARB_invalidate_subdata;
- internal int ARB_map_buffer_alignment;
- internal int ARB_map_buffer_range;
- internal int ARB_matrix_palette;
- internal int ARB_multi_bind;
- internal int ARB_multi_draw_indirect;
- internal int ARB_multisample;
- internal int ARB_multitexture;
- internal int ARB_occlusion_query;
- internal int ARB_occlusion_query2;
- internal int ARB_parallel_shader_compile;
- internal int ARB_pipeline_statistics_query;
- internal int ARB_pixel_buffer_object;
- internal int ARB_point_parameters;
- internal int ARB_point_sprite;
- internal int ARB_polygon_offset_clamp;
- internal int ARB_post_depth_coverage;
- internal int ARB_program_interface_query;
- internal int ARB_provoking_vertex;
- internal int ARB_query_buffer_object;
- internal int ARB_robust_buffer_access_behavior;
- internal int ARB_robustness;
- internal int ARB_robustness_isolation;
- internal int ARB_sample_locations;
- internal int ARB_sample_shading;
- internal int ARB_sampler_objects;
- internal int ARB_seamless_cube_map;
- internal int ARB_seamless_cubemap_per_texture;
- internal int ARB_separate_shader_objects;
- internal int ARB_shader_atomic_counter_ops;
- internal int ARB_shader_atomic_counters;
- internal int ARB_shader_ballot;
- internal int ARB_shader_bit_encoding;
- internal int ARB_shader_clock;
- internal int ARB_shader_draw_parameters;
- internal int ARB_shader_group_vote;
- internal int ARB_shader_image_load_store;
- internal int ARB_shader_image_size;
- internal int ARB_shader_objects;
- internal int ARB_shader_precision;
- internal int ARB_shader_stencil_export;
- internal int ARB_shader_storage_buffer_object;
- internal int ARB_shader_subroutine;
- internal int ARB_shader_texture_image_samples;
- internal int ARB_shader_texture_lod;
- internal int ARB_shader_viewport_layer_array;
- internal int ARB_shading_language_100;
- internal int ARB_shading_language_420pack;
- internal int ARB_shading_language_include;
- internal int ARB_shading_language_packing;
- internal int ARB_shadow;
- internal int ARB_shadow_ambient;
- internal int ARB_sparse_buffer;
- internal int ARB_sparse_texture;
- internal int ARB_sparse_texture2;
- internal int ARB_sparse_texture_clamp;
- internal int ARB_spirv_extensions;
- internal int ARB_stencil_texturing;
- internal int ARB_sync;
- internal int ARB_tessellation_shader;
- internal int ARB_texture_barrier;
- internal int ARB_texture_border_clamp;
- internal int ARB_texture_buffer_object;
- internal int ARB_texture_buffer_object_rgb32;
- internal int ARB_texture_buffer_range;
- internal int ARB_texture_compression;
- internal int ARB_texture_compression_bptc;
- internal int ARB_texture_compression_rgtc;
- internal int ARB_texture_cube_map;
- internal int ARB_texture_cube_map_array;
- internal int ARB_texture_env_add;
- internal int ARB_texture_env_combine;
- internal int ARB_texture_env_crossbar;
- internal int ARB_texture_env_dot3;
- internal int ARB_texture_filter_anisotropic;
- internal int ARB_texture_filter_minmax;
- internal int ARB_texture_float;
- internal int ARB_texture_gather;
- internal int ARB_texture_mirror_clamp_to_edge;
- internal int ARB_texture_mirrored_repeat;
- internal int ARB_texture_multisample;
- internal int ARB_texture_non_power_of_two;
- internal int ARB_texture_query_levels;
- internal int ARB_texture_query_lod;
- internal int ARB_texture_rectangle;
- internal int ARB_texture_rg;
- internal int ARB_texture_rgb10_a2ui;
- internal int ARB_texture_stencil8;
- internal int ARB_texture_storage;
- internal int ARB_texture_storage_multisample;
- internal int ARB_texture_swizzle;
- internal int ARB_texture_view;
- internal int ARB_timer_query;
- internal int ARB_transform_feedback2;
- internal int ARB_transform_feedback3;
- internal int ARB_transform_feedback_instanced;
- internal int ARB_transform_feedback_overflow_query;
- internal int ARB_transpose_matrix;
- internal int ARB_uniform_buffer_object;
- internal int ARB_vertex_array_bgra;
- internal int ARB_vertex_array_object;
- internal int ARB_vertex_attrib_64bit;
- internal int ARB_vertex_attrib_binding;
- internal int ARB_vertex_blend;
- internal int ARB_vertex_buffer_object;
- internal int ARB_vertex_program;
- internal int ARB_vertex_shader;
- internal int ARB_vertex_type_10f_11f_11f_rev;
- internal int ARB_vertex_type_2_10_10_10_rev;
- internal int ARB_viewport_array;
- internal int ARB_window_pos;
- internal int ATI_draw_buffers;
- internal int ATI_element_array;
- internal int ATI_envmap_bumpmap;
- internal int ATI_fragment_shader;
- internal int ATI_map_object_buffer;
- internal int ATI_meminfo;
- internal int ATI_pixel_format_float;
- internal int ATI_pn_triangles;
- internal int ATI_separate_stencil;
- internal int ATI_text_fragment_shader;
- internal int ATI_texture_env_combine3;
- internal int ATI_texture_float;
- internal int ATI_texture_mirror_once;
- internal int ATI_vertex_array_object;
- internal int ATI_vertex_attrib_array_object;
- internal int ATI_vertex_streams;
- internal int EXT_422_pixels;
- internal int EXT_EGL_image_storage;
- internal int EXT_EGL_sync;
- internal int EXT_abgr;
- internal int EXT_bgra;
- internal int EXT_bindable_uniform;
- internal int EXT_blend_color;
- internal int EXT_blend_equation_separate;
- internal int EXT_blend_func_separate;
- internal int EXT_blend_logic_op;
- internal int EXT_blend_minmax;
- internal int EXT_blend_subtract;
- internal int EXT_clip_volume_hint;
- internal int EXT_cmyka;
- internal int EXT_color_subtable;
- internal int EXT_compiled_vertex_array;
- internal int EXT_convolution;
- internal int EXT_coordinate_frame;
- internal int EXT_copy_texture;
- internal int EXT_cull_vertex;
- internal int EXT_debug_label;
- internal int EXT_debug_marker;
- internal int EXT_depth_bounds_test;
- internal int EXT_direct_state_access;
- internal int EXT_draw_buffers2;
- internal int EXT_draw_instanced;
- internal int EXT_draw_range_elements;
- internal int EXT_external_buffer;
- internal int EXT_fog_coord;
- internal int EXT_framebuffer_blit;
- internal int EXT_framebuffer_blit_layers;
- internal int EXT_framebuffer_multisample;
- internal int EXT_framebuffer_multisample_blit_scaled;
- internal int EXT_framebuffer_object;
- internal int EXT_framebuffer_sRGB;
- internal int EXT_geometry_shader4;
- internal int EXT_gpu_program_parameters;
- internal int EXT_gpu_shader4;
- internal int EXT_histogram;
- internal int EXT_index_array_formats;
- internal int EXT_index_func;
- internal int EXT_index_material;
- internal int EXT_index_texture;
- internal int EXT_light_texture;
- internal int EXT_memory_object;
- internal int EXT_memory_object_fd;
- internal int EXT_memory_object_win32;
- internal int EXT_misc_attribute;
- internal int EXT_multi_draw_arrays;
- internal int EXT_multisample;
- internal int EXT_multiview_tessellation_geometry_shader;
- internal int EXT_multiview_texture_multisample;
- internal int EXT_multiview_timer_query;
- internal int EXT_packed_depth_stencil;
- internal int EXT_packed_float;
- internal int EXT_packed_pixels;
- internal int EXT_paletted_texture;
- internal int EXT_pixel_buffer_object;
- internal int EXT_pixel_transform;
- internal int EXT_pixel_transform_color_table;
- internal int EXT_point_parameters;
- internal int EXT_polygon_offset;
- internal int EXT_polygon_offset_clamp;
- internal int EXT_post_depth_coverage;
- internal int EXT_provoking_vertex;
- internal int EXT_raster_multisample;
- internal int EXT_rescale_normal;
- internal int EXT_secondary_color;
- internal int EXT_semaphore;
- internal int EXT_semaphore_fd;
- internal int EXT_semaphore_win32;
- internal int EXT_separate_shader_objects;
- internal int EXT_separate_specular_color;
- internal int EXT_shader_framebuffer_fetch;
- internal int EXT_shader_framebuffer_fetch_non_coherent;
- internal int EXT_shader_image_load_formatted;
- internal int EXT_shader_image_load_store;
- internal int EXT_shader_integer_mix;
- internal int EXT_shader_samples_identical;
- internal int EXT_shadow_funcs;
- internal int EXT_shared_texture_palette;
- internal int EXT_sparse_texture2;
- internal int EXT_stencil_clear_tag;
- internal int EXT_stencil_two_side;
- internal int EXT_stencil_wrap;
- internal int EXT_subtexture;
- internal int EXT_texture;
- internal int EXT_texture3D;
- internal int EXT_texture_array;
- internal int EXT_texture_buffer_object;
- internal int EXT_texture_compression_latc;
- internal int EXT_texture_compression_rgtc;
- internal int EXT_texture_compression_s3tc;
- internal int EXT_texture_cube_map;
- internal int EXT_texture_env_add;
- internal int EXT_texture_env_combine;
- internal int EXT_texture_env_dot3;
- internal int EXT_texture_filter_anisotropic;
- internal int EXT_texture_filter_minmax;
- internal int EXT_texture_integer;
- internal int EXT_texture_lod_bias;
- internal int EXT_texture_mirror_clamp;
- internal int EXT_texture_object;
- internal int EXT_texture_perturb_normal;
- internal int EXT_texture_sRGB;
- internal int EXT_texture_sRGB_R8;
- internal int EXT_texture_sRGB_RG8;
- internal int EXT_texture_sRGB_decode;
- internal int EXT_texture_shadow_lod;
- internal int EXT_texture_shared_exponent;
- internal int EXT_texture_snorm;
- internal int EXT_texture_storage;
- internal int EXT_texture_swizzle;
- internal int EXT_timer_query;
- internal int EXT_transform_feedback;
- internal int EXT_vertex_array;
- internal int EXT_vertex_array_bgra;
- internal int EXT_vertex_attrib_64bit;
- internal int EXT_vertex_shader;
- internal int EXT_vertex_weighting;
- internal int EXT_win32_keyed_mutex;
- internal int EXT_window_rectangles;
- internal int EXT_x11_sync_object;
- internal int GREMEDY_frame_terminator;
- internal int GREMEDY_string_marker;
- internal int HP_convolution_border_modes;
- internal int HP_image_transform;
- internal int HP_occlusion_test;
- internal int HP_texture_lighting;
- internal int IBM_cull_vertex;
- internal int IBM_multimode_draw_arrays;
- internal int IBM_rasterpos_clip;
- internal int IBM_static_data;
- internal int IBM_texture_mirrored_repeat;
- internal int IBM_vertex_array_lists;
- internal int INGR_blend_func_separate;
- internal int INGR_color_clamp;
- internal int INGR_interlace_read;
- internal int INTEL_blackhole_render;
- internal int INTEL_conservative_rasterization;
- internal int INTEL_fragment_shader_ordering;
- internal int INTEL_framebuffer_CMAA;
- internal int INTEL_map_texture;
- internal int INTEL_parallel_arrays;
- internal int INTEL_performance_query;
- internal int KHR_blend_equation_advanced;
- internal int KHR_blend_equation_advanced_coherent;
- internal int KHR_context_flush_control;
- internal int KHR_debug;
- internal int KHR_no_error;
- internal int KHR_parallel_shader_compile;
- internal int KHR_robust_buffer_access_behavior;
- internal int KHR_robustness;
- internal int KHR_shader_subgroup;
- internal int KHR_texture_compression_astc_hdr;
- internal int KHR_texture_compression_astc_ldr;
- internal int KHR_texture_compression_astc_sliced_3d;
- internal int MESAX_texture_stack;
- internal int MESA_framebuffer_flip_x;
- internal int MESA_framebuffer_flip_y;
- internal int MESA_framebuffer_swap_xy;
- internal int MESA_pack_invert;
- internal int MESA_program_binary_formats;
- internal int MESA_resize_buffers;
- internal int MESA_shader_integer_functions;
- internal int MESA_tile_raster_order;
- internal int MESA_window_pos;
- internal int MESA_ycbcr_texture;
- internal int NVX_blend_equation_advanced_multi_draw_buffers;
- internal int NVX_conditional_render;
- internal int NVX_gpu_memory_info;
- internal int NVX_gpu_multicast2;
- internal int NVX_linked_gpu_multicast;
- internal int NVX_progress_fence;
- internal int NV_alpha_to_coverage_dither_control;
- internal int NV_bindless_multi_draw_indirect;
- internal int NV_bindless_multi_draw_indirect_count;
- internal int NV_bindless_texture;
- internal int NV_blend_equation_advanced;
- internal int NV_blend_equation_advanced_coherent;
- internal int NV_blend_minmax_factor;
- internal int NV_blend_square;
- internal int NV_clip_space_w_scaling;
- internal int NV_command_list;
- internal int NV_compute_program5;
- internal int NV_compute_shader_derivatives;
- internal int NV_conditional_render;
- internal int NV_conservative_raster;
- internal int NV_conservative_raster_dilate;
- internal int NV_conservative_raster_pre_snap;
- internal int NV_conservative_raster_pre_snap_triangles;
- internal int NV_conservative_raster_underestimation;
- internal int NV_copy_depth_to_color;
- internal int NV_copy_image;
- internal int NV_deep_texture3D;
- internal int NV_depth_buffer_float;
- internal int NV_depth_clamp;
- internal int NV_draw_texture;
- internal int NV_draw_vulkan_image;
- internal int NV_evaluators;
- internal int NV_explicit_multisample;
- internal int NV_fence;
- internal int NV_fill_rectangle;
- internal int NV_float_buffer;
- internal int NV_fog_distance;
- internal int NV_fragment_coverage_to_color;
- internal int NV_fragment_program;
- internal int NV_fragment_program2;
- internal int NV_fragment_program4;
- internal int NV_fragment_program_option;
- internal int NV_fragment_shader_barycentric;
- internal int NV_fragment_shader_interlock;
- internal int NV_framebuffer_mixed_samples;
- internal int NV_framebuffer_multisample_coverage;
- internal int NV_geometry_program4;
- internal int NV_geometry_shader4;
- internal int NV_geometry_shader_passthrough;
- internal int NV_gpu_multicast;
- internal int NV_gpu_program4;
- internal int NV_gpu_program5;
- internal int NV_gpu_program5_mem_extended;
- internal int NV_gpu_shader5;
- internal int NV_half_float;
- internal int NV_internalformat_sample_query;
- internal int NV_light_max_exponent;
- internal int NV_memory_attachment;
- internal int NV_memory_object_sparse;
- internal int NV_mesh_shader;
- internal int NV_multisample_coverage;
- internal int NV_multisample_filter_hint;
- internal int NV_occlusion_query;
- internal int NV_packed_depth_stencil;
- internal int NV_parameter_buffer_object;
- internal int NV_parameter_buffer_object2;
- internal int NV_path_rendering;
- internal int NV_path_rendering_shared_edge;
- internal int NV_pixel_data_range;
- internal int NV_point_sprite;
- internal int NV_present_video;
- internal int NV_primitive_restart;
- internal int NV_primitive_shading_rate;
- internal int NV_query_resource;
- internal int NV_query_resource_tag;
- internal int NV_register_combiners;
- internal int NV_register_combiners2;
- internal int NV_representative_fragment_test;
- internal int NV_robustness_video_memory_purge;
- internal int NV_sample_locations;
- internal int NV_sample_mask_override_coverage;
- internal int NV_scissor_exclusive;
- internal int NV_shader_atomic_counters;
- internal int NV_shader_atomic_float;
- internal int NV_shader_atomic_float64;
- internal int NV_shader_atomic_fp16_vector;
- internal int NV_shader_atomic_int64;
- internal int NV_shader_buffer_load;
- internal int NV_shader_buffer_store;
- internal int NV_shader_storage_buffer_object;
- internal int NV_shader_subgroup_partitioned;
- internal int NV_shader_texture_footprint;
- internal int NV_shader_thread_group;
- internal int NV_shader_thread_shuffle;
- internal int NV_shading_rate_image;
- internal int NV_stereo_view_rendering;
- internal int NV_tessellation_program5;
- internal int NV_texgen_emboss;
- internal int NV_texgen_reflection;
- internal int NV_texture_barrier;
- internal int NV_texture_compression_vtc;
- internal int NV_texture_env_combine4;
- internal int NV_texture_expand_normal;
- internal int NV_texture_multisample;
- internal int NV_texture_rectangle;
- internal int NV_texture_rectangle_compressed;
- internal int NV_texture_shader;
- internal int NV_texture_shader2;
- internal int NV_texture_shader3;
- internal int NV_timeline_semaphore;
- internal int NV_transform_feedback;
- internal int NV_transform_feedback2;
- internal int NV_uniform_buffer_std430_layout;
- internal int NV_uniform_buffer_unified_memory;
- internal int NV_vdpau_interop;
- internal int NV_vdpau_interop2;
- internal int NV_vertex_array_range;
- internal int NV_vertex_array_range2;
- internal int NV_vertex_attrib_integer_64bit;
- internal int NV_vertex_buffer_unified_memory;
- internal int NV_vertex_program;
- internal int NV_vertex_program1_1;
- internal int NV_vertex_program2;
- internal int NV_vertex_program2_option;
- internal int NV_vertex_program3;
- internal int NV_vertex_program4;
- internal int NV_video_capture;
- internal int NV_viewport_array2;
- internal int NV_viewport_swizzle;
- internal int OES_byte_coordinates;
- internal int OES_compressed_paletted_texture;
- internal int OES_fixed_point;
- internal int OES_query_matrix;
- internal int OES_read_format;
- internal int OES_single_precision;
- internal int OML_interlace;
- internal int OML_resample;
- internal int OML_subsample;
- internal int OVR_multiview;
- internal int OVR_multiview2;
- internal int PGI_misc_hints;
- internal int PGI_vertex_hints;
- internal int REND_screen_coordinates;
- internal int S3_s3tc;
- internal int SGIS_detail_texture;
- internal int SGIS_fog_function;
- internal int SGIS_generate_mipmap;
- internal int SGIS_multisample;
- internal int SGIS_pixel_texture;
- internal int SGIS_point_line_texgen;
- internal int SGIS_point_parameters;
- internal int SGIS_sharpen_texture;
- internal int SGIS_texture4D;
- internal int SGIS_texture_border_clamp;
- internal int SGIS_texture_color_mask;
- internal int SGIS_texture_edge_clamp;
- internal int SGIS_texture_filter4;
- internal int SGIS_texture_lod;
- internal int SGIS_texture_select;
- internal int SGIX_async;
- internal int SGIX_async_histogram;
- internal int SGIX_async_pixel;
- internal int SGIX_blend_alpha_minmax;
- internal int SGIX_calligraphic_fragment;
- internal int SGIX_clipmap;
- internal int SGIX_convolution_accuracy;
- internal int SGIX_depth_pass_instrument;
- internal int SGIX_depth_texture;
- internal int SGIX_flush_raster;
- internal int SGIX_fog_offset;
- internal int SGIX_fragment_lighting;
- internal int SGIX_framezoom;
- internal int SGIX_igloo_interface;
- internal int SGIX_instruments;
- internal int SGIX_interlace;
- internal int SGIX_ir_instrument1;
- internal int SGIX_list_priority;
- internal int SGIX_pixel_texture;
- internal int SGIX_pixel_tiles;
- internal int SGIX_polynomial_ffd;
- internal int SGIX_reference_plane;
- internal int SGIX_resample;
- internal int SGIX_scalebias_hint;
- internal int SGIX_shadow;
- internal int SGIX_shadow_ambient;
- internal int SGIX_sprite;
- internal int SGIX_subsample;
- internal int SGIX_tag_sample_buffer;
- internal int SGIX_texture_add_env;
- internal int SGIX_texture_coordinate_clamp;
- internal int SGIX_texture_lod_bias;
- internal int SGIX_texture_multi_buffer;
- internal int SGIX_texture_scale_bias;
- internal int SGIX_vertex_preclip;
- internal int SGIX_ycrcb;
- internal int SGIX_ycrcb_subsample;
- internal int SGIX_ycrcba;
- internal int SGI_color_matrix;
- internal int SGI_color_table;
- internal int SGI_texture_color_table;
- internal int SUNX_constant_data;
- internal int SUN_convolution_border_modes;
- internal int SUN_global_alpha;
- internal int SUN_mesh_array;
- internal int SUN_slice_accum;
- internal int SUN_triangle_list;
- internal int SUN_vertex;
- internal int WIN_phong_shading;
- internal int WIN_specular_fog;
-
- #endregion
-
#region glapi
[MarshalAs(UnmanagedType.FunctionPtr)] internal glAccumxOES AccumxOES;
@@ -6431,7 +5138,6 @@ namespace StgSharp.Graphics
#endregion
-
internal IntPtr glad_loader_handler;
}
}
diff --git a/源代码/StgSharp/Graphics/Define/glApiDefine.cs b/源代码/StgSharp/Graphics/Define/glApiDefine.cs
index c09a4f62..af5b739e 100644
--- a/源代码/StgSharp/Graphics/Define/glApiDefine.cs
+++ b/源代码/StgSharp/Graphics/Define/glApiDefine.cs
@@ -891,7 +891,7 @@ namespace StgSharp.Graphics
[UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate void glGetShadingRateSampleLocationivNV(uint rate, uint samples, uint index, int* location);
[UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate void glGetSharpenTexFuncSGIS(uint target, float* points);
[UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate ushort glGetStageIndexNV(uint shadertype);
- [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate string glGetString(uint name);
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate IntPtr glGetString(uint name);
[UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate byte* glGetStringi(uint name, uint index);
[UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate uint glGetSubroutineIndex(uint program, uint shadertype, byte* name);
[UnmanagedFunctionPointer(CallingConvention.StdCall)] internal unsafe delegate int glGetSubroutineUniformLocation(uint program, uint shadertype, byte* name);
diff --git a/源代码/StgSharp/Graphics/Form.cs b/源代码/StgSharp/Graphics/Form.cs
index 00621e1b..25a4138f 100644
--- a/源代码/StgSharp/Graphics/Form.cs
+++ b/源代码/StgSharp/Graphics/Form.cs
@@ -52,9 +52,8 @@ namespace StgSharp.Graphics
~Form()
{
- InternalIO.InternalUnloadGLcontext(glContext);
GL.gl = default;
- Marshal.FreeHGlobal((IntPtr)glContext);
+ Marshal.FreeHGlobal((IntPtr)contextID);
}
public int Height
@@ -108,13 +107,15 @@ namespace StgSharp.Graphics
{
windowID = windowPtr;
}
-
- IntPtr ptr = Marshal.AllocHGlobal(sizeof(GLcontext));
- glContext = (GLcontext*)ptr;
-
+ glContext = new GLcontext();
+ IntPtr ptr = Marshal.AllocHGlobal(sizeof(GLcontextIO));
+ contextID = (GLcontextIO*)ptr;
+ *contextID = new GLcontextIO();
+ InternalIO.InternalWriteLog("Successfully create a context binded to current form. " +
+ $"Its ID is {(ulong)ptr}", LogType.Info);
}
GL.gl = glContext;
- InternalIO.InternalSetCurrentGLContext(windowID, glContext);
+ InternalIO.InternalSetCurrentGLContext(windowID, (IntPtr)contextID);
}
///
diff --git a/源代码/StgSharp/Graphics/GL/Buffer/EBO.cs b/源代码/StgSharp/Graphics/GL/Buffer/EBO.cs
index 6109d2e8..389741f3 100644
--- a/源代码/StgSharp/Graphics/GL/Buffer/EBO.cs
+++ b/源代码/StgSharp/Graphics/GL/Buffer/EBO.cs
@@ -16,7 +16,7 @@ namespace StgSharp.Graphics
_bufferID = new uint[n];
fixed (uint* id = _bufferID)
{
- GL.gl->GenBuffers(n, id);
+ GL.gl.GenBuffers(n, id);
}
}
@@ -27,14 +27,14 @@ namespace StgSharp.Graphics
public void Bind(int index)
{
- GL.gl->BindBuffer(GLconst.ELEMENT_ARRAY_BUFFER, _bufferID[index]);
+ GL.gl.BindBuffer(GLconst.ELEMENT_ARRAY_BUFFER, _bufferID[index]);
}
public void SetData(int index, T[] bufferArray, BufferUsage usage)
where T : struct, IConvertible
{
- GL.gl->BindBuffer(GLconst.ELEMENT_ARRAY_BUFFER, _bufferID[index]);
+ GL.gl.BindBuffer(GLconst.ELEMENT_ARRAY_BUFFER, _bufferID[index]);
GL.SetBufferData(BufferType.ELEMENT_ARRAY_BUFFER, bufferArray, usage);
}
@@ -42,7 +42,7 @@ namespace StgSharp.Graphics
{
fixed (uint* id = _bufferID)
{
- GL.gl->DeleteBuffers(1, id);
+ GL.gl.DeleteBuffers(1, id);
}
}
diff --git a/源代码/StgSharp/Graphics/GL/Buffer/Shader.cs b/源代码/StgSharp/Graphics/GL/Buffer/Shader.cs
index 11e5caf0..ea47fafb 100644
--- a/源代码/StgSharp/Graphics/GL/Buffer/Shader.cs
+++ b/源代码/StgSharp/Graphics/GL/Buffer/Shader.cs
@@ -13,19 +13,19 @@ namespace StgSharp.Graphics
public unsafe Shader()
{
- programID = GL.gl->CreateProgram();
+ programID = GL.gl.CreateProgram();
}
public unsafe void CompileVertexShader(string shaderCode)
{
vertexShaderID = GL.CompileShader(shaderCode, ShaderType.VERTEX);
- GL.gl->AttachShader(programID, vertexShaderID);
+ GL.gl.AttachShader(programID, vertexShaderID);
}
public unsafe void CompileFragmentShader(string shaderCode)
{
fragmentShaderID = GL.CompileShader(shaderCode, ShaderType.FRAGMENT);
- GL.gl->AttachShader(programID, fragmentShaderID);
+ GL.gl.AttachShader(programID, fragmentShaderID);
}
public void Link()
@@ -50,7 +50,7 @@ namespace StgSharp.Graphics
public unsafe void Use()
{
- GL.gl->UseProgram(programID);
+ GL.gl.UseProgram(programID);
}
}
diff --git a/源代码/StgSharp/Graphics/GL/Buffer/VAO.cs b/源代码/StgSharp/Graphics/GL/Buffer/VAO.cs
index 68dcfe38..cf603090 100644
--- a/源代码/StgSharp/Graphics/GL/Buffer/VAO.cs
+++ b/源代码/StgSharp/Graphics/GL/Buffer/VAO.cs
@@ -13,7 +13,7 @@ namespace StgSharp.Graphics
_bufferID = new uint[n];
fixed (uint* id = _bufferID)
{
- GL.gl->GenVertexArrays(n, id);
+ GL.gl.GenVertexArrays(n, id);
}
}
@@ -27,21 +27,21 @@ namespace StgSharp.Graphics
public void Bind(int index)
{
- GL.gl->BindVertexArray(_bufferID[index]);
+ GL.gl.BindVertexArray(_bufferID[index]);
}
public void Dispose()
{
fixed (uint* id = _bufferID)
{
- GL.gl->DeleteVertexArrays(_bufferID.Length, id);
+ GL.gl.DeleteVertexArrays(_bufferID.Length, id);
}
}
public void SetVertexAttribute(uint index, int vertexLength, Type dataType, bool isNomalized, int stride, int pointer)
{
- GL.gl->VertexAttribPointer(
+ GL.gl.VertexAttribPointer(
index, vertexLength, InternalIO.GLtype[dataType],
isNomalized,
stride, (void*)pointer);
diff --git a/源代码/StgSharp/Graphics/GL/Buffer/VBO.cs b/源代码/StgSharp/Graphics/GL/Buffer/VBO.cs
index e84b9fa7..342996f0 100644
--- a/源代码/StgSharp/Graphics/GL/Buffer/VBO.cs
+++ b/源代码/StgSharp/Graphics/GL/Buffer/VBO.cs
@@ -17,7 +17,7 @@ namespace StgSharp.Graphics
_bufferID = new uint[n];
fixed (uint* ptr = _bufferID)
{
- GL.gl->GenBuffers(n, ptr);
+ GL.gl.GenBuffers(n, ptr);
}
}
@@ -31,19 +31,19 @@ namespace StgSharp.Graphics
///
public static void Unbind()
{
- GL.gl->BindBuffer(GLconst.ARRAY_BUFFER, 0);
+ GL.gl.BindBuffer(GLconst.ARRAY_BUFFER, 0);
}
public void Bind(int index)
{
- GL.gl->BindBuffer(GLconst.ARRAY_BUFFER, _bufferID[index]);
+ GL.gl.BindBuffer(GLconst.ARRAY_BUFFER, _bufferID[index]);
}
public void Dispose()
{
fixed (uint* id = _bufferID)
{
- GL.gl->DeleteBuffers(_bufferID.Length, id);
+ GL.gl.DeleteBuffers(_bufferID.Length, id);
}
}
@@ -55,14 +55,14 @@ namespace StgSharp.Graphics
///
public void SetData(int index, T bufferData, BufferUsage usage) where T : IMat
{
- GL.gl->BindBuffer((int)BufferType.ARRAY_BUFFER, _bufferID[index]);
+ GL.gl.BindBuffer((int)BufferType.ARRAY_BUFFER, _bufferID[index]);
GL.SetBufferData(BufferType.ARRAY_BUFFER, bufferData, usage);
}
public void SetDataArray(int index, T[] bufferArray, BufferUsage usage) where T : struct, IConvertible
{
- GL.gl->BindBuffer(GLconst.ARRAY_BUFFER, _bufferID[index]);
+ GL.gl.BindBuffer(GLconst.ARRAY_BUFFER, _bufferID[index]);
GL.SetBufferData(BufferType.ARRAY_BUFFER, bufferArray, usage);
}
}
diff --git a/源代码/StgSharp/Graphics/GL/Buffer/texture.cs b/源代码/StgSharp/Graphics/GL/Buffer/texture.cs
index d3abf0a6..930e295c 100644
--- a/源代码/StgSharp/Graphics/GL/Buffer/texture.cs
+++ b/源代码/StgSharp/Graphics/GL/Buffer/texture.cs
@@ -15,13 +15,13 @@ namespace StgSharp.Graphics
textureId = new uint[n];
fixed (uint* id = textureId)
{
- GL.gl->GenTextures(n, id);
+ GL.gl.GenTextures(n, id);
}
}
public void Bind(int index)
{
- GL.gl->BindTexture(GLconst.PROXY_TEXTURE_2D, textureId[index]);
+ GL.gl.BindTexture(GLconst.PROXY_TEXTURE_2D, textureId[index]);
}
}
diff --git a/源代码/StgSharp/Graphics/GL/GL.cs b/源代码/StgSharp/Graphics/GL/GL.cs
index ff225a4a..c1c42353 100644
--- a/源代码/StgSharp/Graphics/GL/GL.cs
+++ b/源代码/StgSharp/Graphics/GL/GL.cs
@@ -9,9 +9,7 @@ namespace StgSharp.Graphics
{
public static unsafe partial class GL
{
- internal unsafe static GLcontext* gl;
-
-
+ internal unsafe static GLcontext gl;
///
/// sets the framebuffer resize callback of the specified ,
@@ -38,7 +36,7 @@ namespace StgSharp.Graphics
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static unsafe void ClearColor(float R, float G, float B, float A)
{
- ClearColor(R, G, B, A);
+ gl.ClearColor(R, G, B, A);
}
///
@@ -130,7 +128,7 @@ namespace StgSharp.Graphics
public static unsafe uint CreatGraphicProgram()
{
- return gl->CreateProgram();
+ return gl.CreateProgram();
}
@@ -156,7 +154,7 @@ namespace StgSharp.Graphics
LogType.Error);
return;
}
- gl->DrawElements((uint)mode, count, a, (void*)ptr);
+ gl.DrawElements((uint)mode, count, a, (void*)ptr);
}
@@ -192,7 +190,7 @@ namespace StgSharp.Graphics
public static unsafe void SetBufferData(BufferType bufferType, T bufferData, BufferUsage usage) where T : IMat
{
int size = sizeof(T);
- gl->BufferData(
+ gl.BufferData(
(uint)bufferType,
size,
&bufferData,
@@ -202,14 +200,14 @@ namespace StgSharp.Graphics
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static unsafe void ClearGraphicError()
{
- while (gl->GetError() != 0) { }
+ while (gl.GetError() != 0) { }
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static unsafe void GetGraphicError()
{
string error = null;
- uint code = gl->GetError();
+ uint code = gl.GetError();
while (code != 0)
{
error += $"OpenGL error {code}\n";
@@ -240,7 +238,7 @@ namespace StgSharp.Graphics
int size = bufferArray.Length * Marshal.SizeOf(typeof(T));
fixed (void* bufferPtr = &bufferArray[0])
- gl->BufferData(
+ gl.BufferData(
(uint)bufferType,
size,
bufferPtr,
diff --git a/源代码/StgSharp/Graphics/GL/GLloader.cs b/源代码/StgSharp/Graphics/GL/GLloader.cs
index 41f15d77..a0bbadfe 100644
--- a/源代码/StgSharp/Graphics/GL/GLloader.cs
+++ b/源代码/StgSharp/Graphics/GL/GLloader.cs
@@ -9,87 +9,11 @@ namespace StgSharp.Graphics
{
public unsafe partial class Form
{
- internal GLcontext* glContext;
+ internal GLcontext glContext;
+ internal GLcontextIO* contextID;
private int missingAPIcount = 0;
private int problemAPIcount = 0;
-
- public unsafe IntPtr LoadGLfunc(string name)
- {
- string log = $"Attempt to load ";
- IntPtr ret = InternalIO.glfw.GetProcAddress(name);
- if (ret == default)
- {
- InternalIO.InternalAppendLog(
- $"Cannot load OpenGL api called {name}, this api may not exist or supported.");
- missingAPIcount++;
- return ret;
- }
- return ret;
- }
-
-
- public unsafe void LoadGlapi()
- {
- InternalIO.InternalLoaderLoadGLapi(glContext, LoadGLfunc);
-
-
- //check out if all api is converted correctely.
- FieldInfo[] target = typeof(GLcontext).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
- string problemLog = "Have problem in converting the fallowing GL API to C# delegates:\n";
- foreach (FieldInfo item in target)
- {
- if (item.FieldType.Name.Contains("PFNG"))
- {
- if (item.GetValue(*glContext) == null)
- {
- problemLog += item.Name + ",";
- problemAPIcount++;
- }
- }
- }
- InternalIO.InternalWriteLog(problemLog, LogType.Error);
-
-
-
- if (problemAPIcount > missingAPIcount)
- {
- InternalIO.InternalWriteLog("Attempt to reload GL APIs", LogType.Info);
-
- //use IntPtr as interface
- TypedReference contextref = __makeref(*glContext);
- GLcontextIO* iopack = (GLcontextIO*)glContext;
- TypedReference iosource = __makeref(*iopack);
-
- foreach (FieldInfo item in target)
- {
- if (item.FieldType.IsSubclassOf(typeof(Delegate))
- && item.GetValueDirect(contextref) == null)
- {
- IntPtr proc = default;
- proc = LoadGLfunc("gl" + item.Name);
- if (proc != IntPtr.Zero)
- {
- try
- {
- Delegate dele = Marshal.GetDelegateForFunctionPointer(proc, item.FieldType);
- item.SetValueDirect(contextref, dele);
- }
- catch (Exception ex)
- {
- InternalIO.InternalWriteLog(
- $"{ex.Message}",
- LogType.Error);
- }
- }
- }
- }
- }
- GL.gl = glContext;
- }
-
-
-
}
}
diff --git a/源代码/StgSharp/Graphics/GL/framework.cs b/源代码/StgSharp/Graphics/GL/framework.cs
index 61285137..8d71d9cc 100644
--- a/源代码/StgSharp/Graphics/GL/framework.cs
+++ b/源代码/StgSharp/Graphics/GL/framework.cs
@@ -3,11 +3,6 @@ using System.Collections.Generic;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-using System.Text;
-using static StgSharp.Graphics.GLFWlibrary;
-using static System.Net.Mime.MediaTypeNames;
-using System.Threading;
namespace StgSharp.Graphics
{
diff --git a/源代码/StgSharp/Graphics/GL/glApiManager.cs b/源代码/StgSharp/Graphics/GL/glApiManager.cs
index e35b881e..fad333d4 100644
--- a/源代码/StgSharp/Graphics/GL/glApiManager.cs
+++ b/源代码/StgSharp/Graphics/GL/glApiManager.cs
@@ -7,13 +7,10 @@ using System.Text;
namespace StgSharp.Graphics
{
- public static class glManager
+ public static partial class glManager
{
- private static string glExtensionList;
-
const int glExtension = 0x1f03;
const int glVersion = 0x1f02;
-
private static readonly string[] glBranch =
new string[] {
"OpenGL ES-CM ",
@@ -22,692 +19,29 @@ namespace StgSharp.Graphics
"OpenGL SC "
};
- #region mainversion
- private static bool core10;
- private static bool core11;
- private static bool core12;
- private static bool core13;
- private static bool core14;
- private static bool core15;
- private static bool core20;
- private static bool core21;
- private static bool core30;
- private static bool core31;
- private static bool core32;
- private static bool core33;
- private static bool core40;
- private static bool core41;
- private static bool core42;
- private static bool core43;
- private static bool core44;
- private static bool core45;
- private static bool core46;
+ private static string glExtensionList;
- #endregion
-
- #region extension
-
- private static bool _4DFX_multisample;
- private static bool _3DFX_tbuffer;
- private static bool _3DFX_texture_compression_FXT1;
- private static bool AMD_blend_minmax_factor;
- private static bool AMD_conservative_depth;
- private static bool AMD_debug_output;
- private static bool AMD_depth_clamp_separate;
- private static bool AMD_draw_buffers_blend;
- private static bool AMD_framebuffer_multisample_advanced;
- private static bool AMD_framebuffer_sample_positions;
- private static bool AMD_gcn_shader;
- private static bool AMD_gpu_shader_half_float;
- private static bool AMD_gpu_shader_int16;
- private static bool AMD_gpu_shader_int64;
- private static bool AMD_interleaved_elements;
- private static bool AMD_multi_draw_indirect;
- private static bool AMD_name_gen_delete;
- private static bool AMD_occlusion_query_event;
- private static bool AMD_performance_monitor;
- private static bool AMD_pinned_memory;
- private static bool AMD_query_buffer_object;
- private static bool AMD_sample_positions;
- private static bool AMD_seamless_cubemap_per_texture;
- private static bool AMD_shader_atomic_counter_ops;
- private static bool AMD_shader_ballot;
- private static bool AMD_shader_explicit_vertex_parameter;
- private static bool AMD_shader_gpu_shader_half_float_fetch;
- private static bool AMD_shader_image_load_store_lod;
- private static bool AMD_shader_stencil_export;
- private static bool AMD_shader_trinary_minmax;
- private static bool AMD_sparse_texture;
- private static bool AMD_stencil_operation_extended;
- private static bool AMD_texture_gather_bias_lod;
- private static bool AMD_texture_texture4;
- private static bool AMD_transform_feedback3_lines_triangles;
- private static bool AMD_transform_feedback4;
- private static bool AMD_vertex_shader_layer;
- private static bool AMD_vertex_shader_tessellator;
- private static bool AMD_vertex_shader_viewport_index;
- private static bool APPLE_aux_depth_stencil;
- private static bool APPLE_client_storage;
- private static bool APPLE_element_array;
- private static bool APPLE_fence;
- private static bool APPLE_float_pixels;
- private static bool APPLE_flush_buffer_range;
- private static bool APPLE_object_purgeable;
- private static bool APPLE_rgb_422;
- private static bool APPLE_row_bytes;
- private static bool APPLE_specular_vector;
- private static bool APPLE_texture_range;
- private static bool APPLE_transform_hint;
- private static bool APPLE_vertex_array_object;
- private static bool APPLE_vertex_array_range;
- private static bool APPLE_vertex_program_evaluators;
- private static bool APPLE_ycbcr_422;
- private static bool ARB_ES2_compatibility;
- private static bool ARB_ES3_1_compatibility;
- private static bool ARB_ES3_2_compatibility;
- private static bool ARB_ES3_compatibility;
- private static bool ARB_arrays_of_arrays;
- private static bool ARB_base_instance;
- private static bool ARB_bindless_texture;
- private static bool ARB_blend_func_extended;
- private static bool ARB_buffer_storage;
- private static bool ARB_cl_event;
- private static bool ARB_clear_buffer_object;
- private static bool ARB_clear_texture;
- private static bool ARB_clip_control;
- private static bool ARB_color_buffer_float;
- private static bool ARB_compatibility;
- private static bool ARB_compressed_texture_pixel_storage;
- private static bool ARB_compute_shader;
- private static bool ARB_compute_variable_group_size;
- private static bool ARB_conditional_render_inverted;
- private static bool ARB_conservative_depth;
- private static bool ARB_copy_buffer;
- private static bool ARB_copy_image;
- private static bool ARB_cull_distance;
- private static bool ARB_debug_output;
- private static bool ARB_depth_buffer_float;
- private static bool ARB_depth_clamp;
- private static bool ARB_depth_texture;
- private static bool ARB_derivative_control;
- private static bool ARB_direct_state_access;
- private static bool ARB_draw_buffers;
- private static bool ARB_draw_buffers_blend;
- private static bool ARB_draw_elements_base_vertex;
- private static bool ARB_draw_indirect;
- private static bool ARB_draw_instanced;
- private static bool ARB_enhanced_layouts;
- private static bool ARB_explicit_attrib_location;
- private static bool ARB_explicit_uniform_location;
- private static bool ARB_fragment_coord_conventions;
- private static bool ARB_fragment_layer_viewport;
- private static bool ARB_fragment_program;
- private static bool ARB_fragment_program_shadow;
- private static bool ARB_fragment_shader;
- private static bool ARB_fragment_shader_interlock;
- private static bool ARB_framebuffer_no_attachments;
- private static bool ARB_framebuffer_object;
- private static bool ARB_framebuffer_sRGB;
- private static bool ARB_geometry_shader4;
- private static bool ARB_get_program_binary;
- private static bool ARB_get_texture_sub_image;
- private static bool ARB_gl_spirv;
- private static bool ARB_gpu_shader5;
- private static bool ARB_gpu_shader_fp64;
- private static bool ARB_gpu_shader_int64;
- private static bool ARB_half_float_pixel;
- private static bool ARB_half_float_vertex;
- private static bool ARB_imaging;
- private static bool ARB_indirect_parameters;
- private static bool ARB_instanced_arrays;
- private static bool ARB_internalformat_query;
- private static bool ARB_internalformat_query2;
- private static bool ARB_invalidate_subdata;
- private static bool ARB_map_buffer_alignment;
- private static bool ARB_map_buffer_range;
- private static bool ARB_matrix_palette;
- private static bool ARB_multi_bind;
- private static bool ARB_multi_draw_indirect;
- private static bool ARB_multisample;
- private static bool ARB_multitexture;
- private static bool ARB_occlusion_query;
- private static bool ARB_occlusion_query2;
- private static bool ARB_parallel_shader_compile;
- private static bool ARB_pipeline_statistics_query;
- private static bool ARB_pixel_buffer_object;
- private static bool ARB_point_parameters;
- private static bool ARB_point_sprite;
- private static bool ARB_polygon_offset_clamp;
- private static bool ARB_post_depth_coverage;
- private static bool ARB_program_interface_query;
- private static bool ARB_provoking_vertex;
- private static bool ARB_query_buffer_object;
- private static bool ARB_robust_buffer_access_behavior;
- private static bool ARB_robustness;
- private static bool ARB_robustness_isolation;
- private static bool ARB_sample_locations;
- private static bool ARB_sample_shading;
- private static bool ARB_sampler_objects;
- private static bool ARB_seamless_cube_map;
- private static bool ARB_seamless_cubemap_per_texture;
- private static bool ARB_separate_shader_objects;
- private static bool ARB_shader_atomic_counter_ops;
- private static bool ARB_shader_atomic_counters;
- private static bool ARB_shader_ballot;
- private static bool ARB_shader_bit_encoding;
- private static bool ARB_shader_clock;
- private static bool ARB_shader_draw_parameters;
- private static bool ARB_shader_group_vote;
- private static bool ARB_shader_image_load_store;
- private static bool ARB_shader_image_size;
- private static bool ARB_shader_objects;
- private static bool ARB_shader_precision;
- private static bool ARB_shader_stencil_export;
- private static bool ARB_shader_storage_buffer_object;
- private static bool ARB_shader_subroutine;
- private static bool ARB_shader_texture_image_samples;
- private static bool ARB_shader_texture_lod;
- private static bool ARB_shader_viewport_layer_array;
- private static bool ARB_shading_language_100;
- private static bool ARB_shading_language_420pack;
- private static bool ARB_shading_language_include;
- private static bool ARB_shading_language_packing;
- private static bool ARB_shadow;
- private static bool ARB_shadow_ambient;
- private static bool ARB_sparse_buffer;
- private static bool ARB_sparse_texture;
- private static bool ARB_sparse_texture2;
- private static bool ARB_sparse_texture_clamp;
- private static bool ARB_spirv_extensions;
- private static bool ARB_stencil_texturing;
- private static bool ARB_sync;
- private static bool ARB_tessellation_shader;
- private static bool ARB_texture_barrier;
- private static bool ARB_texture_border_clamp;
- private static bool ARB_texture_buffer_object;
- private static bool ARB_texture_buffer_object_rgb32;
- private static bool ARB_texture_buffer_range;
- private static bool ARB_texture_compression;
- private static bool ARB_texture_compression_bptc;
- private static bool ARB_texture_compression_rgtc;
- private static bool ARB_texture_cube_map;
- private static bool ARB_texture_cube_map_array;
- private static bool ARB_texture_env_add;
- private static bool ARB_texture_env_combine;
- private static bool ARB_texture_env_crossbar;
- private static bool ARB_texture_env_dot3;
- private static bool ARB_texture_filter_anisotropic;
- private static bool ARB_texture_filter_minmax;
- private static bool ARB_texture_float;
- private static bool ARB_texture_gather;
- private static bool ARB_texture_mirror_clamp_to_edge;
- private static bool ARB_texture_mirrored_repeat;
- private static bool ARB_texture_multisample;
- private static bool ARB_texture_non_power_of_two;
- private static bool ARB_texture_query_levels;
- private static bool ARB_texture_query_lod;
- private static bool ARB_texture_rectangle;
- private static bool ARB_texture_rg;
- private static bool ARB_texture_rgb10_a2ui;
- private static bool ARB_texture_stencil8;
- private static bool ARB_texture_storage;
- private static bool ARB_texture_storage_multisample;
- private static bool ARB_texture_swizzle;
- private static bool ARB_texture_view;
- private static bool ARB_timer_query;
- private static bool ARB_transform_feedback2;
- private static bool ARB_transform_feedback3;
- private static bool ARB_transform_feedback_instanced;
- private static bool ARB_transform_feedback_overflow_query;
- private static bool ARB_transpose_matrix;
- private static bool ARB_uniform_buffer_object;
- private static bool ARB_vertex_array_bgra;
- private static bool ARB_vertex_array_object;
- private static bool ARB_vertex_attrib_64bit;
- private static bool ARB_vertex_attrib_binding;
- private static bool ARB_vertex_blend;
- private static bool ARB_vertex_buffer_object;
- private static bool ARB_vertex_program;
- private static bool ARB_vertex_shader;
- private static bool ARB_vertex_type_10f_11f_11f_rev;
- private static bool ARB_vertex_type_2_10_10_10_rev;
- private static bool ARB_viewport_array;
- private static bool ARB_window_pos;
- private static bool ATI_draw_buffers;
- private static bool ATI_element_array;
- private static bool ATI_envmap_bumpmap;
- private static bool ATI_fragment_shader;
- private static bool ATI_map_object_buffer;
- private static bool ATI_meminfo;
- private static bool ATI_pixel_format_float;
- private static bool ATI_pn_triangles;
- private static bool ATI_separate_stencil;
- private static bool ATI_text_fragment_shader;
- private static bool ATI_texture_env_combine3;
- private static bool ATI_texture_float;
- private static bool ATI_texture_mirror_once;
- private static bool ATI_vertex_array_object;
- private static bool ATI_vertex_attrib_array_object;
- private static bool ATI_vertex_streams;
- private static bool EXT_422_pixels;
- private static bool EXT_EGL_image_storage;
- private static bool EXT_EGL_sync;
- private static bool EXT_abgr;
- private static bool EXT_bgra;
- private static bool EXT_bindable_uniform;
- private static bool EXT_blend_color;
- private static bool EXT_blend_equation_separate;
- private static bool EXT_blend_func_separate;
- private static bool EXT_blend_logic_op;
- private static bool EXT_blend_minmax;
- private static bool EXT_blend_subtract;
- private static bool EXT_clip_volume_hint;
- private static bool EXT_cmyka;
- private static bool EXT_color_subtable;
- private static bool EXT_compiled_vertex_array;
- private static bool EXT_convolution;
- private static bool EXT_coordinate_frame;
- private static bool EXT_copy_texture;
- private static bool EXT_cull_vertex;
- private static bool EXT_debug_label;
- private static bool EXT_debug_marker;
- private static bool EXT_depth_bounds_test;
- private static bool EXT_direct_state_access;
- private static bool EXT_draw_buffers2;
- private static bool EXT_draw_instanced;
- private static bool EXT_draw_range_elements;
- private static bool EXT_external_buffer;
- private static bool EXT_fog_coord;
- private static bool EXT_framebuffer_blit;
- private static bool EXT_framebuffer_blit_layers;
- private static bool EXT_framebuffer_multisample;
- private static bool EXT_framebuffer_multisample_blit_scaled;
- private static bool EXT_framebuffer_object;
- private static bool EXT_framebuffer_sRGB;
- private static bool EXT_geometry_shader4;
- private static bool EXT_gpu_program_parameters;
- private static bool EXT_gpu_shader4;
- private static bool EXT_histogram;
- private static bool EXT_index_array_formats;
- private static bool EXT_index_func;
- private static bool EXT_index_material;
- private static bool EXT_index_texture;
- private static bool EXT_light_texture;
- private static bool EXT_memory_object;
- private static bool EXT_memory_object_fd;
- private static bool EXT_memory_object_win32;
- private static bool EXT_misc_attribute;
- private static bool EXT_multi_draw_arrays;
- private static bool EXT_multisample;
- private static bool EXT_multiview_tessellation_geometry_shader;
- private static bool EXT_multiview_texture_multisample;
- private static bool EXT_multiview_timer_query;
- private static bool EXT_packed_depth_stencil;
- private static bool EXT_packed_float;
- private static bool EXT_packed_pixels;
- private static bool EXT_paletted_texture;
- private static bool EXT_pixel_buffer_object;
- private static bool EXT_pixel_transform;
- private static bool EXT_pixel_transform_color_table;
- private static bool EXT_point_parameters;
- private static bool EXT_polygon_offset;
- private static bool EXT_polygon_offset_clamp;
- private static bool EXT_post_depth_coverage;
- private static bool EXT_provoking_vertex;
- private static bool EXT_raster_multisample;
- private static bool EXT_rescale_normal;
- private static bool EXT_secondary_color;
- private static bool EXT_semaphore;
- private static bool EXT_semaphore_fd;
- private static bool EXT_semaphore_win32;
- private static bool EXT_separate_shader_objects;
- private static bool EXT_separate_specular_color;
- private static bool EXT_shader_framebuffer_fetch;
- private static bool EXT_shader_framebuffer_fetch_non_coherent;
- private static bool EXT_shader_image_load_formatted;
- private static bool EXT_shader_image_load_store;
- private static bool EXT_shader_integer_mix;
- private static bool EXT_shader_samples_identical;
- private static bool EXT_shadow_funcs;
- private static bool EXT_shared_texture_palette;
- private static bool EXT_sparse_texture2;
- private static bool EXT_stencil_clear_tag;
- private static bool EXT_stencil_two_side;
- private static bool EXT_stencil_wrap;
- private static bool EXT_subtexture;
- private static bool EXT_texture;
- private static bool EXT_texture3D;
- private static bool EXT_texture_array;
- private static bool EXT_texture_buffer_object;
- private static bool EXT_texture_compression_latc;
- private static bool EXT_texture_compression_rgtc;
- private static bool EXT_texture_compression_s3tc;
- private static bool EXT_texture_cube_map;
- private static bool EXT_texture_env_add;
- private static bool EXT_texture_env_combine;
- private static bool EXT_texture_env_dot3;
- private static bool EXT_texture_filter_anisotropic;
- private static bool EXT_texture_filter_minmax;
- private static bool EXT_texture_integer;
- private static bool EXT_texture_lod_bias;
- private static bool EXT_texture_mirror_clamp;
- private static bool EXT_texture_object;
- private static bool EXT_texture_perturb_normal;
- private static bool EXT_texture_sRGB;
- private static bool EXT_texture_sRGB_R8;
- private static bool EXT_texture_sRGB_RG8;
- private static bool EXT_texture_sRGB_decode;
- private static bool EXT_texture_shadow_lod;
- private static bool EXT_texture_shared_exponent;
- private static bool EXT_texture_snorm;
- private static bool EXT_texture_storage;
- private static bool EXT_texture_swizzle;
- private static bool EXT_timer_query;
- private static bool EXT_transform_feedback;
- private static bool EXT_vertex_array;
- private static bool EXT_vertex_array_bgra;
- private static bool EXT_vertex_attrib_64bit;
- private static bool EXT_vertex_shader;
- private static bool EXT_vertex_weighting;
- private static bool EXT_win32_keyed_mutex;
- private static bool EXT_window_rectangles;
- private static bool EXT_x11_sync_object;
- private static bool GREMEDY_frame_terminator;
- private static bool GREMEDY_string_marker;
- private static bool HP_convolution_border_modes;
- private static bool HP_image_transform;
- private static bool HP_occlusion_test;
- private static bool HP_texture_lighting;
- private static bool IBM_cull_vertex;
- private static bool IBM_multimode_draw_arrays;
- private static bool IBM_rasterpos_clip;
- private static bool IBM_static_data;
- private static bool IBM_texture_mirrored_repeat;
- private static bool IBM_vertex_array_lists;
- private static bool INGR_blend_func_separate;
- private static bool INGR_color_clamp;
- private static bool INGR_interlace_read;
- private static bool INTEL_blackhole_render;
- private static bool INTEL_conservative_rasterization;
- private static bool INTEL_fragment_shader_ordering;
- private static bool INTEL_framebuffer_CMAA;
- private static bool INTEL_map_texture;
- private static bool INTEL_parallel_arrays;
- private static bool INTEL_performance_query;
- private static bool KHR_blend_equation_advanced;
- private static bool KHR_blend_equation_advanced_coherent;
- private static bool KHR_context_flush_control;
- private static bool KHR_debug;
- private static bool KHR_no_error;
- private static bool KHR_parallel_shader_compile;
- private static bool KHR_robust_buffer_access_behavior;
- private static bool KHR_robustness;
- private static bool KHR_shader_subgroup;
- private static bool KHR_texture_compression_astc_hdr;
- private static bool KHR_texture_compression_astc_ldr;
- private static bool KHR_texture_compression_astc_sliced_3d;
- private static bool MESAX_texture_stack;
- private static bool MESA_framebuffer_flip_x;
- private static bool MESA_framebuffer_flip_y;
- private static bool MESA_framebuffer_swap_xy;
- private static bool MESA_pack_invert;
- private static bool MESA_program_binary_formats;
- private static bool MESA_resize_buffers;
- private static bool MESA_shader_integer_functions;
- private static bool MESA_tile_raster_order;
- private static bool MESA_window_pos;
- private static bool MESA_ycbcr_texture;
- private static bool NVX_blend_equation_advanced_multi_draw_buffers;
- private static bool NVX_conditional_render;
- private static bool NVX_gpu_memory_info;
- private static bool NVX_gpu_multicast2;
- private static bool NVX_linked_gpu_multicast;
- private static bool NVX_progress_fence;
- private static bool NV_alpha_to_coverage_dither_control;
- private static bool NV_bindless_multi_draw_indirect;
- private static bool NV_bindless_multi_draw_indirect_count;
- private static bool NV_bindless_texture;
- private static bool NV_blend_equation_advanced;
- private static bool NV_blend_equation_advanced_coherent;
- private static bool NV_blend_minmax_factor;
- private static bool NV_blend_square;
- private static bool NV_clip_space_w_scaling;
- private static bool NV_command_list;
- private static bool NV_compute_program5;
- private static bool NV_compute_shader_derivatives;
- private static bool NV_conditional_render;
- private static bool NV_conservative_raster;
- private static bool NV_conservative_raster_dilate;
- private static bool NV_conservative_raster_pre_snap;
- private static bool NV_conservative_raster_pre_snap_triangles;
- private static bool NV_conservative_raster_underestimation;
- private static bool NV_copy_depth_to_color;
- private static bool NV_copy_image;
- private static bool NV_deep_texture3D;
- private static bool NV_depth_buffer_float;
- private static bool NV_depth_clamp;
- private static bool NV_draw_texture;
- private static bool NV_draw_vulkan_image;
- private static bool NV_evaluators;
- private static bool NV_explicit_multisample;
- private static bool NV_fence;
- private static bool NV_fill_rectangle;
- private static bool NV_float_buffer;
- private static bool NV_fog_distance;
- private static bool NV_fragment_coverage_to_color;
- private static bool NV_fragment_program;
- private static bool NV_fragment_program2;
- private static bool NV_fragment_program4;
- private static bool NV_fragment_program_option;
- private static bool NV_fragment_shader_barycentric;
- private static bool NV_fragment_shader_interlock;
- private static bool NV_framebuffer_mixed_samples;
- private static bool NV_framebuffer_multisample_coverage;
- private static bool NV_geometry_program4;
- private static bool NV_geometry_shader4;
- private static bool NV_geometry_shader_passthrough;
- private static bool NV_gpu_multicast;
- private static bool NV_gpu_program4;
- private static bool NV_gpu_program5;
- private static bool NV_gpu_program5_mem_extended;
- private static bool NV_gpu_shader5;
- private static bool NV_half_float;
- private static bool NV_internalformat_sample_query;
- private static bool NV_light_max_exponent;
- private static bool NV_memory_attachment;
- private static bool NV_memory_object_sparse;
- private static bool NV_mesh_shader;
- private static bool NV_multisample_coverage;
- private static bool NV_multisample_filter_hint;
- private static bool NV_occlusion_query;
- private static bool NV_packed_depth_stencil;
- private static bool NV_parameter_buffer_object;
- private static bool NV_parameter_buffer_object2;
- private static bool NV_path_rendering;
- private static bool NV_path_rendering_shared_edge;
- private static bool NV_pixel_data_range;
- private static bool NV_point_sprite;
- private static bool NV_present_video;
- private static bool NV_primitive_restart;
- private static bool NV_primitive_shading_rate;
- private static bool NV_query_resource;
- private static bool NV_query_resource_tag;
- private static bool NV_register_combiners;
- private static bool NV_register_combiners2;
- private static bool NV_representative_fragment_test;
- private static bool NV_robustness_video_memory_purge;
- private static bool NV_sample_locations;
- private static bool NV_sample_mask_override_coverage;
- private static bool NV_scissor_exclusive;
- private static bool NV_shader_atomic_counters;
- private static bool NV_shader_atomic_float;
- private static bool NV_shader_atomic_float64;
- private static bool NV_shader_atomic_fp16_vector;
- private static bool NV_shader_atomic_int64;
- private static bool NV_shader_buffer_load;
- private static bool NV_shader_buffer_store;
- private static bool NV_shader_storage_buffer_object;
- private static bool NV_shader_subgroup_partitioned;
- private static bool NV_shader_texture_footprint;
- private static bool NV_shader_thread_group;
- private static bool NV_shader_thread_shuffle;
- private static bool NV_shading_rate_image;
- private static bool NV_stereo_view_rendering;
- private static bool NV_tessellation_program5;
- private static bool NV_texgen_emboss;
- private static bool NV_texgen_reflection;
- private static bool NV_texture_barrier;
- private static bool NV_texture_compression_vtc;
- private static bool NV_texture_env_combine4;
- private static bool NV_texture_expand_normal;
- private static bool NV_texture_multisample;
- private static bool NV_texture_rectangle;
- private static bool NV_texture_rectangle_compressed;
- private static bool NV_texture_shader;
- private static bool NV_texture_shader2;
- private static bool NV_texture_shader3;
- private static bool NV_timeline_semaphore;
- private static bool NV_transform_feedback;
- private static bool NV_transform_feedback2;
- private static bool NV_uniform_buffer_std430_layout;
- private static bool NV_uniform_buffer_unified_memory;
- private static bool NV_vdpau_interop;
- private static bool NV_vdpau_interop2;
- private static bool NV_vertex_array_range;
- private static bool NV_vertex_array_range2;
- private static bool NV_vertex_attrib_integer_64bit;
- private static bool NV_vertex_buffer_unified_memory;
- private static bool NV_vertex_program;
- private static bool NV_vertex_program1_1;
- private static bool NV_vertex_program2;
- private static bool NV_vertex_program2_option;
- private static bool NV_vertex_program3;
- private static bool NV_vertex_program4;
- private static bool NV_video_capture;
- private static bool NV_viewport_array2;
- private static bool NV_viewport_swizzle;
- private static bool OES_byte_coordinates;
- private static bool OES_compressed_paletted_texture;
- private static bool OES_fixed_point;
- private static bool OES_query_matrix;
- private static bool OES_read_format;
- private static bool OES_single_precision;
- private static bool OML_interlace;
- private static bool OML_resample;
- private static bool OML_subsample;
- private static bool OVR_multiview;
- private static bool OVR_multiview2;
- private static bool PGI_misc_hints;
- private static bool PGI_vertex_hints;
- private static bool REND_screen_coordinates;
- private static bool S3_s3tc;
- private static bool SGIS_detail_texture;
- private static bool SGIS_fog_function;
- private static bool SGIS_generate_mipmap;
- private static bool SGIS_multisample;
- private static bool SGIS_pixel_texture;
- private static bool SGIS_point_line_texgen;
- private static bool SGIS_point_parameters;
- private static bool SGIS_sharpen_texture;
- private static bool SGIS_texture4D;
- private static bool SGIS_texture_border_clamp;
- private static bool SGIS_texture_color_mask;
- private static bool SGIS_texture_edge_clamp;
- private static bool SGIS_texture_filter4;
- private static bool SGIS_texture_lod;
- private static bool SGIS_texture_select;
- private static bool SGIX_async;
- private static bool SGIX_async_histogram;
- private static bool SGIX_async_pixel;
- private static bool SGIX_blend_alpha_minmax;
- private static bool SGIX_calligraphic_fragment;
- private static bool SGIX_clipmap;
- private static bool SGIX_convolution_accuracy;
- private static bool SGIX_depth_pass_instrument;
- private static bool SGIX_depth_texture;
- private static bool SGIX_flush_raster;
- private static bool SGIX_fog_offset;
- private static bool SGIX_fragment_lighting;
- private static bool SGIX_framezoom;
- private static bool SGIX_igloo_interface;
- private static bool SGIX_instruments;
- private static bool SGIX_interlace;
- private static bool SGIX_ir_instrument1;
- private static bool SGIX_list_priority;
- private static bool SGIX_pixel_texture;
- private static bool SGIX_pixel_tiles;
- private static bool SGIX_polynomial_ffd;
- private static bool SGIX_reference_plane;
- private static bool SGIX_resample;
- private static bool SGIX_scalebias_hint;
- private static bool SGIX_shadow;
- private static bool SGIX_shadow_ambient;
- private static bool SGIX_sprite;
- private static bool SGIX_subsample;
- private static bool SGIX_tag_sample_buffer;
- private static bool SGIX_texture_add_env;
- private static bool SGIX_texture_coordinate_clamp;
- private static bool SGIX_texture_lod_bias;
- private static bool SGIX_texture_multi_buffer;
- private static bool SGIX_texture_scale_bias;
- private static bool SGIX_vertex_preclip;
- private static bool SGIX_ycrcb;
- private static bool SGIX_ycrcb_subsample;
- private static bool SGIX_ycrcba;
- private static bool SGI_color_matrix;
- private static bool SGI_color_table;
- private static bool SGI_texture_color_table;
- private static bool SUNX_constant_data;
- private static bool SUN_convolution_border_modes;
- private static bool SUN_global_alpha;
- private static bool SUN_mesh_array;
- private static bool SUN_slice_accum;
- private static bool SUN_triangle_list;
- private static bool SUN_vertex;
- private static bool WIN_phong_shading;
- private static bool WIN_specular_fog;
-
-
- #endregion
-
- internal unsafe static string GetExtensions()
- {
- if ((ulong)GL.gl == 0)
- {
- return "";
- }
- return GL.gl->GetString(glExtension);
-
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- internal static T internalLoadAPI(GLfuncLoader load) where T : Delegate
- {
- try
- {
- IntPtr proc = load(typeof(T).Name);
- return Marshal.GetDelegateForFunctionPointer(proc);
- }
- catch (Exception ex)
- {
- InternalIO.InternalWriteLog(
- $"Failed to convert the api {typeof(T).Name}" + ex.Message, LogType.Warning);
- return null;
- }
- }
public static unsafe void LoadGLapi(Form form, GLfuncLoader loader)
{
- if (form.glContext->GetString != null)
+ if (form.contextID->GetString != IntPtr.Zero)
{
return;
}
IntPtr proc = IntPtr.Zero;
proc = loader("glGetString");
- form.glContext->GetString = internalLoadAPI(loader);
+ glGetString getString = Marshal.GetDelegateForFunctionPointer(proc);
+ form.glContext.GetString = getString;
+
+ string coreVersion;
+ if (form.glContext.GetString(glVersion) == IntPtr.Zero)
+ {
+ InternalIO.InternalWriteLog("Failed to call glGetString", LogType.Error);
+ }
+ coreVersion = Marshal.PtrToStringAnsi(form.glContext.GetString(glVersion));
+
- string coreVersion = form.glContext->GetString(glVersion);
foreach (string branch in glBranch)
{
if (coreVersion.Contains(branch))
@@ -716,39 +50,33 @@ namespace StgSharp.Graphics
}
}
string[] versionSep = coreVersion.Split('.');
- int mainVersion = int.Parse(versionSep[0]);
- int subVersion = int.Parse(versionSep[1]);
-
- #region checkCoreVersion
- if (mainVersion >= 1 && subVersion >= 0) core10 = true;
- if (mainVersion >= 1 && subVersion >= 1) core11 = true;
- if (mainVersion >= 1 && subVersion >= 2) core12 = true;
- if (mainVersion >= 1 && subVersion >= 3) core13 = true;
- if (mainVersion >= 1 && subVersion >= 4) core14 = true;
- if (mainVersion >= 1 && subVersion >= 5) core15 = true;
- if (mainVersion >= 2 && subVersion >= 0) core20 = true;
- if (mainVersion >= 2 && subVersion >= 1) core11 = true;
- if (mainVersion >= 3 && subVersion >= 0) core30 = true;
- if (mainVersion >= 3 && subVersion >= 1) core31 = true;
- if (mainVersion >= 3 && subVersion >= 2) core32 = true;
- if (mainVersion >= 3 && subVersion >= 3) core33 = true;
- if (mainVersion >= 4 && subVersion >= 0) core40 = true;
- if (mainVersion >= 4 && subVersion >= 1) core41 = true;
- if (mainVersion >= 4 && subVersion >= 2) core42 = true;
- if (mainVersion >= 4 && subVersion >= 3) core43 = true;
- if (mainVersion >= 4 && subVersion >= 4) core44 = true;
- if (mainVersion >= 4 && subVersion >= 5) core45 = true;
- if (mainVersion >= 4 && subVersion >= 6) core46 = true;
-
- InternalIO.InternalWriteLog("Find core OpenGL version.", LogType.Info);
-
- #endregion
+ int majorVersion = int.Parse(versionSep[0]);
+ int minorVersion = int.Parse(versionSep[1]);
+ CheckCoreVersion(majorVersion, minorVersion);
try
{
#region load_core_gl
- LoadGLcore10(form.glContext, loader);
+ LoadGLcore10(form.contextID, form.glContext, loader);
+ LoadGLcore11(form.contextID, form.glContext, loader);
+ LoadGLcore12(form.contextID, form.glContext, loader);
+ LoadGLcore13(form.contextID, form.glContext, loader);
+ LoadGLcore14(form.contextID, form.glContext, loader);
+ LoadGLcore15(form.contextID, form.glContext, loader);
+ LoadGLcore20(form.contextID, form.glContext, loader);
+ LoadGLcore21(form.contextID, form.glContext, loader);
+ LoadGLcore30(form.contextID, form.glContext, loader);
+ LoadGLcore31(form.contextID, form.glContext, loader);
+ LoadGLcore32(form.contextID, form.glContext, loader);
+ LoadGLcore33(form.contextID, form.glContext, loader);
+ LoadGLcore40(form.contextID, form.glContext, loader);
+ LoadGLcore41(form.contextID, form.glContext, loader);
+ LoadGLcore42(form.contextID, form.glContext, loader);
+ LoadGLcore43(form.contextID, form.glContext, loader);
+ LoadGLcore44(form.contextID, form.glContext, loader);
+ LoadGLcore45(form.contextID, form.glContext, loader);
+ LoadGLcore46(form.contextID, form.glContext, loader);
#endregion
}
@@ -757,12 +85,19 @@ namespace StgSharp.Graphics
if (ex.Message != "Final Version") throw;
}
- string extension = form.glContext->GetString(glExtension);
- if (extension == "")
+ IntPtr strPtr = form.glContext.GetString(glExtension);
+ string extension;
+ if (strPtr == IntPtr.Zero)
{
- InternalIO.InternalWriteLog("No GL extensions are found.", LogType.Info);
+ InternalIO.InternalWriteLog("No supported OpenGL extensions are found.", LogType.Info);
return;
}
+ else
+ {
+ extension = Marshal.PtrToStringAnsi(strPtr);
+ }
+ InternalIO.InternalWriteLog("No GL extensions are found.", LogType.Info);
+
List extensions =
extension.Split(" ").ToList();
@@ -1390,11 +725,84 @@ namespace StgSharp.Graphics
InternalIO.InternalWriteLog("Find OpenGL extensions.", LogType.Info);
+ }
+ ///
+ /// Get the function pointer of given OpenGL api name
+ ///
+ /// Name of the OpenGL api
+ /// The funtion pointer of the api in form of
+ public static IntPtr LoadGLfunc(string name)
+ {
+ IntPtr ret = InternalIO.glfw.GetProcAddress(name);
+ if (ret == default)
+ {
+ InternalIO.InternalAppendLog(
+ $"Cannot load OpenGL api called {name}, this api may not exist or supported.");
+ return ret;
+ }
+ return ret;
+ }
+
+
+ internal static void CheckCoreVersion(int majorVersion, int minorVersion)
+ {
+ if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 0)) core10 = true; else goto log;
+ if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 1)) core11 = true; else goto log;
+ if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 2)) core12 = true; else goto log;
+ if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 3)) core13 = true; else goto log;
+ if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 4)) core14 = true; else goto log;
+ if ((majorVersion >= 1) || (majorVersion == 1 && minorVersion == 5)) core15 = true; else goto log;
+ if ((majorVersion >= 2) || (majorVersion == 2 && minorVersion == 0)) core20 = true; else goto log;
+ if ((majorVersion >= 2) || (majorVersion == 2 && minorVersion == 1)) core21 = true; else goto log;
+ if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 0)) core30 = true; else goto log;
+ if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 1)) core31 = true; else goto log;
+ if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 2)) core32 = true; else goto log;
+ if ((majorVersion >= 3) || (majorVersion == 3 && minorVersion == 3)) core33 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 0)) core40 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 1)) core41 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 2)) core42 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 3)) core43 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 4)) core44 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 5)) core45 = true; else goto log;
+ if ((majorVersion >= 4) || (majorVersion == 4 && minorVersion == 6)) core46 = true; else goto log;
+
+ log:
+ {
+ InternalIO.InternalWriteLog("Find core OpenGL version.", LogType.Info);
+ return;
+ }
}
- internal static unsafe void LoadGLcore10(GLcontext* context, GLfuncLoader load)
+ internal unsafe static string GetExtensions()
+ {
+ if (GL.gl == null)
+ {
+ return "";
+ }
+ return Marshal.PtrToStringAnsi(
+ GL.gl.GetString(glExtension));
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ internal static T internalLoadAPI(IntPtr ptr) where T : Delegate
+ {
+ try
+ {
+ if (ptr == IntPtr.Zero) { return null; }
+ T func = Marshal.GetDelegateForFunctionPointer(ptr);
+ return func;
+ }
+ catch (Exception ex)
+ {
+ InternalIO.InternalWriteLog(
+ $"Failed to convert the api {typeof(T).Name}.\n" + ex.Message, LogType.Warning);
+ return default;
+ }
+ }
+
+ internal static unsafe void LoadGLcore10(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
{
if (!core10)
{
@@ -1402,77 +810,916 @@ namespace StgSharp.Graphics
throw new Exception("Final Version");
}
#region load
- context->BlendFunc = internalLoadAPI(load);
- context->Clear = internalLoadAPI(load);
- context->ClearColor = internalLoadAPI(load);
- context->ClearDepth = internalLoadAPI(load);
- context->ClearStencil = internalLoadAPI(load);
- context->ColorMask = internalLoadAPI(load);
- context->CullFace = internalLoadAPI(load);
- context->DepthFunc = internalLoadAPI(load);
- context->DepthMask = internalLoadAPI(load);
- context->DepthRange = internalLoadAPI(load);
- context->Disable = internalLoadAPI(load);
- context->DrawBuffer = internalLoadAPI(load);
- context->Enable = internalLoadAPI(load);
- context->Finish = internalLoadAPI(load);
- context->Flush = internalLoadAPI(load);
- context->FrontFace = internalLoadAPI(load);
- context->GetBooleanv = internalLoadAPI(load);
- context->GetDoublev = internalLoadAPI(load);
- context->GetError = internalLoadAPI(load);
- context->GetFloatv = internalLoadAPI(load);
- context->GetIntegerv = internalLoadAPI(load);
- context->GetString = internalLoadAPI(load);
- context->GetTexImage = internalLoadAPI(load);
- context->GetTexLevelParameterfv = internalLoadAPI(load);
- context->GetTexLevelParameteriv = internalLoadAPI(load);
- context->GetTexParameterfv = internalLoadAPI(load);
- context->GetTexParameteriv = internalLoadAPI(load);
- context->Hint = internalLoadAPI(load);
- context->IsEnabled = internalLoadAPI(load);
- context->LineWidth = internalLoadAPI(load);
- context->LogicOp = internalLoadAPI(load);
- context->PixelStoref = internalLoadAPI(load);
- context->PixelStorei = internalLoadAPI(load);
- context->PointSize = internalLoadAPI(load);
- context->PolygonMode = internalLoadAPI(load);
- context->ReadBuffer = internalLoadAPI(load);
- context->ReadPixels = internalLoadAPI(load);
- context->Scissor = internalLoadAPI(load);
- context->StencilFunc = internalLoadAPI(load);
- context->StencilMask = internalLoadAPI(load);
- context->StencilOp = internalLoadAPI(load);
- context->TexImage1D = internalLoadAPI(load);
- context->TexImage2D = internalLoadAPI(load);
- context->TexParameterf = internalLoadAPI(load);
- context->TexParameterfv = internalLoadAPI(load);
- context->TexParameteri = internalLoadAPI(load);
- context->TexParameteriv = internalLoadAPI(load);
- context->Viewport = internalLoadAPI(load);
+ contextPtr->BlendFunc = load("glBlendFunc"); context.BlendFunc = internalLoadAPI(contextPtr->BlendFunc);
+ contextPtr->Clear = load("glClear"); context.Clear = internalLoadAPI(contextPtr->Clear);
+ contextPtr->ClearColor = load("glClearColor"); context.ClearColor = internalLoadAPI(contextPtr->ClearColor);
+ contextPtr->ClearDepth = load("glClearDepth"); context.ClearDepth = internalLoadAPI(contextPtr->ClearDepth);
+ contextPtr->ClearStencil = load("glClearStencil"); context.ClearStencil = internalLoadAPI(contextPtr->ClearStencil);
+ contextPtr->ColorMask = load("glColorMask"); context.ColorMask = internalLoadAPI(contextPtr->ColorMask);
+ contextPtr->CullFace = load("glCullFace"); context.CullFace = internalLoadAPI(contextPtr->CullFace);
+ contextPtr->DepthFunc = load("glDepthFunc"); context.DepthFunc = internalLoadAPI(contextPtr->DepthFunc);
+ contextPtr->DepthMask = load("glDepthMask"); context.DepthMask = internalLoadAPI(contextPtr->DepthMask);
+ contextPtr->DepthRange = load("glDepthRange"); context.DepthRange = internalLoadAPI(contextPtr->DepthRange);
+ contextPtr->Disable = load("glDisable"); context.Disable = internalLoadAPI(contextPtr->Disable);
+ contextPtr->DrawBuffer = load("glDrawBuffer"); context.DrawBuffer = internalLoadAPI(contextPtr->DrawBuffer);
+ contextPtr->Enable = load("glEnable"); context.Enable = internalLoadAPI(contextPtr->Enable);
+ contextPtr->Finish = load("glFinish"); context.Finish = internalLoadAPI(contextPtr->Finish);
+ contextPtr->Flush = load("glFlush"); context.Flush = internalLoadAPI(contextPtr->Flush);
+ contextPtr->FrontFace = load("glFrontFace"); context.FrontFace = internalLoadAPI(contextPtr->FrontFace);
+ contextPtr->GetBooleanv = load("glGetBooleanv"); context.GetBooleanv = internalLoadAPI(contextPtr->GetBooleanv);
+ contextPtr->GetDoublev = load("glGetDoublev"); context.GetDoublev = internalLoadAPI(contextPtr->GetDoublev);
+ contextPtr->GetError = load("glGetError"); context.GetError = internalLoadAPI(contextPtr->GetError);
+ contextPtr->GetFloatv = load("glGetFloatv"); context.GetFloatv = internalLoadAPI(contextPtr->GetFloatv);
+ contextPtr->GetIntegerv = load("glGetIntegerv"); context.GetIntegerv = internalLoadAPI(contextPtr->GetIntegerv);
+ contextPtr->GetString = load("glGetString"); context.GetString = internalLoadAPI(contextPtr->GetString);
+ contextPtr->GetTexImage = load("glGetTexImage"); context.GetTexImage = internalLoadAPI(contextPtr->GetTexImage);
+ contextPtr->GetTexLevelParameterfv = load("glGetTexLevelParameterfv"); context.GetTexLevelParameterfv = internalLoadAPI(contextPtr->GetTexLevelParameterfv);
+ contextPtr->GetTexLevelParameteriv = load("glGetTexLevelParameteriv"); context.GetTexLevelParameteriv = internalLoadAPI(contextPtr->GetTexLevelParameteriv);
+ contextPtr->GetTexParameterfv = load("glGetTexParameterfv"); context.GetTexParameterfv = internalLoadAPI(contextPtr->GetTexParameterfv);
+ contextPtr->GetTexParameteriv = load("glGetTexParameteriv"); context.GetTexParameteriv = internalLoadAPI(contextPtr->GetTexParameteriv);
+ contextPtr->Hint = load("glHint"); context.Hint = internalLoadAPI(contextPtr->Hint);
+ contextPtr->IsEnabled = load("glIsEnabled"); context.IsEnabled = internalLoadAPI(contextPtr->IsEnabled);
+ contextPtr->LineWidth = load("glLineWidth"); context.LineWidth = internalLoadAPI(contextPtr->LineWidth);
+ contextPtr->LogicOp = load("glLogicOp"); context.LogicOp = internalLoadAPI(contextPtr->LogicOp);
+ contextPtr->PixelStoref = load("glPixelStoref"); context.PixelStoref = internalLoadAPI(contextPtr->PixelStoref);
+ contextPtr->PixelStorei = load("glPixelStorei"); context.PixelStorei = internalLoadAPI(contextPtr->PixelStorei);
+ contextPtr->PointSize = load("glPointSize"); context.PointSize = internalLoadAPI(contextPtr->PointSize);
+ contextPtr->PolygonMode = load("glPolygonMode"); context.PolygonMode = internalLoadAPI(contextPtr->PolygonMode);
+ contextPtr->ReadBuffer = load("glReadBuffer"); context.ReadBuffer = internalLoadAPI(contextPtr->ReadBuffer);
+ contextPtr->ReadPixels = load("glReadPixels"); context.ReadPixels = internalLoadAPI(contextPtr->ReadPixels);
+ contextPtr->Scissor = load("glScissor"); context.Scissor = internalLoadAPI(contextPtr->Scissor);
+ contextPtr->StencilFunc = load("glStencilFunc"); context.StencilFunc = internalLoadAPI(contextPtr->StencilFunc);
+ contextPtr->StencilMask = load("glStencilMask"); context.StencilMask = internalLoadAPI(contextPtr->StencilMask);
+ contextPtr->StencilOp = load("glStencilOp"); context.StencilOp = internalLoadAPI(contextPtr->StencilOp);
+ contextPtr->TexImage1D = load("glTexImage1D"); context.TexImage1D = internalLoadAPI(contextPtr->TexImage1D);
+ contextPtr->TexImage2D = load("glTexImage2D"); context.TexImage2D = internalLoadAPI(contextPtr->TexImage2D);
+ contextPtr->TexParameterf = load("glTexParameterf"); context.TexParameterf = internalLoadAPI(contextPtr->TexParameterf);
+ contextPtr->TexParameterfv = load("glTexParameterfv"); context.TexParameterfv = internalLoadAPI(contextPtr->TexParameterfv);
+ contextPtr->TexParameteri = load("glTexParameteri"); context.TexParameteri = internalLoadAPI(contextPtr->TexParameteri);
+ contextPtr->TexParameteriv = load("glTexParameteriv"); context.TexParameteriv = internalLoadAPI(contextPtr->TexParameteriv);
+ contextPtr->Viewport = load("glViewport"); context.Viewport = internalLoadAPI(contextPtr->Viewport);
+
#endregion
InternalIO.InternalAppendLog("Successfully load all OpenGL 1.0 APIs");
}
- internal static unsafe void LoadGLcore11(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore12(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore13(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore14(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore15(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore20(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore21(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore30(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore31(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore32(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore33(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore40(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore41(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore42(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore43(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore44(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore45(GLcontext* context, GLfuncLoader load) { }
- internal static unsafe void LoadGLcore46(GLcontext* context, GLfuncLoader load) { }
+ internal static unsafe void LoadGLcore11(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
+ {
+ if (!core11)
+ {
+ InternalIO.InternalAppendLog("The core version 1.1 is not supported.");
+ throw new Exception("Final Version");
+ }
+ #region load
+ contextPtr->BindTexture = load("glBindTexture"); context.BindTexture = internalLoadAPI(contextPtr->BindTexture);
+ contextPtr->CopyTexImage1D = load("glCopyTexImage1D"); context.CopyTexImage1D = internalLoadAPI(contextPtr->CopyTexImage1D);
+ contextPtr->CopyTexImage2D = load("glCopyTexImage2D"); context.CopyTexImage2D = internalLoadAPI(contextPtr->CopyTexImage2D);
+ contextPtr->CopyTexSubImage1D = load("glCopyTexSubImage1D"); context.CopyTexSubImage1D = internalLoadAPI(contextPtr->CopyTexSubImage1D);
+ contextPtr->CopyTexSubImage2D = load("glCopyTexSubImage2D"); context.CopyTexSubImage2D = internalLoadAPI(contextPtr->CopyTexSubImage2D);
+ contextPtr->DeleteTextures = load("glDeleteTextures"); context.DeleteTextures = internalLoadAPI(contextPtr->DeleteTextures);
+ contextPtr->DrawArrays = load("glDrawArrays"); context.DrawArrays = internalLoadAPI(contextPtr->DrawArrays);
+ contextPtr->DrawElements = load("glDrawElements"); context.DrawElements = internalLoadAPI(contextPtr->DrawElements);
+ contextPtr->GenTextures = load("glGenTextures"); context.GenTextures = internalLoadAPI(contextPtr->GenTextures);
+ contextPtr->GetPointerv = load("glGetPointerv"); context.GetPointerv = internalLoadAPI(contextPtr->GetPointerv);
+ contextPtr->IsTexture = load("glIsTexture"); context.IsTexture = internalLoadAPI(contextPtr->IsTexture);
+ contextPtr->PolygonOffset = load("glPolygonOffset"); context.PolygonOffset = internalLoadAPI(contextPtr->PolygonOffset);
+ contextPtr->TexSubImage1D = load("glTexSubImage1D"); context.TexSubImage1D = internalLoadAPI(contextPtr->TexSubImage1D);
+ contextPtr->TexSubImage2D = load("glTexSubImage2D"); context.TexSubImage2D = internalLoadAPI(contextPtr->TexSubImage2D);
+ #endregion
+ InternalIO.InternalAppendLog("Successfully load all OpenGL 1.1 APIs");
+
+ }
+
+ internal static unsafe void LoadGLcore12(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
+ {
+ if (!core12)
+ {
+ InternalIO.InternalAppendLog("The core version 1.2 is not supported.");
+ throw new Exception("Final Version");
+ }
+ #region load
+ contextPtr->CopyTexSubImage3D = load("glCopyTexSubImage3D"); context.CopyTexSubImage3D = internalLoadAPI(contextPtr->CopyTexSubImage3D);
+ contextPtr->DrawRangeElements = load("glDrawRangeElements"); context.DrawRangeElements = internalLoadAPI(contextPtr->DrawRangeElements);
+ contextPtr->TexImage3D = load("glTexImage3D"); context.TexImage3D = internalLoadAPI(contextPtr->TexImage3D);
+ contextPtr->TexSubImage3D = load("glTexSubImage3D"); context.TexSubImage3D = internalLoadAPI(contextPtr->TexSubImage3D);
+
+ #endregion
+ InternalIO.InternalAppendLog("Successfully load all OpenGL 1.2 APIs");
+ }
+
+ internal static unsafe void LoadGLcore13(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
+ {
+
+ if (!core13)
+ {
+ InternalIO.InternalAppendLog("The core version 1.3 is not supported.");
+ throw new Exception("Final Version");
+ }
+ #region load
+ contextPtr->ActiveTexture = load("glActiveTexture"); context.ActiveTexture = internalLoadAPI(contextPtr->ActiveTexture);
+ contextPtr->CompressedTexImage1D = load("glCompressedTexImage1D"); context.CompressedTexImage1D = internalLoadAPI(contextPtr->CompressedTexImage1D);
+ contextPtr->CompressedTexImage2D = load("glCompressedTexImage2D"); context.CompressedTexImage2D = internalLoadAPI(contextPtr->CompressedTexImage2D);
+ contextPtr->CompressedTexImage3D = load("glCompressedTexImage3D"); context.CompressedTexImage3D = internalLoadAPI(contextPtr->CompressedTexImage3D);
+ contextPtr->CompressedTexSubImage1D = load("glCompressedTexSubImage1D"); context.CompressedTexSubImage1D = internalLoadAPI(contextPtr->CompressedTexSubImage1D);
+ contextPtr->CompressedTexSubImage2D = load("glCompressedTexSubImage2D"); context.CompressedTexSubImage2D = internalLoadAPI(contextPtr->CompressedTexSubImage2D);
+ contextPtr->CompressedTexSubImage3D = load("glCompressedTexSubImage3D"); context.CompressedTexSubImage3D = internalLoadAPI(contextPtr->CompressedTexSubImage3D);
+ contextPtr->GetCompressedTexImage = load("glGetCompressedTexImage"); context.GetCompressedTexImage = internalLoadAPI(contextPtr->GetCompressedTexImage);
+ contextPtr->SampleCoverage = load("glSampleCoverage"); context.SampleCoverage = internalLoadAPI(contextPtr->SampleCoverage);
+
+ #endregion
+ InternalIO.InternalAppendLog("Successfully load all OpenGL 1.3 APIs");
+
+ }
+
+ internal static unsafe void LoadGLcore14(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
+ {
+ if (!core14)
+ {
+ InternalIO.InternalAppendLog("The core version 1.4 is not supported.");
+ throw new Exception("Final Version");
+ }
+ #region load
+ contextPtr->BlendColor = load("glBlendColor"); context.BlendColor = internalLoadAPI(contextPtr->BlendColor);
+ contextPtr->BlendEquation = load("glBlendEquation"); context.BlendEquation = internalLoadAPI(contextPtr->BlendEquation);
+ contextPtr->BlendFuncSeparate = load("glBlendFuncSeparate"); context.BlendFuncSeparate = internalLoadAPI(contextPtr->BlendFuncSeparate);
+ contextPtr->MultiDrawArrays = load("glMultiDrawArrays"); context.MultiDrawArrays = internalLoadAPI(contextPtr->MultiDrawArrays);
+ contextPtr->MultiDrawElements = load("glMultiDrawElements"); context.MultiDrawElements = internalLoadAPI(contextPtr->MultiDrawElements);
+ contextPtr->PointParameterf = load("glPointParameterf"); context.PointParameterf = internalLoadAPI(contextPtr->PointParameterf);
+ contextPtr->PointParameterfv = load("glPointParameterfv"); context.PointParameterfv = internalLoadAPI(contextPtr->PointParameterfv);
+ contextPtr->PointParameteri = load("glPointParameteri"); context.PointParameteri = internalLoadAPI(contextPtr->PointParameteri);
+ contextPtr->PointParameteriv = load("glPointParameteriv"); context.PointParameteriv = internalLoadAPI(contextPtr->PointParameteriv);
+
+ #endregion
+ InternalIO.InternalAppendLog("Successfully load all OpenGL 1.4 APIs");
+
+ }
+
+ internal static unsafe void LoadGLcore15(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
+ {
+
+ if (!core15)
+ {
+ InternalIO.InternalAppendLog("The core version 1.5 is not supported.");
+ throw new Exception("Final Version");
+ }
+ #region load
+ contextPtr->BeginQuery = load("glBeginQuery"); context.BeginQuery = internalLoadAPI(contextPtr->BeginQuery);
+ contextPtr->BindBuffer = load("glBindBuffer"); context.BindBuffer = internalLoadAPI(contextPtr->BindBuffer);
+ contextPtr->BufferData = load("glBufferData"); context.BufferData = internalLoadAPI(contextPtr->BufferData);
+ contextPtr->BufferSubData = load("glBufferSubData"); context.BufferSubData = internalLoadAPI(contextPtr->BufferSubData);
+ contextPtr->DeleteBuffers = load("glDeleteBuffers"); context.DeleteBuffers = internalLoadAPI(contextPtr->DeleteBuffers);
+ contextPtr->DeleteQueries = load("glDeleteQueries"); context.DeleteQueries = internalLoadAPI(contextPtr->DeleteQueries);
+ contextPtr->EndQuery = load("glEndQuery"); context.EndQuery = internalLoadAPI(contextPtr->EndQuery);
+ contextPtr->GenBuffers = load("glGenBuffers"); context.GenBuffers = internalLoadAPI(contextPtr->GenBuffers);
+ contextPtr->GenQueries = load("glGenQueries"); context.GenQueries = internalLoadAPI(contextPtr->GenQueries);
+ contextPtr->GetBufferParameteriv = load("glGetBufferParameteriv"); context.GetBufferParameteriv = internalLoadAPI(contextPtr->GetBufferParameteriv);
+ contextPtr->GetBufferPointerv = load("glGetBufferPointerv"); context.GetBufferPointerv = internalLoadAPI(contextPtr->GetBufferPointerv);
+ contextPtr->GetBufferSubData = load("glGetBufferSubData"); context.GetBufferSubData = internalLoadAPI(contextPtr->GetBufferSubData);
+ contextPtr->GetQueryObjectiv = load("glGetQueryObjectiv"); context.GetQueryObjectiv = internalLoadAPI(contextPtr->GetQueryObjectiv);
+ contextPtr->GetQueryObjectuiv = load("glGetQueryObjectuiv"); context.GetQueryObjectuiv = internalLoadAPI(contextPtr->GetQueryObjectuiv);
+ contextPtr->GetQueryiv = load("glGetQueryiv"); context.GetQueryiv = internalLoadAPI(contextPtr->GetQueryiv);
+ contextPtr->IsBuffer = load("glIsBuffer"); context.IsBuffer = internalLoadAPI(contextPtr->IsBuffer);
+ contextPtr->IsQuery = load("glIsQuery"); context.IsQuery = internalLoadAPI(contextPtr->IsQuery);
+ contextPtr->MapBuffer = load("glMapBuffer"); context.MapBuffer = internalLoadAPI(contextPtr->MapBuffer);
+ contextPtr->UnmapBuffer = load("glUnmapBuffer"); context.UnmapBuffer = internalLoadAPI(contextPtr->UnmapBuffer);
+
+ #endregion
+ InternalIO.InternalAppendLog("Successfully load all OpenGL 1.5 APIs");
+
+ }
+
+ internal static unsafe void LoadGLcore20(GLcontextIO* contextPtr, GLcontext context, GLfuncLoader load)
+ {
+ if (!core20)
+ {
+ InternalIO.InternalAppendLog("The core version 2.0 is not supported.");
+ throw new Exception("Final Version");
+ }
+ #region load
+ contextPtr->AttachShader = load("glAttachShader"); context.AttachShader = internalLoadAPI(contextPtr->AttachShader);
+ contextPtr->BindAttribLocation = load("glBindAttribLocation"); context.BindAttribLocation = internalLoadAPI(contextPtr->BindAttribLocation);
+ contextPtr->BlendEquationSeparate = load("glBlendEquationSeparate"); context.BlendEquationSeparate = internalLoadAPI(contextPtr->BlendEquationSeparate);
+ contextPtr->CompileShader = load("glCompileShader"); context.CompileShader = internalLoadAPI(contextPtr->CompileShader);
+ contextPtr->CreateProgram = load("glCreateProgram"); context.CreateProgram = internalLoadAPI(contextPtr->CreateProgram);
+ contextPtr->CreateShader = load("glCreateShader"); context.CreateShader = internalLoadAPI(contextPtr->CreateShader);
+ contextPtr->DeleteProgram = load("glDeleteProgram"); context.DeleteProgram = internalLoadAPI(contextPtr->DeleteProgram);
+ contextPtr->DeleteShader = load("glDeleteShader"); context.DeleteShader = internalLoadAPI(contextPtr->DeleteShader);
+ contextPtr->DetachShader = load("glDetachShader"); context.DetachShader = internalLoadAPI(contextPtr->DetachShader);
+ contextPtr->DisableVertexAttribArray = load("glDisableVertexAttribArray"); context.DisableVertexAttribArray = internalLoadAPI(contextPtr->DisableVertexAttribArray);
+ contextPtr->DrawBuffers = load("glDrawBuffers"); context.DrawBuffers = internalLoadAPI(contextPtr->DrawBuffers);
+ contextPtr->EnableVertexAttribArray = load("glEnableVertexAttribArray"); context.EnableVertexAttribArray = internalLoadAPI(contextPtr->EnableVertexAttribArray);
+ contextPtr->GetActiveAttrib = load("glGetActiveAttrib"); context.GetActiveAttrib = internalLoadAPI(contextPtr->GetActiveAttrib);
+ contextPtr->GetActiveUniform = load("glGetActiveUniform"); context.GetActiveUniform = internalLoadAPI(contextPtr->GetActiveUniform);
+ contextPtr->GetAttachedShaders = load("glGetAttachedShaders"); context.GetAttachedShaders = internalLoadAPI(contextPtr->GetAttachedShaders);
+ contextPtr->GetAttribLocation = load("glGetAttribLocation"); context.GetAttribLocation = internalLoadAPI(contextPtr->GetAttribLocation);
+ contextPtr->GetProgramInfoLog = load("glGetProgramInfoLog"); context.GetProgramInfoLog = internalLoadAPI(contextPtr->GetProgramInfoLog);
+ contextPtr->GetProgramiv = load("glGetProgramiv"); context.GetProgramiv = internalLoadAPI(contextPtr->GetProgramiv);
+ contextPtr->GetShaderInfoLog = load("glGetShaderInfoLog"); context.GetShaderInfoLog = internalLoadAPI(contextPtr->GetShaderInfoLog);
+ contextPtr->GetShaderSource = load("glGetShaderSource"); context.GetShaderSource = internalLoadAPI(contextPtr->GetShaderSource);
+ contextPtr->GetShaderiv = load("glGetShaderiv"); context.GetShaderiv = internalLoadAPI(contextPtr->GetShaderiv);
+ contextPtr->GetUniformLocation = load("glGetUniformLocation"); context.GetUniformLocation = internalLoadAPI(contextPtr->GetUniformLocation);
+ contextPtr->GetUniformfv = load("glGetUniformfv"); context.GetUniformfv = internalLoadAPI(contextPtr->GetUniformfv);
+ contextPtr->GetUniformiv = load("glGetUniformiv"); context.GetUniformiv = internalLoadAPI(contextPtr->GetUniformiv);
+ contextPtr->GetVertexAttribPointerv = load("glGetVertexAttribPointerv"); context.GetVertexAttribPointerv = internalLoadAPI(contextPtr->GetVertexAttribPointerv);
+ contextPtr->GetVertexAttribdv = load("glGetVertexAttribdv"); context.GetVertexAttribdv = internalLoadAPI(contextPtr->GetVertexAttribdv);
+ contextPtr->GetVertexAttribfv = load("glGetVertexAttribfv"); context.GetVertexAttribfv = internalLoadAPI(contextPtr->GetVertexAttribfv);
+ contextPtr->GetVertexAttribiv = load("glGetVertexAttribiv"); context.GetVertexAttribiv = internalLoadAPI(contextPtr->GetVertexAttribiv);
+ contextPtr->IsProgram = load("glIsProgram"); context.IsProgram = internalLoadAPI(contextPtr->IsProgram);
+ contextPtr->IsShader = load("glIsShader"); context.IsShader = internalLoadAPI(contextPtr->IsShader);
+ contextPtr->LinkProgram = load("glLinkProgram"); context.LinkProgram = internalLoadAPI(contextPtr->LinkProgram);
+ contextPtr->ShaderSource = load("glShaderSource"); context.ShaderSource = internalLoadAPI(contextPtr->ShaderSource);
+ contextPtr->StencilFuncSeparate = load("glStencilFuncSeparate"); context.StencilFuncSeparate = internalLoadAPI(contextPtr->StencilFuncSeparate);
+ contextPtr->StencilMaskSeparate = load("glStencilMaskSeparate"); context.StencilMaskSeparate = internalLoadAPI(contextPtr->StencilMaskSeparate);
+ contextPtr->StencilOpSeparate = load("glStencilOpSeparate"); context.StencilOpSeparate = internalLoadAPI(contextPtr->StencilOpSeparate);
+ contextPtr->Uniform1f = load("glUniform1f"); context.Uniform1f = internalLoadAPI(contextPtr->Uniform1f);
+ contextPtr->Uniform1fv = load("glUniform1fv"); context.Uniform1fv = internalLoadAPI(contextPtr->Uniform1fv);
+ contextPtr->Uniform1i = load("glUniform1i"); context.Uniform1i = internalLoadAPI(contextPtr->Uniform1i);
+ contextPtr->Uniform1iv = load("glUniform1iv"); context.Uniform1iv = internalLoadAPI(contextPtr->Uniform1iv);
+ contextPtr->Uniform2f = load("glUniform2f"); context.Uniform2f = internalLoadAPI(contextPtr->Uniform2f);
+ contextPtr->Uniform2fv = load("glUniform2fv"); context.Uniform2fv = internalLoadAPI(contextPtr->Uniform2fv);
+ contextPtr->Uniform2i = load("glUniform2i"); context.Uniform2i = internalLoadAPI(contextPtr->Uniform2i);
+ contextPtr->Uniform2iv = load("glUniform2iv"); context.Uniform2iv = internalLoadAPI(contextPtr->Uniform2iv);
+ contextPtr->Uniform3f = load("glUniform3f"); context.Uniform3f = internalLoadAPI(contextPtr->Uniform3f);
+ contextPtr->Uniform3fv = load("glUniform3fv"); context.Uniform3fv = internalLoadAPI(contextPtr->Uniform3fv);
+ contextPtr->Uniform3i = load("glUniform3i"); context.Uniform3i = internalLoadAPI(contextPtr->Uniform3i);
+ contextPtr->Uniform3iv = load("glUniform3iv"); context.Uniform3iv = internalLoadAPI(contextPtr->Uniform3iv);
+ contextPtr->Uniform4f = load("glUniform4f"); context.Uniform4f = internalLoadAPI(contextPtr->Uniform4f);
+ contextPtr->Uniform4fv = load("glUniform4fv"); context.Uniform4fv = internalLoadAPI(contextPtr->Uniform4fv);
+ contextPtr->Uniform4i = load("glUniform4i"); context.Uniform4i = internalLoadAPI(contextPtr->Uniform4i);
+ contextPtr->Uniform4iv = load("glUniform4iv"); context.Uniform4iv = internalLoadAPI(contextPtr->Uniform4iv);
+ contextPtr->UniformMatrix2fv = load("glUniformMatrix2fv"); context.UniformMatrix2fv = internalLoadAPI(contextPtr->UniformMatrix2fv);
+ contextPtr->UniformMatrix3fv = load("glUniformMatrix3fv"); context.UniformMatrix3fv = internalLoadAPI(contextPtr->UniformMatrix3fv);
+ contextPtr->UniformMatrix4fv = load("glUniformMatrix4fv"); context.UniformMatrix4fv = internalLoadAPI(contextPtr->UniformMatrix4fv);
+ contextPtr->UseProgram = load("glUseProgram"); context.UseProgram = internalLoadAPI(contextPtr->UseProgram);
+ contextPtr->ValidateProgram = load("glValidateProgram"); context.ValidateProgram = internalLoadAPI(contextPtr->ValidateProgram);
+ contextPtr->VertexAttrib1d = load("glVertexAttrib1d"); context.VertexAttrib1d = internalLoadAPI(contextPtr->VertexAttrib1d);
+ contextPtr->VertexAttrib1dv = load("glVertexAttrib1dv"); context.VertexAttrib1dv = internalLoadAPI(contextPtr->VertexAttrib1dv);
+ contextPtr->VertexAttrib1f = load("glVertexAttrib1f"); context.VertexAttrib1f = internalLoadAPI(contextPtr->VertexAttrib1f);
+ contextPtr->VertexAttrib1fv = load("glVertexAttrib1fv"); context.VertexAttrib1fv = internalLoadAPI(contextPtr->VertexAttrib1fv);
+ contextPtr->VertexAttrib1s = load("glVertexAttrib1s"); context.VertexAttrib1s = internalLoadAPI(contextPtr->VertexAttrib1s);
+ contextPtr->VertexAttrib1sv = load("glVertexAttrib1sv"); context.VertexAttrib1sv = internalLoadAPI(contextPtr->VertexAttrib1sv);
+ contextPtr->VertexAttrib2d = load("glVertexAttrib2d"); context.VertexAttrib2d = internalLoadAPI(contextPtr->VertexAttrib2d);
+ contextPtr->VertexAttrib2dv = load("glVertexAttrib2dv"); context.VertexAttrib2dv = internalLoadAPI(contextPtr->VertexAttrib2dv);
+ contextPtr->VertexAttrib2f = load("glVertexAttrib2f"); context.VertexAttrib2f = internalLoadAPI(contextPtr->VertexAttrib2f);
+ contextPtr->VertexAttrib2fv = load("glVertexAttrib2fv"); context.VertexAttrib2fv = internalLoadAPI(contextPtr->VertexAttrib2fv);
+ contextPtr->VertexAttrib2s = load("glVertexAttrib2s"); context.VertexAttrib2s = internalLoadAPI(contextPtr->VertexAttrib2s);
+ contextPtr->VertexAttrib2sv = load("glVertexAttrib2sv"); context.VertexAttrib2sv = internalLoadAPI(contextPtr->VertexAttrib2sv);
+ contextPtr->VertexAttrib3d = load("glVertexAttrib3d"); context.VertexAttrib3d = internalLoadAPI(contextPtr->VertexAttrib3d);
+ contextPtr->VertexAttrib3dv = load("glVertexAttrib3dv"); context.VertexAttrib3dv = internalLoadAPI(contextPtr->VertexAttrib3dv);
+ contextPtr->VertexAttrib3f = load("glVertexAttrib3f"); context.VertexAttrib3f = internalLoadAPI(contextPtr->VertexAttrib3f);
+ contextPtr->VertexAttrib3fv = load("glVertexAttrib3fv"); context.VertexAttrib3fv = internalLoadAPI(contextPtr->VertexAttrib3fv);
+ contextPtr->VertexAttrib3s = load("glVertexAttrib3s"); context.VertexAttrib3s = internalLoadAPI(contextPtr->VertexAttrib3s);
+ contextPtr->VertexAttrib3sv = load("glVertexAttrib3sv"); context.VertexAttrib3sv = internalLoadAPI(contextPtr->VertexAttrib3sv);
+ contextPtr->VertexAttrib4Nbv = load("glVertexAttrib4Nbv"); context.VertexAttrib4Nbv = internalLoadAPI(contextPtr->VertexAttrib4Nbv);
+ contextPtr->VertexAttrib4Niv = load("glVertexAttrib4Niv"); context.VertexAttrib4Niv = internalLoadAPI(contextPtr->VertexAttrib4Niv);
+ contextPtr->VertexAttrib4Nsv = load("glVertexAttrib4Nsv"); context.VertexAttrib4Nsv = internalLoadAPI(contextPtr->VertexAttrib4Nsv);
+ contextPtr->VertexAttrib4Nub = load("glVertexAttrib4Nub"); context.VertexAttrib4Nub = internalLoadAPI(contextPtr->VertexAttrib4Nub);
+ contextPtr->VertexAttrib4Nubv = load("glVertexAttrib4Nubv"); context.VertexAttrib4Nubv = internalLoadAPI(contextPtr->VertexAttrib4Nubv);
+ contextPtr->VertexAttrib4Nuiv = load("glVertexAttrib4Nuiv"); context.VertexAttrib4Nuiv = internalLoadAPI(contextPtr->VertexAttrib4Nuiv);
+ contextPtr->VertexAttrib4Nusv = load("glVertexAttrib4Nusv"); context.VertexAttrib4Nusv = internalLoadAPI(contextPtr->VertexAttrib4Nusv);
+ contextPtr->VertexAttrib4bv = load("glVertexAttrib4bv"); context.VertexAttrib4bv = internalLoadAPI(contextPtr->VertexAttrib4bv);
+ contextPtr->VertexAttrib4d = load("glVertexAttrib4d"); context.VertexAttrib4d = internalLoadAPI(contextPtr->VertexAttrib4d);
+ contextPtr->VertexAttrib4dv = load("glVertexAttrib4dv"); context.VertexAttrib4dv = internalLoadAPI(contextPtr->VertexAttrib4dv);
+ contextPtr->VertexAttrib4f = load("glVertexAttrib4f"); context.VertexAttrib4f = internalLoadAPI(contextPtr->VertexAttrib4f);
+ contextPtr->VertexAttrib4fv = load("glVertexAttrib4fv"); context.VertexAttrib4fv = internalLoadAPI(contextPtr->VertexAttrib4fv);
+ contextPtr->VertexAttrib4iv = load("glVertexAttrib4iv"); context.VertexAttrib4iv = internalLoadAPI(contextPtr->VertexAttrib4iv);
+ contextPtr->VertexAttrib4s = load("glVertexAttrib4s"); context.VertexAttrib4s = internalLoadAPI(contextPtr->VertexAttrib4s);
+ contextPtr->VertexAttrib4sv = load("glVertexAttrib4sv"); context.VertexAttrib4sv = internalLoadAPI(contextPtr->VertexAttrib4sv);
+ contextPtr->VertexAttrib4ubv = load("glVertexAttrib4ubv"); context.VertexAttrib4ubv = internalLoadAPI