diff --git a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin index 8d6bb4ae..5e49a316 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 e37888e0..48a80e70 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 b2675afc..69671fa8 100644 Binary files a/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 and b/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/0ba24ee7-c432-48ea-b1eb-c2e1df4bfcf7.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/0ba24ee7-c432-48ea-b1eb-c2e1df4bfcf7.vsidx new file mode 100644 index 00000000..5185a956 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/0ba24ee7-c432-48ea-b1eb-c2e1df4bfcf7.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/19578858-1959-41f7-844e-f67fa1dbdae0.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/19578858-1959-41f7-844e-f67fa1dbdae0.vsidx new file mode 100644 index 00000000..c919d5f8 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/19578858-1959-41f7-844e-f67fa1dbdae0.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/20f58145-bb22-4edd-bdad-5483d8340980.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/20f58145-bb22-4edd-bdad-5483d8340980.vsidx deleted file mode 100644 index 142054ff..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/20f58145-bb22-4edd-bdad-5483d8340980.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/317fc207-6f46-4ee4-b335-3b94f3496e9a.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/317fc207-6f46-4ee4-b335-3b94f3496e9a.vsidx deleted file mode 100644 index 1f51453b..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/317fc207-6f46-4ee4-b335-3b94f3496e9a.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/88d29d44-4e3e-498c-89e5-f9bcd11612b0.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/88d29d44-4e3e-498c-89e5-f9bcd11612b0.vsidx new file mode 100644 index 00000000..1dfa0a66 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/88d29d44-4e3e-498c-89e5-f9bcd11612b0.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/9418c944-43c2-4aa9-a978-d32c388dfcf9.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/9418c944-43c2-4aa9-a978-d32c388dfcf9.vsidx deleted file mode 100644 index 7450afb2..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/9418c944-43c2-4aa9-a978-d32c388dfcf9.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/98c49a93-836c-470e-a20a-70132ec4b51a.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/98c49a93-836c-470e-a20a-70132ec4b51a.vsidx deleted file mode 100644 index 302e14cb..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/98c49a93-836c-470e-a20a-70132ec4b51a.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/aaf29be7-c9a5-4bee-9d48-7a43b9d58039.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/aaf29be7-c9a5-4bee-9d48-7a43b9d58039.vsidx new file mode 100644 index 00000000..67a07247 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/aaf29be7-c9a5-4bee-9d48-7a43b9d58039.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/b434b248-a87c-4850-917b-3720e61a76c3.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/b434b248-a87c-4850-917b-3720e61a76c3.vsidx deleted file mode 100644 index e4c807b7..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/b434b248-a87c-4850-917b-3720e61a76c3.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/bbc2d47c-f110-46bd-bbc6-4ddd1475c9b1.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/bbc2d47c-f110-46bd-bbc6-4ddd1475c9b1.vsidx new file mode 100644 index 00000000..0d7a2b14 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/bbc2d47c-f110-46bd-bbc6-4ddd1475c9b1.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 b/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 index 76f098d9..e7307a8b 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 b3c6811c..6ea4b3e5 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/.suo and b/源代码/.vs/StgSharpDevelop/v17/.suo differ diff --git a/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json b/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json index 9e9579c4..8d5a608e 100644 --- a/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json +++ b/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json @@ -3,21 +3,403 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\glpack.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\glpack.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\render.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\render.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\view\\view.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\view\\view.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\control.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\control.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\design.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\design.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\view\\view.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\view\\view.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\keyeventattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\keyeventattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\view\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\view\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stgsharp.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stgsharp.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\particle.vert||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\particle.vert||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\particle.frag||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\particle.frag||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\fbo.vert||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\fbo.vert||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\fbo.frag||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\fbo.frag||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\view\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\view\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\globalsuppressions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\globalsuppressions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon6.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon6.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\openglapicalling.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\openglapicalling.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\igraphicapis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\igraphicapis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\test\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\test\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\bpnodebuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\bpnodebuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -66,26 +448,14 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -146,30 +516,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\view\\formthreading.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\view\\formthreading.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\view\\view.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\view\\view.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\view\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\view\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\cpuanimation\\imageprocessor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\cpuanimation\\imageprocessor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -182,26 +528,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\cpuanimation\\animationbuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\cpuanimation\\animationbuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -226,10 +556,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\particleonplain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\particleonplain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -242,18 +568,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\iplainentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\iplainentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\touhou\\touhoubuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\touhou\\touhoubuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -270,14 +588,6 @@ "AbsoluteMoniker": "D:0:0:{183AA95A-FEBD-42A5-A205-AB7048678251}|OEM\\OEM.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\oem\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{183AA95A-FEBD-42A5-A205-AB7048678251}|OEM\\OEM.csproj|solutionrelative:oem\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\get.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\get.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\igeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\igeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -302,14 +612,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\square.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\square.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\plaincoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\plaincoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -318,10 +620,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\point.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\point.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon6.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon6.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\spacecoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\spacecoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -390,10 +688,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\iinstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\iinstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -402,14 +696,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -418,10 +704,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -469,6 +751,30 @@ { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\glRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Test\\MainRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -478,24 +784,1016 @@ "DocumentGroups": [ { "DockedWidth": 197, - "SelectedChildIndex": 0, + "SelectedChildIndex": 29, "Children": [ { "$type": "Document", - "DocumentIndex": 0, - "Title": "Uniform.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", - "RelativeToolTip": "StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", - "ViewState": "AQIAALUAAAAAAAAAAAAIwMcAAAAhAAAA", + "DocumentIndex": 10, + "Title": "ViewResponder.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\ViewResponder.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\ViewResponder.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\ViewResponder.cs", + "RelativeToolTip": "StgSharp\\Controlling\\ViewResponder.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAsAAAA2AAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T17:58:58.669Z", + "WhenOpened": "2024-07-24T14:44:59.912Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharp\\Graphics\\View\\ViewRender.cs", + "ViewState": "AQIAABgAAAAAAAAAAAAqwDgAAABRAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:44:50.254Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "ViewDesigner.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\ViewDesigner.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\ViewDesigner.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\ViewDesigner.cs", + "RelativeToolTip": "StgSharp\\Controlling\\ViewDesigner.cs", + "ViewState": "AQIAAAMAAAAAAAAAAAAswBIAAAA8AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:42:19.45Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "Control.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Control.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Control.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Control.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Control.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAiAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-22T23:13:34.964Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "Partical.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\RenderStream\\Partical.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\RenderStream\\Partical.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\RenderStream\\Partical.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\RenderStream\\Partical.cs", + "ViewState": "AQIAABMBAAAAAAAAAAA1wDUBAAA3AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-22T18:54:09.535Z" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Render.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Render.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Render.cs", + "ViewState": "AQIAAAEAAAAAAAAAAAAswAoAAAAgAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-22T18:52:26.586Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "PlainGeometryMesh.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", + "ViewState": "AQIAACgAAAAAAAAAAAA1wD4AAABvAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:21:10.362Z" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "TexturePipeline.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TexturePipeline.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TexturePipeline.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TexturePipeline.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\TexturePipeline.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:20:56.032Z" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "MarkingLable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAArAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:08:20.718Z" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "DecorationBox.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", + "ViewState": "AQIAAAcAAAAAAAAAAAAqwBkAAABOAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:08:04.698Z" + }, + { + "$type": "Document", + "DocumentIndex": 30, + "Title": "CharacterIndexImage.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAArAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:07:37.453Z" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "BattleField.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\BattleField.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\BattleField.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\BattleField.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\BattleField.cs", + "ViewState": "AQIAABUAAAAAAAAAAAAAAC8AAAA4AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:06:14.126Z" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "ControllingIntem.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAAqAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T18:05:39.942Z" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "TextureProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TextureProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\TextureProvider.cs", + "ViewState": "AQIAABEAAAAAAAAAAAAcwCcAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T17:09:02.036Z" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Design.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Design.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Design.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Design.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Design.cs", + "ViewState": "AQIAAAoAAAAAAAAAAAAcwBsAAAA2AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T08:07:56.357Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 2, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\View\\ViewMain.cs", + "ViewState": "AQIAAAYAAAAAAAAAAAAAACIAAAARAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-21T08:06:54.118Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 33, + "Title": "DataBinding.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\DataBinding.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\ViewModel\\DataBinding.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\DataBinding.cs", + "RelativeToolTip": "StgSharp\\Logic\\ViewModel\\DataBinding.cs", + "ViewState": "AQIAAAYAAAAAAAAAAAAqwBsAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-19T16:41:06.14Z" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "KeyEventAttribute.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEventAttribute.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyEventAttribute.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEventAttribute.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyEventAttribute.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-19T15:04:20.506Z" + }, + { + "$type": "Document", + "DocumentIndex": 32, + "Title": "DataBinding.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", + "ViewState": "AQIAAA4AAAAAAAAAAAAAACwAAAA2AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-18T17:19:17.458Z" + }, + { + "$type": "Document", + "DocumentIndex": 38, + "Title": "StgSharpDebug", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-07-17T19:34:54.548Z" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "ViewModelMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\ViewModelMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\ViewModelMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\ViewModelMain.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\ViewModelMain.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAACwAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-16T07:19:49.481Z" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "StgSharpDebug.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAA0AAAAqAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-07-16T07:19:00.583Z" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "TimeFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\TimeFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\TimeFunction.cs", + "ViewState": "AQIAABAAAAAAAAAAAAAqwCQAAAAdAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T20:04:24.579Z" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "TriggerButton.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", + "ViewState": "AQIAAJQAAAAAAAAAAAA1wKYAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T19:54:09.954Z" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "ButtonGroup.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", + "ViewState": "AQIAAF0AAAAAAAAAAAAYwHAAAAAUAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T19:53:42.786Z" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "ShowViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAuwA0AAAASAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T19:07:20.391Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "ViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\ViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\ViewPort.cs", + "ViewState": "AQIAABYAAAAAAAAAAAAqwCoAAAAZAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T18:55:25.494Z" + }, + { + "$type": "Document", + "DocumentIndex": 35, + "Title": "KeyControl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyControl.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyControl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyControl.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyControl.cs", + "ViewState": "AQIAAD4AAAAAAAAAAAAcwAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T18:23:56.059Z" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ViewResponder.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\ViewResponder.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\ViewResponder.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAuwAsAAAA+AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T18:00:35.036Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\ViewRender.cs", + "ViewState": "AQIAACYAAAAAAAAAAAAYwC0AAAAeAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T17:27:33.542Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "ViewDesigner.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\ViewDesigner.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\ViewDesigner.cs", + "ViewState": "AQIAADIAAAAAAAAAAAAUwEYAAAAcAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T17:21:21.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "View.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\View.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\View.cs", + "ViewState": "AQIAAG8AAAAAAAAAAAAUwLwAAAAQAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-15T15:23:07.924Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 47, + "Title": "vec3d.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\vec3d.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\vec3d.cs", + "ViewState": "AQIAAF0AAAAAAAAAAAAmwEcAAAAZAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-14T17:17:29.238Z" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "GeometryOperation.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "ViewState": "AQIAADMAAAAAAAAAAAA1wEMAAAAPAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-13T17:37:00.956Z" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "particle.frag", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.frag", + "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\particle.frag", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.frag", + "RelativeToolTip": "StgSharpDebug\\Shader\\particle.frag", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAA4AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", + "WhenOpened": "2024-07-13T05:34:34.109Z" + }, + { + "$type": "Document", + "DocumentIndex": 45, + "Title": "particle.vert", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.vert", + "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\particle.vert", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.vert", + "RelativeToolTip": "StgSharpDebug\\Shader\\particle.vert", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABoAAAAoAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", + "WhenOpened": "2024-07-13T05:34:25.67Z" + }, + { + "$type": "Document", + "DocumentIndex": 56, + "Title": "fbo.vert", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.vert", + "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\fbo.vert", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.vert", + "RelativeToolTip": "StgSharpDebug\\Shader\\fbo.vert", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAWAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", + "WhenOpened": "2024-07-12T17:46:54.077Z" + }, + { + "$type": "Document", + "DocumentIndex": 57, + "Title": "fbo.frag", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.frag", + "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\fbo.frag", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.frag", + "RelativeToolTip": "StgSharpDebug\\Shader\\fbo.frag", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAqAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", + "WhenOpened": "2024-07-12T17:46:52.616Z" + }, + { + "$type": "Document", + "DocumentIndex": 52, + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "ViewState": "AQIAAE0AAAAAAAAAAAAqwGEAAAAfAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-12T17:36:17.134Z" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\RenderStream.cs", + "ViewState": "AQIAAEIAAAAAAAAAAAA0wFgAAAAMAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-12T16:50:10.581Z" + }, + { + "$type": "Document", + "DocumentIndex": 53, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ViewState": "AQIAABwAAAAAAAAAAAAqwDIAAAATAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-12T10:04:44.545Z" + }, + { + "$type": "Document", + "DocumentIndex": 50, + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ViewState": "AQIAADsAAAAAAAAAAAAswFYAAAA3AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-11T18:46:51.043Z" + }, + { + "$type": "Document", + "DocumentIndex": 61, + "Title": "SR.cs", + "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs", + "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs", + "ViewState": "AQIAABkAAAAAAAAAAADgvyIAAAANAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-11T18:09:43.749Z" + }, + { + "$type": "Document", + "DocumentIndex": 64, + "Title": "ImageHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAABBAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-11T13:33:11Z" + }, + { + "$type": "Document", + "DocumentIndex": 54, + "Title": "Image.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Image.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Image.cs", + "ViewState": "AQIAAIsAAAAAAAAAAAAYwJ4AAAAfAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-11T13:30:30.357Z" + }, + { + "$type": "Document", + "DocumentIndex": 66, + "Title": "Task.cs", + "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs", + "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs [\u53EA\u8BFB]", + "ViewState": "AQIAAD8JAAAAAAAAAAAjwEcJAAAIAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-11T03:46:13.673Z", + "EditorCaption": " [\u53EA\u8BFB]" + }, + { + "$type": "Document", + "DocumentIndex": 67, + "Title": "GlHandle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", + "ViewState": "AQIAACQAAAAAAAAAAAAYwDoAAAAJAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:49:23.76Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ViewManage.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABQAAAAjAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:32:18.12Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "glRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "ViewState": "AQIAABoAAAAAAAAAAAAAwI0AAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:31:57.791Z" + }, + { + "$type": "Document", + "DocumentIndex": 68, + "Title": "glApiManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", + "ViewState": "AQIAAEQAAAAAAAAAAAA0wF0AAAARAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:26:52.544Z" + }, + { + "$type": "Document", + "DocumentIndex": 70, + "Title": "glApiManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "ViewState": "AQIAACoAAAAAAAAAAAAYwD8AAAAsAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:24:34.903Z" + }, + { + "$type": "Document", + "DocumentIndex": 71, + "Title": "glApiManagerConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:24:33.785Z" + }, + { + "$type": "Document", + "DocumentIndex": 51, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AQIAAI0AAAAAAAAAAAA9wJ8AAAAkAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T18:05:53.065Z" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "Camera.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Graphic\\Camera.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", + "RelativeToolTip": "StgSharp\\Math\\Graphic\\Camera.cs", + "ViewState": "AQIAAIUAAAAAAAAAAAA0wJEAAAAiAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:59:14.403Z" + }, + { + "$type": "Document", + "DocumentIndex": 55, + "Title": "FBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ViewState": "AQIAABIAAAAAAAAAAAAswCwAAAAgAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:58:38.22Z" + }, + { + "$type": "Document", + "DocumentIndex": 75, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ViewState": "AQIAABwAAAAAAAAAAAAYwC8AAAAoAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:58:29.9Z" + }, + { + "$type": "Document", + "DocumentIndex": 79, + "Title": "GlobalSuppressions.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\GlobalSuppressions.cs", + "RelativeDocumentMoniker": "StgSharp\\GlobalSuppressions.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\GlobalSuppressions.cs", + "RelativeToolTip": "StgSharp\\GlobalSuppressions.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:41:12.94Z" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "BufferObjectBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", + "ViewState": "AQIAADUAAAAAAAAAAAA2wE4AAAAJAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:23:55.021Z" + }, + { + "$type": "Document", + "DocumentIndex": 82, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glConst.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glConst.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Define\\glConst.cs", + "ViewState": "AQIAAB0AAAAAAAAAAAAqwPQSAAAgAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:17:12.687Z" + }, + { + "$type": "Document", + "DocumentIndex": 81, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ViewState": "AQIAAIMAAAAAAAAAAAAowJIAAAAwAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:16:18.094Z" + }, + { + "$type": "Document", + "DocumentIndex": 83, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ViewState": "AQIAADYAAAAAAAAAAAAowEgAAAA1AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:15:13.91Z" + }, + { + "$type": "Document", + "DocumentIndex": 85, + "Title": "FBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ViewState": "AQIAAA4AAAAAAAAAAAAcwCYAAAAOAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:05:59.749Z" + }, + { + "$type": "Document", + "DocumentIndex": 90, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\IO\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\InternalIO.cs", + "RelativeToolTip": "StgSharp\\Controlling\\IO\\InternalIO.cs", + "ViewState": "AQIAAFkAAAAAAAAAAAA0wGoAAAAgAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T15:48:23.725Z" + }, + { + "$type": "Document", + "DocumentIndex": 72, + "Title": "Pixels.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAAIAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T04:12:48.395Z" + }, + { + "$type": "Document", + "DocumentIndex": 95, + "Title": "GlException.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlException.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\GlException.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlException.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\GlException.cs", + "ViewState": "AQIAABgAAAAAAAAAAAAYwDAAAAAVAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-08T11:52:05.336Z" + }, + { + "$type": "Document", + "DocumentIndex": 42, + "Title": "StgSharp.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", + "RelativeDocumentMoniker": "StgSharp\\StgSharp.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", + "RelativeToolTip": "StgSharp\\StgSharp.csproj", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAcAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-07-08T10:39:35.673Z" + }, + { + "$type": "Document", + "DocumentIndex": 84, + "Title": "RBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAAtAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-07T17:45:11.682Z" + }, + { + "$type": "Document", + "DocumentIndex": 65, + "Title": "GlHandle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlHandle.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\GlHandle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlHandle.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\GlHandle.cs", + "ViewState": "AQIAACYAAAAAAAAAAAAYwDMAAAAmAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-06T08:38:18.156Z" + }, + { + "$type": "Document", + "DocumentIndex": 86, + "Title": "BufferObjectBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "ViewState": "AQIAABgAAAAAAAAAAAAYwCsAAAAqAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-06T06:22:32.666Z" + }, + { + "$type": "Document", + "DocumentIndex": 74, + "Title": "GLBufferObjectBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAiAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-06T07:31:18.854Z" + }, + { + "$type": "Document", + "DocumentIndex": 87, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ViewState": "AQIAAA0AAAAAAAAAAAAswB4AAAAYAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-06T06:22:23.335Z" + }, + { + "$type": "Document", + "DocumentIndex": 96, + "Title": "OpenGLAPICalling.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\OpenGLAPICalling.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\OpenGLAPICalling.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\OpenGLAPICalling.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\OpenGLAPICalling.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAsAAAAMAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:08:47.25Z" + }, + { + "$type": "Document", + "DocumentIndex": 193, + "Title": "MainRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Test\\MainRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Test\\MainRenderStream.cs", + "ViewState": "AQIAABsAAAAAAAAAAAA1wC4AAAAEAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:36.555Z" + }, + { + "$type": "Document", + "DocumentIndex": 188, + "Title": "RBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", + "ViewState": "AQIAAAEAAAAAAAAAAAAqwBUAAAAbAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:23.15Z" + }, + { + "$type": "Document", + "DocumentIndex": 31, + "Title": "ViewModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", + "ViewState": "AQIAAOYAAAAAAAAAAAAUwEQBAAAzAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:20.456Z" + }, + { + "$type": "Document", + "DocumentIndex": 97, + "Title": "ShaderStruct.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "ViewState": "AQIAABQAAAAAAAAAAAA8wCgAAAA0AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:17.716Z" + }, + { + "$type": "Document", + "DocumentIndex": 189, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "ViewState": "AQIAACsAAAAAAAAAAAAqwD8AAAAjAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:15.821Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "CollisionTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\CollisionTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", + "RelativeToolTip": "StgSharpDebug\\Stg\\CollisionTexture.cs", + "ViewState": "AQIAAEUAAAAAAAAAAAA1wEcAAAA3AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:12.581Z" + }, + { + "$type": "Document", + "DocumentIndex": 98, + "Title": "Camera.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Graphic\\Camera.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Graphic\\Camera.cs", + "ViewState": "AQIAAH0AAAAAAAAAAAAqwJEAAAATAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:11.807Z" + }, + { + "$type": "Document", + "DocumentIndex": 190, + "Title": "Shader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", + "ViewState": "AQIAALcAAAAAAAAAAAAiwGoAAAAjAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-28T00:00:06.545Z" + }, + { + "$type": "Document", + "DocumentIndex": 191, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", + "ViewState": "AQIAAEMAAAAAAAAAAAAqwFcAAAA4AAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-27T23:58:09.408Z" + }, + { + "$type": "Document", + "DocumentIndex": 192, + "Title": "glRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", + "ViewState": "AQIAABgAAAAAAAAAAAAxwC8AAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-27T23:55:40.542Z" + }, + { + "$type": "Document", + "DocumentIndex": 78, + "Title": "Uniform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ViewState": "AQIAAJEAAAAAAAAAAAAUwCsAAAAFAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-27T17:58:58.669Z" + }, + { + "$type": "Document", + "DocumentIndex": 99, "Title": "IGraphicAPIs.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\IGraphicAPIs.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\IGraphicAPIs.cs", @@ -503,25 +1801,23 @@ "RelativeToolTip": "StgSharp\\Graphics\\IGraphicAPIs.cs", "ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAA2AAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T17:54:48.427Z", - "EditorCaption": "" + "WhenOpened": "2024-06-27T17:54:48.427Z" }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 18, "Title": "Program.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\Program.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Test\\Program.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\Program.cs", - "RelativeToolTip": "StgSharpDebug\\Test\\Program.cs", - "ViewState": "AQIAADcAAAAAAAAAAAA0wEwAAAAAAAAA", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\Program.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\Program.cs", + "RelativeToolTip": "StgSharpDebug\\Demo\\Program.cs", + "ViewState": "AQIAABEAAAAAAAAAAAAcwB0AAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-26T19:34:28.297Z", - "EditorCaption": "" + "WhenOpened": "2024-06-26T19:34:28.297Z" }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 100, "Title": "BpNodeBuilder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", @@ -533,7 +1829,7 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 102, "Title": "IConvertableToBlueprintNode.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", @@ -545,7 +1841,7 @@ }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 101, "Title": "BpNodeActionAttribute.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", @@ -557,7 +1853,7 @@ }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 106, "Title": "glfw3.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", "RelativeDocumentMoniker": "StgSharpC\\glfw3.h", @@ -569,7 +1865,7 @@ }, { "$type": "Document", - "DocumentIndex": 116, + "DocumentIndex": 187, "Title": "CrossFrameBlueprintNode.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", @@ -580,7 +1876,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 104, "Title": "CrossFrameBlueprintNode.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\CrossFrameBlueprintNode.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\CrossFrameBlueprintNode.cs", @@ -592,7 +1888,7 @@ }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 105, "Title": "PipeLine.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\PipeLine.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\PipeLine.cs", @@ -604,7 +1900,7 @@ }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 122, "Title": "InternalData.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\InternalData.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\InternalData.cs", @@ -616,7 +1912,7 @@ }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 114, "Title": "GlobalSetting.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\GlobalSetting.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\GlobalSetting.cs", @@ -628,7 +1924,7 @@ }, { "$type": "Document", - "DocumentIndex": 31, + "DocumentIndex": 124, "Title": "globalKeyStat.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\globalKeyStat.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\globalKeyStat.cs", @@ -640,7 +1936,7 @@ }, { "$type": "Document", - "DocumentIndex": 32, + "DocumentIndex": 125, "Title": "ErrorDefine.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\ErrorDefine.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\ErrorDefine.cs", @@ -652,7 +1948,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 112, "Title": "CancellableTask.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\CancellableTask.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\CancellableTask.cs", @@ -664,7 +1960,7 @@ }, { "$type": "Document", - "DocumentIndex": 33, + "DocumentIndex": 126, "Title": "SizeFixedList.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\SizeFixedList.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\SizeFixedList.cs", @@ -676,7 +1972,7 @@ }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 110, "Title": "BlueprintRunner.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", @@ -688,7 +1984,7 @@ }, { "$type": "Document", - "DocumentIndex": 7, + "DocumentIndex": 103, "Title": "BlueprintNode.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", @@ -700,7 +1996,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 111, "Title": "SideNode.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\SideNode.cs", @@ -712,7 +2008,7 @@ }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 109, "Title": "Platform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", @@ -724,7 +2020,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 113, "Title": "TimeProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\TimeProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\TimeProvider.cs", @@ -736,7 +2032,7 @@ }, { "$type": "Document", - "DocumentIndex": 42, + "DocumentIndex": 129, "Title": "TimeSpanProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\TimeSpanProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\TimeSpanProvider.cs", @@ -748,7 +2044,7 @@ }, { "$type": "Document", - "DocumentIndex": 34, + "DocumentIndex": 127, "Title": "RouteSwitch.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\RouteSwitch.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\RouteSwitch.cs", @@ -760,19 +2056,7 @@ }, { "$type": "Document", - "DocumentIndex": 40, - "Title": "ImageProcessor.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageProcessor.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageProcessor.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageProcessor.cs", - "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageProcessor.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAAcAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-11T02:25:54.399Z" - }, - { - "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 116, "Title": "Area.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\Area.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\Area.cs", @@ -784,7 +2068,7 @@ }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 120, "Title": "SSD.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSD.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSD.cs", @@ -796,7 +2080,7 @@ }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 119, "Title": "SSDVirtualFolder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSDVirtualFolder.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSDVirtualFolder.cs", @@ -808,19 +2092,19 @@ }, { "$type": "Document", - "DocumentIndex": 41, + "DocumentIndex": 88, "Title": "Image.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", - "ViewState": "AQIAAEAAAAAAAAAAAAAnwFQAAAAJAAAA", + "ViewState": "AQIAAH4AAAAAAAAAAAA1wJYAAAAcAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-09T13:44:55.317Z" }, { "$type": "Document", - "DocumentIndex": 63, + "DocumentIndex": 143, "Title": "TouhouBuilder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Touhou\\TouhouBuilder.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Touhou\\TouhouBuilder.cs", @@ -832,7 +2116,7 @@ }, { "$type": "Document", - "DocumentIndex": 64, + "DocumentIndex": 144, "Title": "TouhouWindow.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Touhou\\TouhouWindow.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Touhou\\TouhouWindow.cs", @@ -844,7 +2128,7 @@ }, { "$type": "Document", - "DocumentIndex": 65, + "DocumentIndex": 145, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\Program.cs", "RelativeDocumentMoniker": "StgsharpEnvDebug\\Program.cs", @@ -856,67 +2140,55 @@ }, { "$type": "Document", - "DocumentIndex": 36, + "DocumentIndex": 40, "Title": "ViewManage.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\ViewManage.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\ViewModel\\ViewManage.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\ViewManage.cs", "RelativeToolTip": "StgSharp\\Logic\\ViewModel\\ViewManage.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAuwB0AAAAJAAAA", + "ViewState": "AQIAAAMAAAAAAAAAAAAuwBMAAAAdAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-06T08:10:50.451Z" }, { "$type": "Document", - "DocumentIndex": 68, - "Title": "Get.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Get.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Get.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Get.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Get.cs", - "ViewState": "AQIAACEAAAAAAAAAAAAnwDAAAAA2AAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-06T08:03:59.973Z" - }, - { - "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 36, "Title": "ShowViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\ShowViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\ViewModel\\ShowViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\ShowViewPort.cs", "RelativeToolTip": "StgSharp\\Logic\\ViewModel\\ShowViewPort.cs", - "ViewState": "AQIAACEAAAAAAAAAAAAAwC4AAAA0AAAA", + "ViewState": "AQIAABoAAAAAAAAAAAAqwCcAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-06T07:49:36.575Z" }, { "$type": "Document", - "DocumentIndex": 39, + "DocumentIndex": 76, "Title": "ViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\ViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\View\\ViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\ViewPort.cs", "RelativeToolTip": "StgSharp\\Graphics\\View\\ViewPort.cs", - "ViewState": "AQIAAGkAAAAAAAAAAAAowHgAAAAAAAAA", + "ViewState": "AQIAAGgAAAAAAAAAAAAAAHgAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-06T06:43:01.237Z" }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 39, "Title": "ViewModel.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\ViewModel.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\ViewModel\\ViewModel.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\ViewModel\\ViewModel.cs", "RelativeToolTip": "StgSharp\\Logic\\ViewModel\\ViewModel.cs", - "ViewState": "AQIAAFcAAAAAAAAAAAAowGcAAAAOAAAA", + "ViewState": "AQIAAC8AAAAAAAAAAAAYwEIAAAAMAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-05T19:19:57.97Z" }, { "$type": "Document", - "DocumentIndex": 73, + "DocumentIndex": 151, "Title": "Cordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", @@ -928,7 +2200,7 @@ }, { "$type": "Document", - "DocumentIndex": 74, + "DocumentIndex": 152, "Title": "Square.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Square.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Square.cs", @@ -940,7 +2212,7 @@ }, { "$type": "Document", - "DocumentIndex": 71, + "DocumentIndex": 149, "Title": "Rectangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", @@ -952,19 +2224,19 @@ }, { "$type": "Document", - "DocumentIndex": 75, + "DocumentIndex": 91, "Title": "Triangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", - "ViewState": "AQIAAEIAAAAAAAAAAAAuwFYAAAAhAAAA", + "ViewState": "AQIAAEYAAAAAAAAAAAAYwFwAAAAoAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-03T18:53:18.064Z" }, { "$type": "Document", - "DocumentIndex": 72, + "DocumentIndex": 150, "Title": "Parallelogram.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", @@ -976,31 +2248,31 @@ }, { "$type": "Document", - "DocumentIndex": 76, + "DocumentIndex": 94, "Title": "Polygon5.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", - "ViewState": "AQIAACsAAAAAAAAAAAAswEMAAAAhAAAA", + "ViewState": "AQIAADwAAAAAAAAAAAAYwE8AAAAoAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-03T12:56:34.052Z" }, { "$type": "Document", - "DocumentIndex": 79, + "DocumentIndex": 92, "Title": "Polygon6.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", - "ViewState": "AQIAACQAAAAAAAAAAAAvwD8AAAApAAAA", + "ViewState": "AQIAAC4AAAAAAAAAAAAqwEIAAAAoAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-03T12:53:07.67Z" }, { "$type": "Document", - "DocumentIndex": 81, + "DocumentIndex": 156, "Title": "Class1.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", @@ -1012,7 +2284,7 @@ }, { "$type": "Document", - "DocumentIndex": 80, + "DocumentIndex": 155, "Title": "SpaceCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", @@ -1024,19 +2296,19 @@ }, { "$type": "Document", - "DocumentIndex": 56, + "DocumentIndex": 93, "Title": "Polygon4.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", - "ViewState": "AQIAAF4AAAAAAAAAAAAewHMAAAAtAAAA", + "ViewState": "AQIAABQAAAAAAAAAAAAqwCgAAAApAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-03T07:48:31.982Z" }, { "$type": "Document", - "DocumentIndex": 85, + "DocumentIndex": 160, "Title": "Cordination.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Cordination.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Cordination.cs", @@ -1048,7 +2320,7 @@ }, { "$type": "Document", - "DocumentIndex": 78, + "DocumentIndex": 154, "Title": "Point.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Point.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Point.cs", @@ -1060,7 +2332,7 @@ }, { "$type": "Document", - "DocumentIndex": 86, + "DocumentIndex": 161, "Title": "Vector.Cross.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Cross.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Cross.cs", @@ -1072,7 +2344,7 @@ }, { "$type": "Document", - "DocumentIndex": 69, + "DocumentIndex": 147, "Title": "IGeometry.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IGeometry.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\IGeometry.cs", @@ -1084,7 +2356,7 @@ }, { "$type": "Document", - "DocumentIndex": 92, + "DocumentIndex": 167, "Title": "JoystickTrigger.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", @@ -1096,7 +2368,7 @@ }, { "$type": "Document", - "DocumentIndex": 93, + "DocumentIndex": 168, "Title": "ITrigger.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", @@ -1108,7 +2380,7 @@ }, { "$type": "Document", - "DocumentIndex": 44, + "DocumentIndex": 131, "Title": "KeyTrigger.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", @@ -1120,7 +2392,7 @@ }, { "$type": "Document", - "DocumentIndex": 55, + "DocumentIndex": 138, "Title": "MarkingLable.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\MarkingLable.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\MarkingLable.cs", @@ -1132,7 +2404,7 @@ }, { "$type": "Document", - "DocumentIndex": 51, + "DocumentIndex": 134, "Title": "DecorationBox.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\DecorationBox.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\DecorationBox.cs", @@ -1144,7 +2416,7 @@ }, { "$type": "Document", - "DocumentIndex": 53, + "DocumentIndex": 136, "Title": "BattleField.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\BattleField.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\BattleField.cs", @@ -1156,7 +2428,7 @@ }, { "$type": "Document", - "DocumentIndex": 110, + "DocumentIndex": 181, "Title": "KeyEvent.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyEvent.cs", @@ -1167,7 +2439,7 @@ }, { "$type": "Document", - "DocumentIndex": 52, + "DocumentIndex": 135, "Title": "CharacterIndexImage.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", @@ -1179,19 +2451,7 @@ }, { "$type": "Document", - "DocumentIndex": 47, - "Title": "AnimationBuilder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\AnimationBuilder.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\AnimationBuilder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\AnimationBuilder.cs", - "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\AnimationBuilder.cs", - "ViewState": "AQIAABQAAAAAAAAAAADwvx8AAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-31T04:30:51.082Z" - }, - { - "$type": "Document", - "DocumentIndex": 61, + "DocumentIndex": 142, "Title": "KeyControl.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyControl.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyControl.cs", @@ -1203,19 +2463,19 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 14, "Title": "ButtonGroup.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ButtonGroup.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\ButtonGroup.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ButtonGroup.cs", "RelativeToolTip": "StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABEAAAAAAAAA", + "ViewState": "AQIAAHwAAAAAAAAAAAAqwJAAAAAUAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-30T03:07:38.817Z" }, { "$type": "Document", - "DocumentIndex": 48, + "DocumentIndex": 132, "Title": "PlainGeometryMesh.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\PlainGeometryMesh.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\PlainGeometryMesh.cs", @@ -1227,7 +2487,7 @@ }, { "$type": "Document", - "DocumentIndex": 54, + "DocumentIndex": 137, "Title": "ControllingIntem.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ControllingIntem.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\ControllingIntem.cs", @@ -1239,7 +2499,7 @@ }, { "$type": "Document", - "DocumentIndex": 50, + "DocumentIndex": 133, "Title": "TriggerButton.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\TriggerButton.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\TriggerButton.cs", @@ -1251,7 +2511,7 @@ }, { "$type": "Document", - "DocumentIndex": 111, + "DocumentIndex": 182, "Title": "KeyboardButton.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", @@ -1262,7 +2522,7 @@ }, { "$type": "Document", - "DocumentIndex": 89, + "DocumentIndex": 164, "Title": "Plain.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Plain.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Plain.cs", @@ -1274,7 +2534,7 @@ }, { "$type": "Document", - "DocumentIndex": 90, + "DocumentIndex": 165, "Title": "IEntity.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", @@ -1286,7 +2546,7 @@ }, { "$type": "Document", - "DocumentIndex": 22, + "DocumentIndex": 115, "Title": "DataSegment.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataSegment.cs", @@ -1298,7 +2558,7 @@ }, { "$type": "Document", - "DocumentIndex": 28, + "DocumentIndex": 121, "Title": "SSDraw.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSDraw.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSDraw.cs", @@ -1310,7 +2570,7 @@ }, { "$type": "Document", - "DocumentIndex": 108, + "DocumentIndex": 179, "Title": "Angle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", @@ -1321,19 +2581,7 @@ }, { "$type": "Document", - "DocumentIndex": 37, - "Title": "FormThreading.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\FormThreading.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\View\\FormThreading.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\FormThreading.cs", - "RelativeToolTip": "StgSharp\\Graphics\\View\\FormThreading.cs", - "ViewState": "AQIAACUAAAAAAAAAAAAqwDkAAAAhAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:15:25.715Z" - }, - { - "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 107, "Title": "framework.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", @@ -1345,7 +2593,7 @@ }, { "$type": "Document", - "DocumentIndex": 94, + "DocumentIndex": 169, "Title": "TimeFunction.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\TimeFunction.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\TimeFunction.cs", @@ -1357,7 +2605,7 @@ }, { "$type": "Document", - "DocumentIndex": 43, + "DocumentIndex": 130, "Title": "TimeSourceProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\TimeSourceProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\TimeSourceProvider.cs", @@ -1369,7 +2617,7 @@ }, { "$type": "Document", - "DocumentIndex": 87, + "DocumentIndex": 162, "Title": "Vector.Normalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Normalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Normalize.cs", @@ -1381,7 +2629,7 @@ }, { "$type": "Document", - "DocumentIndex": 57, + "DocumentIndex": 139, "Title": "ParticleOnPlain.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", @@ -1393,7 +2641,7 @@ }, { "$type": "Document", - "DocumentIndex": 96, + "DocumentIndex": 171, "Title": "IInstancingBuffer.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancingBuffer.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\IInstancingBuffer.cs", @@ -1405,7 +2653,7 @@ }, { "$type": "Document", - "DocumentIndex": 58, + "DocumentIndex": 140, "Title": "IInstancing.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancing.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\IInstancing.cs", @@ -1417,19 +2665,19 @@ }, { "$type": "Document", - "DocumentIndex": 97, + "DocumentIndex": 77, "Title": "ShaderStruct.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "RelativeToolTip": "StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ViewState": "AQIAAAkAAAAAAAAAAAAAABwAAAAtAAAA", + "ViewState": "AQIAAAkAAAAAAAAAAAAAACsAAAArAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T12:06:38.571Z" }, { "$type": "Document", - "DocumentIndex": 98, + "DocumentIndex": 172, "Title": "ShaderGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderGenerator.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\ShaderEdit\\ShaderGenerator.cs", @@ -1441,7 +2689,7 @@ }, { "$type": "Document", - "DocumentIndex": 99, + "DocumentIndex": 173, "Title": "GLIO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\GLIO.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\IO\\GLIO.cs", @@ -1453,31 +2701,31 @@ }, { "$type": "Document", - "DocumentIndex": 100, + "DocumentIndex": 63, "Title": "TextureGL.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\Buffer\\TextureGL.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\Buffer\\TextureGL.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\Buffer\\TextureGL.cs", - "RelativeToolTip": "StgSharp\\Graphics\\GL\\Buffer\\TextureGL.cs", - "ViewState": "AQIAAI8AAAAAAAAAAIAzwJQAAAAFAAAA", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ViewState": "AQIAAFIAAAAAAAAAAAA1wGUAAABgAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T09:52:02.572Z" }, { "$type": "Document", - "DocumentIndex": 101, + "DocumentIndex": 59, "Title": "glEnum.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glEnum.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glEnum.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glEnum.cs", "RelativeToolTip": "StgSharp\\Graphics\\Define\\glEnum.cs", - "ViewState": "AQIAADIAAAAAAAAAAAAcwAAAAAAAAAAA", + "ViewState": "AQIAACUAAAAAAAAAAAAqwD0AAABLAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T09:51:55.169Z" }, { "$type": "Document", - "DocumentIndex": 102, + "DocumentIndex": 174, "Title": "Angle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\GeometryScaler\\Angle.cs", @@ -1489,31 +2737,19 @@ }, { "$type": "Document", - "DocumentIndex": 62, - "Title": "Designer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Designer.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Designer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Designer.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Designer.cs", - "ViewState": "AQIAAAwAAAAAAAAAAAAAAB0AAAAXAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:50:24.555Z" - }, - { - "$type": "Document", - "DocumentIndex": 46, + "DocumentIndex": 60, "Title": "CollisionTexture.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\CollisionTexture.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", "RelativeToolTip": "StgSharp\\Stg\\CollisionTexture.cs", - "ViewState": "AQIAALwAAAAAAAAAAAAtwNEAAAAAAAAA", + "ViewState": "AQIAALwAAAAAAAAAAAAqwNAAAAAjAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T09:47:06.034Z" }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 117, "Title": "ISSDSerializable.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\ISSDSerializable.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\Serialize\\ISSDSerializable.cs", @@ -1525,7 +2761,7 @@ }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 118, "Title": "Define.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\Define.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\Serialize\\Define.cs", @@ -1537,7 +2773,7 @@ }, { "$type": "Document", - "DocumentIndex": 103, + "DocumentIndex": 175, "Title": "M128.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\M128.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\M128.cs", @@ -1549,7 +2785,7 @@ }, { "$type": "Document", - "DocumentIndex": 30, + "DocumentIndex": 123, "Title": "RandomGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\RandomGenerator.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\RandomGenerator.cs", @@ -1561,7 +2797,7 @@ }, { "$type": "Document", - "DocumentIndex": 95, + "DocumentIndex": 170, "Title": "StgSharpC.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.h", @@ -1573,32 +2809,31 @@ }, { "$type": "Document", - "DocumentIndex": 1, - "Title": "GLpack.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\GLpack.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\GLpack.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\GLpack.cs", - "RelativeToolTip": "StgSharp\\Graphics\\GL\\GLpack.cs", - "ViewState": "AQIAAF4AAAAAAAAAAAAUwEMAAAAsAAAA", + "DocumentIndex": 58, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AQIAAPsAAAAAAAAAAAAYwA4BAABwAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-11T21:22:23.016Z", - "EditorCaption": "" + "WhenOpened": "2024-05-11T21:22:23.016Z" }, { "$type": "Document", - "DocumentIndex": 60, + "DocumentIndex": 80, "Title": "Shader.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "RelativeToolTip": "StgSharp\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "ViewState": "AQIAAG0AAAAAAAAAAAAnwIIAAAAnAAAA", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "ViewState": "AQIAALwAAAAAAAAAAAAcwN4AAAAcAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-11T19:37:12.456Z" }, { "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 108, "Title": "Blueprint.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\Blueprint.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\Blueprint.cs", @@ -1610,19 +2845,20 @@ }, { "$type": "Document", - "DocumentIndex": 38, + "DocumentIndex": 12, "Title": "View.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\View.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\View\\View.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\View\\View.cs", "RelativeToolTip": "StgSharp\\Graphics\\View\\View.cs", - "ViewState": "AQIAACsAAAAAAAAAAIBQwD4AAAARAAAA", + "ViewState": "AQIAACUAAAAAAAAAAAAYwEMAAAAgAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-11T05:11:47.098Z" + "WhenOpened": "2024-05-11T05:11:47.098Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 105, + "DocumentIndex": 176, "Title": "GeometryOperation.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", @@ -1634,19 +2870,19 @@ }, { "$type": "Document", - "DocumentIndex": 104, + "DocumentIndex": 49, "Title": "GeometryOperation.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", "RelativeToolTip": "StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ViewState": "AQIAACgAAAAAAAAAAAA1wAoAAAAwAAAA", + "ViewState": "AQIAADYAAAAAAAAAAAAYwFIAAAAQAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-10T04:34:22.843Z" }, { "$type": "Document", - "DocumentIndex": 70, + "DocumentIndex": 148, "Title": "PlainGeometry.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", @@ -1658,7 +2894,7 @@ }, { "$type": "Document", - "DocumentIndex": 59, + "DocumentIndex": 141, "Title": "IPlainEntity.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", @@ -1670,31 +2906,31 @@ }, { "$type": "Document", - "DocumentIndex": 67, + "DocumentIndex": 89, "Title": "GLresourceGenrator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\GLresourceGenrator.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\GLresourceGenrator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\GLresourceGenrator.cs", - "RelativeToolTip": "StgSharp\\Graphics\\GL\\GLresourceGenrator.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GLresourceGenrator.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\GLresourceGenrator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GLresourceGenrator.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\GLresourceGenrator.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAACcAAAAZAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-09T09:44:36.325Z" }, { "$type": "Document", - "DocumentIndex": 45, + "DocumentIndex": 69, "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\glRenderStream.cs", - "RelativeToolTip": "StgSharp\\Graphics\\GL\\glRenderStream.cs", - "ViewState": "AQIAAEQAAAAAAAAAAAAtwFkAAAAjAAAA", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "ViewState": "AQIAADIAAAAAAAAAAAA+wEwAAAAqAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-09T09:42:14.767Z" }, { "$type": "Document", - "DocumentIndex": 35, + "DocumentIndex": 128, "Title": "RenderStream.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", @@ -1706,7 +2942,7 @@ }, { "$type": "Document", - "DocumentIndex": 91, + "DocumentIndex": 166, "Title": "StreamLocalCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\StreamLocalCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\StreamLocalCoordinate.cs", @@ -1718,7 +2954,7 @@ }, { "$type": "Document", - "DocumentIndex": 107, + "DocumentIndex": 178, "Title": "vec3d.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec3d.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\vec3d.cs", @@ -1730,7 +2966,7 @@ }, { "$type": "Document", - "DocumentIndex": 84, + "DocumentIndex": 159, "Title": "vec4d.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec4d.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\vec4d.cs", @@ -1742,7 +2978,7 @@ }, { "$type": "Document", - "DocumentIndex": 88, + "DocumentIndex": 163, "Title": "Vector.Orthogonalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", @@ -1754,7 +2990,7 @@ }, { "$type": "Document", - "DocumentIndex": 82, + "DocumentIndex": 157, "Title": "CoordinationBase.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", @@ -1766,7 +3002,7 @@ }, { "$type": "Document", - "DocumentIndex": 77, + "DocumentIndex": 153, "Title": "PlainCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", @@ -1778,7 +3014,7 @@ }, { "$type": "Document", - "DocumentIndex": 83, + "DocumentIndex": 158, "Title": "PlainInstancingBuffer.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", @@ -1790,7 +3026,7 @@ }, { "$type": "Document", - "DocumentIndex": 106, + "DocumentIndex": 177, "Title": "Bullet.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Bullet.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Bullet.cs", @@ -1802,7 +3038,7 @@ }, { "$type": "Document", - "DocumentIndex": 109, + "DocumentIndex": 180, "Title": "IInstancing.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", @@ -1813,19 +3049,19 @@ }, { "$type": "Document", - "DocumentIndex": 49, + "DocumentIndex": 62, "Title": "StgSharpC.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.c", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeToolTip": "StgSharpC\\StgSharpC.c", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABoAAAAuAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAA3AAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", "WhenOpened": "2024-05-04T08:32:40.265Z" }, { "$type": "Document", - "DocumentIndex": 113, + "DocumentIndex": 184, "Title": "ShowForm.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\ShowForm.cs", @@ -1836,7 +3072,7 @@ }, { "$type": "Document", - "DocumentIndex": 66, + "DocumentIndex": 146, "Title": "MainForm.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\OEM\\MainForm.cs", "RelativeDocumentMoniker": "OEM\\MainForm.cs", @@ -1848,7 +3084,7 @@ }, { "$type": "Document", - "DocumentIndex": 114, + "DocumentIndex": 185, "Title": "FormThreading.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\FormThreading.cs", @@ -1859,7 +3095,7 @@ }, { "$type": "Document", - "DocumentIndex": 112, + "DocumentIndex": 183, "Title": "ICoord.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", @@ -1870,7 +3106,7 @@ }, { "$type": "Document", - "DocumentIndex": 115, + "DocumentIndex": 186, "Title": "Form.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\Form.cs", diff --git a/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db b/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db index 40e65598..f8c5dc4d 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/TestStore/0/000.testlog b/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog index 796f102e..9197b6c3 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog and b/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog differ diff --git a/源代码/.vs/StgSharpDevelop/v17/fileList.bin b/源代码/.vs/StgSharpDevelop/v17/fileList.bin index c5050b1c..4a8c81cc 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/fileList.bin and b/源代码/.vs/StgSharpDevelop/v17/fileList.bin differ diff --git a/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs b/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs index 6935a800..27241e32 100644 --- a/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs +++ b/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BenchMark")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c0093f7b5c77291172cde7e3e38beabb126adf08")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("BenchMark")] [assembly: System.Reflection.AssemblyTitleAttribute("BenchMark")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs b/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs index d021f128..292a04c0 100644 --- a/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs +++ b/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BenchMark")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+66efce19fcb461782c49255dc5500144f8c267e6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("BenchMark")] [assembly: System.Reflection.AssemblyTitleAttribute("BenchMark")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs b/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs index 0d9f8b17..f22d1ed3 100644 --- a/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs +++ b/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("OEM")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8f9f1c4012e0ba8723569f71754633060f4f0d85")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("OEM")] [assembly: System.Reflection.AssemblyTitleAttribute("OEM")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/OEM/obj/Release/net8.0/OEM.AssemblyInfo.cs b/源代码/OEM/obj/Release/net8.0/OEM.AssemblyInfo.cs index b41db921..d52f9413 100644 --- a/源代码/OEM/obj/Release/net8.0/OEM.AssemblyInfo.cs +++ b/源代码/OEM/obj/Release/net8.0/OEM.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("OEM")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+66efce19fcb461782c49255dc5500144f8c267e6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("OEM")] [assembly: System.Reflection.AssemblyTitleAttribute("OEM")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/Output/x64/Debug/net6.0/Shader/particle.frag b/源代码/Output/x64/Debug/net6.0/Shader/particle.frag index 1e9dacb2..d2eb95fd 100644 --- a/源代码/Output/x64/Debug/net6.0/Shader/particle.frag +++ b/源代码/Output/x64/Debug/net6.0/Shader/particle.frag @@ -1,10 +1,12 @@ #version 460 core +uniform float time; + out vec3 fragColor; void main() { - fragColor = vec3( 0.5f,0.336f,0.9961f ); + fragColor = vec3( 0.5f,0.336f,mod( (0.9961f + time),1.0f) ); } \ No newline at end of file diff --git a/源代码/Output/x64/Release/net6.0/Shader/fbo.frag b/源代码/Output/x64/Release/net6.0/Shader/fbo.frag new file mode 100644 index 00000000..4cbc169f --- /dev/null +++ b/源代码/Output/x64/Release/net6.0/Shader/fbo.frag @@ -0,0 +1,13 @@ +#version 430 core + +in vec3 texCoord; + +out vec4 fragColor; + +uniform sampler2D tex; + +void main() +{ + fragColor = texture(tex, texCoord.xy); + //fragColor = vec4(0.0f,0.0f,0.0f,0.0f); +} \ No newline at end of file diff --git a/源代码/Output/x64/Release/net6.0/Shader/fbo.vert b/源代码/Output/x64/Release/net6.0/Shader/fbo.vert new file mode 100644 index 00000000..bb5c00c5 --- /dev/null +++ b/源代码/Output/x64/Release/net6.0/Shader/fbo.vert @@ -0,0 +1,13 @@ +#version 330 core + +layout(location = 0)in vec3 coord; +layout(location = 1)in vec3 tCoord; + +out vec3 texCoord; + +void main() +{ + gl_Position = vec4(coord.xyz,1.0f); + texCoord = tCoord; +} + diff --git a/源代码/Output/x64/Release/net6.0/Shader/main.frag b/源代码/Output/x64/Release/net6.0/Shader/main.frag new file mode 100644 index 00000000..6f8c1558 --- /dev/null +++ b/源代码/Output/x64/Release/net6.0/Shader/main.frag @@ -0,0 +1,17 @@ +#version 330 core + +in vec2 TexCoord; + +out vec4 FragColor; + +uniform vec4 color; +uniform sampler2D ourTexture; +uniform sampler2D ourTexture2; + +void main() +{ + vec4 tex1 = texture(ourTexture, TexCoord); + vec4 tex2 = texture(ourTexture2,TexCoord); + FragColor = mix(tex1 * vec4( color.xyz, 1.0), tex2, 0.2) /* *vec4( TexColor,1.0) /**/; +} + diff --git a/源代码/Output/x64/Release/net6.0/Shader/main.vert b/源代码/Output/x64/Release/net6.0/Shader/main.vert new file mode 100644 index 00000000..a3a23d5e --- /dev/null +++ b/源代码/Output/x64/Release/net6.0/Shader/main.vert @@ -0,0 +1,22 @@ +#version 330 core + +layout(location = 0) in vec3 aPos; +layout(location = 1) in vec3 aColor; +layout(location = 2) in vec2 aTextCoord; + +out vec2 TexCoord; + +uniform mat4x4 camera; + +void main() +{ + + TexCoord = aTextCoord; + vec4 temp = vec4(aPos.xyz,1.0); + gl_Position = /**/ camera * /**/ temp; +} + +//struct + + + diff --git a/源代码/Output/x64/Release/net6.0/Shader/particle.frag b/源代码/Output/x64/Release/net6.0/Shader/particle.frag new file mode 100644 index 00000000..d2eb95fd --- /dev/null +++ b/源代码/Output/x64/Release/net6.0/Shader/particle.frag @@ -0,0 +1,12 @@ +#version 460 core + +uniform float time; + +out vec3 fragColor; + +void main() +{ + + fragColor = vec3( 0.5f,0.336f,mod( (0.9961f + time),1.0f) ); + +} \ No newline at end of file diff --git a/源代码/Output/x64/Release/net6.0/Shader/particle.vert b/源代码/Output/x64/Release/net6.0/Shader/particle.vert new file mode 100644 index 00000000..83adda21 --- /dev/null +++ b/源代码/Output/x64/Release/net6.0/Shader/particle.vert @@ -0,0 +1,36 @@ +#version 460 core + + +layout(location = 0) in vec3 singleCoord; +layout(location = 1) in vec3 locations; +layout(location = 2) in float rotation; +layout(location = 3) in float scale; + +uniform mat4x4 Camera; + +void main() +{ + /**/ + mat4x4 scalingMat = mat4x4 + ( + scale,0,0,0, + 0,scale,0,0, + 0,0,scale,0, + 0,0,0,1 + ); + /**/ + /**/ + + mat4x4 rotationMat = mat4x4 + ( + cos(rotation),-sin(rotation),0,0, + sin(rotation),cos(rotation),0,0, + 0,0,1,0, + 0,0,0,1 + ); + + /**/ + + gl_Position = Camera * ( rotationMat * scalingMat * vec4( singleCoord.xyz , 1) + vec4( locations.xyz , 0)); + +} diff --git a/源代码/StgSharp/Controlling/Controls/BattleField.cs b/源代码/StgSharp/Controlling/Controls/BattleField.cs index ff413cbc..647449cc 100644 --- a/源代码/StgSharp/Controlling/Controls/BattleField.cs +++ b/源代码/StgSharp/Controlling/Controls/BattleField.cs @@ -43,9 +43,9 @@ namespace StgSharp.Controls { public class BattleField : ControllingItem { - public override vec4d[] TextureBox + public override ReadOnlySpan TextureBox { - get ; + get => throw new NotImplementedException() ; } public override IEnumerator GetEnumerator() diff --git a/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs b/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs index 7342c1fc..df2af953 100644 --- a/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs +++ b/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs @@ -1,4 +1,34 @@ -using StgSharp.Geometries; +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ButtonGroup.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Math; @@ -6,19 +36,36 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; +using System.Security.Cryptography.X509Certificates; using System.Text; +using System.Transactions; namespace StgSharp.Controls { - public class KeyboardButtonGroup : ControllingItem + public abstract class KeyboardButtonGroup : ControllingItem { - private List buttonList; + private List buttonList; private TriggerButton current; public KeyboardButtonGroup() { - buttonList = new List(); + buttonList = new List(); + } + + public override ReadOnlySpan TextureBox + { + get => throw new NotSupportedException(); + } + + public TriggerButton CurrentButton + { + get => current; + } + + protected List AllButton + { + get => buttonList; } public void AddButton(TriggerButton button) @@ -26,46 +73,79 @@ namespace StgSharp.Controls buttonList.Add(button); } - public TriggerButton CurrentButton - { - get => current; - } - public override vec4d[] TextureBox - { - get => throw new NotSupportedException(); - } - - public void MoveLeft() - { - - } - - public void MoveRight() - { - - } - - public void MoveUp() - { - - } - - public void MoveDown() - { - - } - - public void Confirm() - { - - } + public abstract void Confirm(); public override IEnumerator GetEnumerator() { - foreach (var item in buttonList) + foreach (TriggerButton item in buttonList) { yield return item.Single(); } } + + public void MoveDown() + { + TriggerButton button = current; + while ((button.Down != null) && button.Down.IsDisabled) + { + button = button.Right; + } + if (current == button) + { + return; + } + current.DeHighlight(); + button.Enable(); + current = button; + } + + public void MoveLeft() + { + TriggerButton button = current; + while ((button.Left != null) && button.Left.IsDisabled) + { + button = button.Left; + } + if (current == button) + { + return; + } + current.DeHighlight(); + button.Enable(); + current = button; + } + + public void MoveRight() + { + TriggerButton button = current; + while ((button.Right != null) && button.Right.IsDisabled) + { + button = button.Right; + } + if (current == button) + { + return; + } + current.DeHighlight(); + button.Enable(); + current = button; + } + + public void MoveUp() + { + TriggerButton button = current; + while ((button.Up != null) && button.Up.IsDisabled) + { + button = button.Right; + } + if (current == button) + { + return; + } + current.DeHighlight(); + button.Enable(); + current = button; + } + } } diff --git a/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs b/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs index 35f1081b..6eb782e8 100644 --- a/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs +++ b/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs @@ -20,7 +20,7 @@ namespace StgSharp.Controls Dictionary texIndex; PlainGeometryMesh _tittleMesh; - public override vec4d[] TextureBox + public override ReadOnlySpan TextureBox { get => throw new NotSupportedException(); } diff --git a/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs b/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs index 66945e17..1f056193 100644 --- a/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs +++ b/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs @@ -14,7 +14,7 @@ namespace StgSharp.Controls public vec2d Position { get; set; } public Rectangle BoundingBox { get; set; } - public abstract vec4d[] TextureBox { get; } + public abstract ReadOnlySpan TextureBox { get; } public abstract IEnumerator GetEnumerator(); diff --git a/源代码/StgSharp/Controlling/Controls/DecorationBox.cs b/源代码/StgSharp/Controlling/Controls/DecorationBox.cs index bce85ff0..e2c4515f 100644 --- a/源代码/StgSharp/Controlling/Controls/DecorationBox.cs +++ b/源代码/StgSharp/Controlling/Controls/DecorationBox.cs @@ -13,7 +13,7 @@ namespace StgSharp.Controls { private PlainGeometryMesh renderMesh; - public override vec4d[] TextureBox + public override ReadOnlySpan TextureBox { get => renderMesh.TextureCoord; } @@ -23,9 +23,9 @@ namespace StgSharp.Controls yield return renderMesh; } - public DecorationBox(Rectangle bound, Image texture, vec4d[] texCoord) + public DecorationBox(Rectangle bound, Image texture, vec2d[] texCoord) { - renderMesh = new PlainGeometryMesh(BoundingBox, texture, texCoord); + renderMesh = new PlainGeometryMesh(BoundingBox, new TextureProvider(texture, texCoord)); } } } diff --git a/源代码/StgSharp/Controlling/Controls/MarkingLable.cs b/源代码/StgSharp/Controlling/Controls/MarkingLable.cs index 58a9a248..a96ee60b 100644 --- a/源代码/StgSharp/Controlling/Controls/MarkingLable.cs +++ b/源代码/StgSharp/Controlling/Controls/MarkingLable.cs @@ -12,7 +12,7 @@ namespace StgSharp.Controls { public class MarkingLabel : ControllingItem { - public override vec4d[] TextureBox + public override ReadOnlySpan TextureBox { get => marker.TextureCoord; } diff --git a/源代码/StgSharp/Controlling/Controls/TriggerButton.cs b/源代码/StgSharp/Controlling/Controls/TriggerButton.cs index 876fbce9..2a3a1df7 100644 --- a/源代码/StgSharp/Controlling/Controls/TriggerButton.cs +++ b/源代码/StgSharp/Controlling/Controls/TriggerButton.cs @@ -35,81 +35,148 @@ using StgSharp.Math; using System; using System.Collections.Generic; +using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Controls { + public enum ButtonStatus + { + Error = 0b0, + Disable = 0b1, + Enable = 0b10, + Highlight = 0b100, + Confirm = 0b1000, + + DisableToEnable = Disable | Enable, + EnableToDisable = -(Enable | DisableToEnable), + + EnableToHighlight = Enable | Highlight, + HighlightToEnable = -(Enable | Highlight), + + HighlightToDisable = -(Highlight | Disable), + } + + public delegate void RenderButtonTextureCallback(ButtonStatus status, float beginTime, in TextureProvider texture); + public class TriggerButton : ControllingItem { - private AnimationBuilder switchAnimationBuilder; + private TextureProvider _texture; + private float _statusBeginTime; + + public TriggerButton Left { get; internal set; } + public TriggerButton Right { get; internal set; } + public TriggerButton Up { get; internal set; } + public TriggerButton Down { get; internal set; } #nullable enable - private Action? enableAction; - private Action? disableAction; - private Action? confirmAction; + private Action? enableCallback; + private Action? disableCallback; + private Action? confirmCallback; #nullable restore - public override vec4d[] TextureBox + protected ButtonStatus CurrentStatus { get; set; } + + private RenderButtonTextureCallback _renderButton; + + public event RenderButtonTextureCallback RenderButtonTexture { - get { return switchAnimationBuilder.TextureFrame.VertexStream; } + add + { + if (_renderButton == null) + { + _renderButton = value; + } + else + { + _renderButton += value; + } + } + remove + { + if (_renderButton != null) + { + _renderButton -= value; + } + } + } + + public override ReadOnlySpan TextureBox + { + get => MemoryMarshal.Cast(_texture.TextureCoordinate); } public bool IsHighLighted { get; internal set; } + public bool IsDisabled { get; internal set; } public event Action EnableEvent { - add { enableAction += value; } - remove { enableAction -= value; } + add { enableCallback += value; } + remove { enableCallback -= value; } } public event Action DisableEvent { - add { disableAction += value; } - remove { disableAction -= value; } + add { disableCallback += value; } + remove { disableCallback -= value; } } public event Action ConfirmEvent { - add { confirmAction += value; } - remove { confirmAction -= value; } + add { confirmCallback += value; } + remove { confirmCallback -= value; } } - public void Enable(AnimationBuilder animation) + public void Enable() { - if (!IsDisabled) + if (CurrentStatus == ButtonStatus.Disable) + { + CurrentStatus = ButtonStatus.DisableToEnable; + } + else { return; } - if (switchAnimationBuilder == null || switchAnimationBuilder.IsComplete) - { - switchAnimationBuilder = animation; - } - if( enableAction != null)enableAction(); + if ( enableCallback != null)enableCallback(); } - public void Disable(AnimationBuilder animation) + public void Disable() { - if (switchAnimationBuilder == null || switchAnimationBuilder.IsComplete) + CurrentStatus = CurrentStatus switch { - switchAnimationBuilder = animation; - } - if (disableAction != null) disableAction(); + ButtonStatus.Enable => ButtonStatus.EnableToDisable, + ButtonStatus.Highlight => ButtonStatus.HighlightToDisable, + _ => CurrentStatus, + }; + if (disableCallback != null) disableCallback(); } - public void Highlight(AnimationBuilder animation) + public void Highlight() { - if (switchAnimationBuilder == null || switchAnimationBuilder.IsComplete) + if (CurrentStatus == ButtonStatus.Enable) { - switchAnimationBuilder = animation; + CurrentStatus |= ButtonStatus.EnableToHighlight; + } + else + { + return; + } + if (confirmCallback != null) confirmCallback(); + } + + public void DeHighlight() + { + if (CurrentStatus == ButtonStatus.Highlight) + { + CurrentStatus = ButtonStatus.HighlightToEnable; } - if (confirmAction != null) confirmAction(); } public override IEnumerator GetEnumerator() { - yield return new PlainGeometryMesh(this.BoundingBox, switchAnimationBuilder.GetAnimationFrame(), - this.TextureBox); + _renderButton(CurrentStatus,_statusBeginTime, in _texture); + yield return new PlainGeometryMesh(this.BoundingBox, _texture); } }//----------------------------------- End of class -------------------------------------------- diff --git a/源代码/StgSharp/Controlling/IO/InternalIO.cs b/源代码/StgSharp/Controlling/IO/InternalIO.cs index b3a37e34..7d616fc0 100644 --- a/源代码/StgSharp/Controlling/IO/InternalIO.cs +++ b/源代码/StgSharp/Controlling/IO/InternalIO.cs @@ -30,7 +30,7 @@ //----------------------------------------------------------------------- using StgSharp.Geometries; using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using System; using System.Collections.Generic; @@ -103,10 +103,12 @@ namespace StgSharp try { IntPtr procPtr = -#if Windows +#if WINDOWS IntPtr.Zero; -#elif Linux +#elif LINUX +#else + IntPtr.Zero; #endif return procPtr; } diff --git a/源代码/StgSharp/Controlling/ViewDesigner.cs b/源代码/StgSharp/Controlling/ViewDesigner.cs new file mode 100644 index 00000000..543765ae --- /dev/null +++ b/源代码/StgSharp/Controlling/ViewDesigner.cs @@ -0,0 +1,92 @@ +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Controls; +using StgSharp.Controlling.UsrActivity; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; + +namespace StgSharp.Graphics +{ + /// + /// ViewDesigner provides descriptions of various controls in the view, + /// binds the controls to specific user actions and behaviors, + /// and describes the layout and interactions of each control. + /// + public abstract class ViewDesigner where TView:View + { + protected TView _binding; + + private KeyboardButtonGroup currentButtonGroup; + + private List _controlList; + + public ViewDesigner() + { + _controlList = new List(); + } + + protected TView Binding + { + get => _binding; + } + + public TButtonGroup CreateKeyboardButtonGroup( + ITrigger leftBidning, + ITrigger rightBinding, + ITrigger upBinding, + ITrigger downBinding, + ITrigger confirmBinding + ) + where TButtonGroup : KeyboardButtonGroup,new() + { + var ret = new TButtonGroup(); + _controlList.Add(ret); + currentButtonGroup = ret; + _binding.Responder[leftBidning] = ret.MoveLeft; + _binding.Responder[rightBinding] = ret.MoveRight; + _binding.Responder[upBinding] = ret.MoveUp; + _binding.Responder[downBinding] = ret.MoveDown; + _binding.Responder[confirmBinding] = ret.Confirm; + return ret; + } + + public TriggerButton CreateKeyboardButton( + Rectangle bonding, TextureProvider defaultAnimation, bool isEnable + ) + { + var ret = new TriggerButton(); + ret.BoundingBox = bonding; + if (isEnable) + { + ret.IsDisabled = false; + ret.Enable(); + } + else + { + ret.IsDisabled = true; + ret.Disable(); + } + currentButtonGroup.AddButton(ret); + return ret; + } + + public CharacterLineIndexImage CreateCharacterLine( + int length, char blankFilling, PlainGeometryMesh tittle, IEnumerable<(char,PlainGeometryMesh)> charList + ) + { + var ret = new CharacterLineIndexImage(length, blankFilling,tittle,charList); + _controlList.Add(ret); + return ret; + } + + public abstract void CustomizedInitialize(); + + public abstract bool ValidateInitializing(); + + }//---------------------------------- End of Class ----------------------------------------- + +} diff --git a/源代码/StgSharp/Controlling/ViewResponder.cs b/源代码/StgSharp/Controlling/ViewResponder.cs new file mode 100644 index 00000000..ea33bdbb --- /dev/null +++ b/源代码/StgSharp/Controlling/ViewResponder.cs @@ -0,0 +1,92 @@ +using StgSharp.Controlling.UsrActivity; +using StgSharp.Graphics; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public abstract class ViewResponder where TView: View + { + private View _viewbinding; + private Dictionary keyCallbackIndex; + private Dictionary nameToCallbackMap; + private bool _isInitialized; + + + protected ViewResponder() + { + keyCallbackIndex = new Dictionary(); + nameToCallbackMap = new Dictionary(); + } + + internal void ProcessUserInput() + { + foreach (var pair in keyCallbackIndex) + { + ITrigger t = pair.Key; + if (InternalIO.glfwGetKey(_viewbinding.ViewHandle, t.TargetKeyOrButtonID) == t.TriggeredStatus) + { + pair.Value(); + } + } + } + + public Action this[ITrigger trigger] + { + get => keyCallbackIndex.TryGetValue(trigger, out Action callback) ? callback : null; + set + { + if (keyCallbackIndex.TryGetValue(trigger, out Action callback)) + { + callback += value; + } + else + { + keyCallbackIndex.Add(trigger, value); + } + } + } + + internal void Init(Func keyGetter) + { + if (_isInitialized) + { + return; + } + CustomizedInitialize( + (trigger, name) => + { + if (!nameToCallbackMap.TryGetValue(name, out Action ret)) + { + ret = keyGetter.Invoke(name)?? + throw new InvalidOperationException($"Cannot find method named {name} in binded view model"); + } + this[trigger] = ret; + return ret; + } + ); + } + + public void ProcessInput() + { + foreach (var pair in keyCallbackIndex) + { + if (InternalIO.glfwGetKey(_viewbinding.ViewHandle,(int)pair.Key.TargetKeyOrButtonID) == pair.Key.TriggeredStatus) + { + pair.Value(); + } + } + } + + public abstract void CustomizedInitialize(Func keyRegister); + + public abstract bool ValidateInitializing(); + + } + + +} diff --git a/源代码/StgSharp/Environment/GlobalSetting.cs b/源代码/StgSharp/Environment/GlobalSetting.cs index de2d2cb6..cc062f58 100644 --- a/源代码/StgSharp/Environment/GlobalSetting.cs +++ b/源代码/StgSharp/Environment/GlobalSetting.cs @@ -74,7 +74,7 @@ namespace StgSharp } /// - /// Init an instance of OpenGL program, + /// CustomizeInit an instance of OpenGL program, /// This method should be called before any other StgSharp api. /// public static void InitGL(int majorVersion, int minorVersion) diff --git a/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs b/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs index 469a9b19..ce51d0ea 100644 --- a/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs +++ b/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs @@ -8,6 +8,7 @@ using System.Text; namespace StgSharp.Geometries { + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate vec3d GeometryMotionDelegate(TimeSpanProvider timeSource, out float rotation); public class GeometryMotion @@ -20,15 +21,7 @@ namespace StgSharp.Geometries public static GeometryMotion DefaultMotion { - get - { - return new GeometryMotion - ( - true, - null, - null - ); - } + get => new GeometryMotion(true, null, null); } private static vec3d defaultMotion(TimeSpanProvider provider, out float rotation) @@ -60,7 +53,7 @@ namespace StgSharp.Geometries { movement = motionDelegate; } - sourceIsStatic = false; + //sourceIsStatic = false; } public bool IsIncrement @@ -71,11 +64,11 @@ namespace StgSharp.Geometries public unsafe void RunMotion(ref vec3d coord, ref float rotation) { - float rot = 0; + float rot; vec3d vec; if (sourceIsStatic) { - vec = ((delegate*)handle)(time, out rot); + vec = ((delegate* unmanaged[Cdecl])handle)(time, out rot); } else { @@ -89,7 +82,7 @@ namespace StgSharp.Geometries } else { - coord = vec.XYZ; + coord = vec; rotation = rot; } } diff --git a/源代码/StgSharp/GlobalSuppressions.cs b/源代码/StgSharp/GlobalSuppressions.cs new file mode 100644 index 00000000..9ad2d953 --- /dev/null +++ b/源代码/StgSharp/GlobalSuppressions.cs @@ -0,0 +1,12 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Design", "CA1008:枚举应具有零值", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.ShaderStatus")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``2(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1}")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``3(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2}")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``4(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2,``3}")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.Uniform`4")] diff --git a/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs b/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs new file mode 100644 index 00000000..830edec6 --- /dev/null +++ b/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics +{ + public static class ImageHelper + { + public static void Resize(Image i, int width, int height, ImageMovement move) + { + if (i == null) + { + throw new ArgumentNullException(nameof(i)); + } + Array.Resize(ref i.data, width * height * i.PixelSize); + i.Height = height; + i.Width = width; + switch (move) + { + case ImageMovement.Discard: + break; + case ImageMovement.Top: + break; + default: + throw new NotSupportedException("Invalid or not supported data remanence"); + } + } + + } + + [Flags] + public enum ImageMovement + { +#pragma warning disable CA1008 + Discard = 0, +#pragma warning restore CA1008 + Top = 1, + Bottom = 2, + Left = 4, + Right = 8, + TopLeft = Top | Left, + BottomLeft = Bottom | Left, + TopRight = Top | Right, + BottomRight = Bottom | Right, + } +} diff --git a/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs b/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs new file mode 100644 index 00000000..b0c7920a --- /dev/null +++ b/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BufferObjectBase.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + /// + /// Interface of all kinds OpenGL buffer objects + /// + public abstract class BufferObjectBase : IDisposable + { + protected RenderStream binding; + protected GlHandle[] _bufferHandle; + + /// + /// Get the only handle to one of the Object instance + /// + /// + /// + public GlHandle this[int index] => _bufferHandle[index]; + + /// + /// Bind a buffer instance to OpenGL + /// + /// Index of handle of the object in this instance to be bind + public abstract void Bind(int index); + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + /// + public override string ToString() + { + return $"This is a {GetType().FullName}, containing {_bufferHandle.Length} buffer handles: {_bufferHandle.ToString()}."; + } + + protected abstract void Dispose(bool disposing); + + ~BufferObjectBase() + { + Dispose(disposing: false); + } + + } +} diff --git a/源代码/StgSharp/Graphics/Define/StructDefine.cs b/源代码/StgSharp/Graphics/Define/StructDefine.cs index 29d2ec5e..872ffd5b 100644 --- a/源代码/StgSharp/Graphics/Define/StructDefine.cs +++ b/源代码/StgSharp/Graphics/Define/StructDefine.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using System; using System.Runtime.InteropServices; diff --git a/源代码/StgSharp/Graphics/Define/glConst.cs b/源代码/StgSharp/Graphics/Define/glConst.cs index af825ad9..c9ac569f 100644 --- a/源代码/StgSharp/Graphics/Define/glConst.cs +++ b/源代码/StgSharp/Graphics/Define/glConst.cs @@ -31,7 +31,7 @@ using System; using System.Drawing; -namespace StgSharp.Graphics.GL +namespace StgSharp.Graphics.OpenGL { //rename types in style of GLconst @@ -4850,7 +4850,7 @@ namespace StgSharp.Graphics.GL public static class glAttachment { private static int colorRange = - glFunc.GetMaskInteger((uint)GLconst.MAX_COLOR_ATTACHMENTS); + GlFunction.CurrentGL.GetMaskInteger((uint)GLconst.MAX_COLOR_ATTACHMENTS); public static uint Color(int i) { diff --git a/源代码/StgSharp/Graphics/Define/glEnum.cs b/源代码/StgSharp/Graphics/Define/glEnum.cs index f4005866..2b5cbd38 100644 --- a/源代码/StgSharp/Graphics/Define/glEnum.cs +++ b/源代码/StgSharp/Graphics/Define/glEnum.cs @@ -30,9 +30,11 @@ //----------------------------------------------------------------------- -namespace StgSharp.Graphics.GL +using System.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL { - public enum ImageChannelLayout + public enum PixelChannelLayout { UByte = GLconst.UNSIGNED_BYTE, Byte = GLconst.BYTE, @@ -41,20 +43,31 @@ namespace StgSharp.Graphics.GL UInt = GLconst.UNSIGNED_INT, Int = GLconst.INT, Float = GLconst.FLOAT, - UByte332 = 0x8032, // GL_UNSIGNED_BYTE_3_3_2 - UByte233Rev = 0x8362, // GL_UNSIGNED_BYTE_2_3_3_REV - UShort565 = 0x8363, // GL_UNSIGNED_SHORT_5_6_5 - UShort565Rev = 0x8364, // GL_UNSIGNED_SHORT_5_6_5_REV - UShort4444 = 0x8033, // GL_UNSIGNED_SHORT_4_4_4_4 - UShort4444Rev = 0x8034, // GL_UNSIGNED_SHORT_4_4_4_4_REV - UShort5551 = 0x8035, // GL_UNSIGNED_SHORT_5_5_5_1 - UShort1555Rev = 0x8366, // GL_UNSIGNED_SHORT_1_5_5_5_REV - UInt8888 = 0x8035, // GL_UNSIGNED_INT_8_8_8_8 - UInt8888Rev = 0x8367, // GL_UNSIGNED_INT_8_8_8_8_REV - UInt1010102 = 0x8036, // GL_UNSIGNED_INT_10_10_10_2 - UInt2101010Rev = 0x8368 // GL_UNSIGNED_INT_2_10_10_10_REV + UByte332 = GLconst.UNSIGNED_BYTE_3_3_2, + UByte233Rev = GLconst.UNSIGNED_BYTE_2_3_3_REV, + UShort565 = GLconst.UNSIGNED_SHORT_5_6_5, + UShort565Rev = GLconst.UNSIGNED_SHORT_5_6_5_REV, + UShort4444 = GLconst.UNSIGNED_SHORT_4_4_4_4, + UShort4444Rev = GLconst.UNSIGNED_SHORT_4_4_4_4_REV, + UShort5551 = GLconst.UNSIGNED_SHORT_5_5_5_1, + UShort1555Rev = GLconst.UNSIGNED_SHORT_1_5_5_5_REV, + UInt8888 = GLconst.UNSIGNED_INT_8_8_8_8, + UInt8888Rev = GLconst.UNSIGNED_INT_8_8_8_8_REV, + UInt1010102 = GLconst.UNSIGNED_INT_10_10_10_2, + UInt2101010Rev = GLconst.UNSIGNED_INT_2_10_10_10_REV } + public enum FrameBufferStatus + { + Complete = GLconst.FRAMEBUFFER_COMPLETE, // GL_FRAMEBUFFER_COMPLETE + IncompleteAttachment = GLconst.FRAMEBUFFER_INCOMPLETE_ATTACHMENT, // GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT + IncompleteMissingAttachment = GLconst.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, // GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT + IncompleteDrawBuffer = GLconst.FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER, // GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER + IncompleteReadBuffer = GLconst.FRAMEBUFFER_INCOMPLETE_READ_BUFFER, // GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER + Unsupported = GLconst.FRAMEBUFFER_UNSUPPORTED, // GL_FRAMEBUFFER_UNSUPPORTED + IncompleteMultisample = GLconst.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, // GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE + IncompleteLayerTargets = GLconst.FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS // GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS + } internal enum VkStructureType : uint { diff --git a/源代码/StgSharp/Graphics/Image.cs b/源代码/StgSharp/Graphics/Image.cs index 57421081..52e8b1b6 100644 --- a/源代码/StgSharp/Graphics/Image.cs +++ b/源代码/StgSharp/Graphics/Image.cs @@ -29,11 +29,12 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Data; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Math; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; @@ -49,6 +50,17 @@ namespace StgSharp.Graphics internal byte[] data; internal ImageInfo info; + public PixelChannelLayout PixelLayout + { + get => info.pixelLayout; + private set => info.pixelLayout = value; + } + + internal unsafe Image() + { + info = new ImageInfo(); + } + internal Image(ImageInfo information) { info = information; @@ -56,16 +68,6 @@ namespace StgSharp.Graphics //int length = info.width * info.height * info.channel; } - public unsafe Image() - { - info = new ImageInfo(); - } - - public ref byte[] DataStream - { - get => ref data; - } - public (int width, int height) Size { get => (info.Width, info.Height); @@ -78,12 +80,15 @@ namespace StgSharp.Graphics get => info.Height; internal set => info.Height = value; } + public int Width { get => info.Width; internal set => info.Width = value; } + public int PixelSize => GlHelper.GetPixelSize(info.pixelLayout, info.Channel); + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.PixelImage; public void FromBytes(byte[] stream) @@ -101,71 +106,68 @@ namespace StgSharp.Graphics return ret; } - public static Image FromMemory((int width, int height) size, int channelCount, byte[] stream) + public static Image FromMemory((int width, int height) size, ImageChannel channel, PixelChannelLayout layout, byte[] stream) { ImageInfo _info = new ImageInfo { Height = size.height, Width = size.width, - ChannelCount = channelCount, + Channel = channel, StreamPtr = IntPtr.Zero }; Image ret = new Image(_info); + ret.PixelLayout = layout; ret.data = stream; return ret; } - public glArrayHandle GetArrayHandle() + public static Image FromMemory((int width, int height) size, ImageChannel channel, byte[] stream) { - if ((data == Array.Empty()) || (data == null)) + ImageInfo _info = new ImageInfo { - this.GetBytes(); - return new glArrayHandle(data); - } - return new glArrayHandle(data); + Height = size.height, + Width = size.width, + Channel = channel, + StreamPtr = IntPtr.Zero + }; + Image ret = new Image(_info); + ret.PixelLayout = PixelChannelLayout.Byte; + ret.data = stream; + return ret; } public unsafe byte[] GetBytes() { - if (data == null) - { - int size = Width * Height * ChannelCount; - data = new byte[size]; - int i = 0; - fixed (byte* bptr = data) + if (data.Length == 0) { - byte* pptr = bptr; - for (; i < size; i += 16) + int size = Width * Height * GlHelper.GetPixelSize(PixelLayout, Channel); + data = new Span((byte*)info.StreamPtr, size).ToArray(); + fixed (ImageInfo* pptr = &info) { - *(M128*)(pptr + i) = *(M128*)(info.StreamPtr + i); - } - for (; i < size; i++) - { - *(pptr + i) = *(byte*)(info.StreamPtr + i); + InternalIO.InternalUnloadImage(pptr); } + info.StreamPtr = IntPtr.Zero; } - fixed (ImageInfo* pptr = &info) - { - InternalIO.InternalUnloadImage(pptr); - } - info.StreamPtr = IntPtr.Zero; - } - return data; + return data; } - public Image ProvideImage() + public byte[] PixelBuffer + { + get{ + if ((data.Length == 0) || (data == null)) + { + GetBytes(); + return data!; + } + return data; + } + } + public Image ProvideImage() => this; + + byte[] ISSDSerializable.GetBytes() { throw new NotImplementedException(); } - - ~Image() - { - if (info.StreamPtr != IntPtr.Zero) - { - // Marshal.FreeHGlobal(info.StreamPtr); - } - } - } [StructLayout(LayoutKind.Sequential)] @@ -173,10 +175,10 @@ namespace StgSharp.Graphics { private ImageChannel channel; - private int channelCount; private int height; private int width; private IntPtr pixelPtr; + internal PixelChannelLayout pixelLayout; public ImageChannel Channel { @@ -184,42 +186,12 @@ namespace StgSharp.Graphics set { channel = value; - switch (channel) - { - case ImageChannel.SingleColor: - channelCount = 1; break; - case ImageChannel.DoubleColor: - channelCount = 2; break; - case ImageChannel.FullColor: - channelCount = 3; break; - case ImageChannel.WithAlphaChannel: - channelCount = 4; break; - default: - throw new InvalidCastException("Unknown color channel decoding setting."); - } } } public int ChannelCount { - get => channelCount; - set - { - channelCount = value; - switch (channelCount) - { - case 1: - channel = ImageChannel.SingleColor; break; - case 2: - channel = ImageChannel.DoubleColor; break; - case 3: - channel = ImageChannel.FullColor; break; - case 4: - channel = ImageChannel.WithAlphaChannel; break; - default: - throw new InvalidCastException("Unknown color channel decoding setting."); - } - } + get => GlHelper.GetChannelCount(channel); } public int Height @@ -230,7 +202,7 @@ namespace StgSharp.Graphics public int StreamSize { - get => width * height * channelCount; + get => width * height * GlHelper.GetPixelSize(pixelLayout, channel); } public int Width @@ -256,9 +228,53 @@ namespace StgSharp.Graphics { SingleColor = GLconst.RED, DoubleColor = GLconst.RG, - FullColor = GLconst.RGB, + TripleColor = GLconst.RGB, WithAlphaChannel = GLconst.RGBA, } +} +namespace StgSharp.Graphics.OpenGL +{ + public static partial class GlHelper + { + internal static int GetChannelCount(ImageChannel channel) + { + return channel switch + { + ImageChannel.SingleColor => 1, + ImageChannel.DoubleColor => 2, + ImageChannel.TripleColor => 3, + ImageChannel.WithAlphaChannel => 4, + _ => throw new InvalidCastException("Unknown color channel decoding setting.") + }; + } + + internal static int GetPixelSize(PixelChannelLayout layout, ImageChannel cahnnel) + { + return layout switch + { + PixelChannelLayout.UByte => sizeof(byte) * GetChannelCount(cahnnel), + PixelChannelLayout.Byte => sizeof(byte) * GetChannelCount(cahnnel), + PixelChannelLayout.UShort => sizeof(short) * GetChannelCount(cahnnel), + PixelChannelLayout.Short => sizeof(short) * GetChannelCount(cahnnel), + PixelChannelLayout.UInt => sizeof(int) * GetChannelCount(cahnnel), + PixelChannelLayout.Int => sizeof(int) * GetChannelCount(cahnnel), + PixelChannelLayout.Float => sizeof(float) * GetChannelCount(cahnnel), + PixelChannelLayout.UByte332 => sizeof(byte), + PixelChannelLayout.UByte233Rev => sizeof(byte), + PixelChannelLayout.UShort565 => sizeof(short), + PixelChannelLayout.UShort565Rev => sizeof(short), + PixelChannelLayout.UShort4444 => sizeof(short), + PixelChannelLayout.UShort4444Rev => sizeof(short), + PixelChannelLayout.UShort5551 => sizeof(short), + PixelChannelLayout.UShort1555Rev => sizeof(short), + PixelChannelLayout.UInt8888 => sizeof(int), + PixelChannelLayout.UInt8888Rev => sizeof(int), + PixelChannelLayout.UInt1010102 => sizeof(int), + PixelChannelLayout.UInt2101010Rev => sizeof(int), + _ => throw new ArgumentException("Unknown layout type"), + }; + } + } } \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs new file mode 100644 index 00000000..56d3a361 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EBO.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + /// + /// A collection of handle to Element Buffer Object in OpenglFunc. + /// Each value indexed from instance of this class this + /// is the only handle to one Element Buffer Object. + /// + public unsafe class ElementBuffer : GlBufferObjectBase + { + + internal ElementBuffer(int n, glRenderStream binding):base(binding) + { + _bufferHandle = GL.GenBuffers(n); + } + + public override sealed void Bind(int index) + { + GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); + } + + public void SetValue(int index, T[] bufferArray, BufferUsage usage) + where T : struct, IConvertible + { + GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); + GL.SetBufferData(BufferType.ElementArrayBuffer, bufferArray, usage); + } + + public void SetValue(int index, ReadOnlySpan bufferSpan, BufferUsage usage) + where T : struct, IConvertible + { + GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); + GL.SetBufferData(BufferType.ElementArrayBuffer, bufferSpan, usage); + } + + protected override sealed void Dispose(bool disposing) + { + if (disposing) + { + GL.DeleteBuffers(_bufferHandle); + } + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs new file mode 100644 index 00000000..03f59d0a --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs @@ -0,0 +1,65 @@ +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ +#pragma warning disable CA1008 +#pragma warning disable CA1028 + public enum FrameBufferTarget:uint +#pragma warning restore CA1028 +#pragma warning restore CA1008 + { + Read = GLconst.READ_FRAMEBUFFER, + All = GLconst.FRAMEBUFFER, + Draw = GLconst.DRAW_FRAMEBUFFER, + } + + public class FrameBuffer : GlBufferObjectBase + { + internal unsafe FrameBuffer(int count, glRenderStream binding):base(binding) + { + _bufferHandle = GL.GenFrameBuffers(count); + } + + /// + /// Bind the frame buffer object with name frame buffer to the frame buffer target specified by target. + /// will be set as default target. + /// + /// Index of object to be binded in handle set + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe override void Bind(int index) + { + GL.BindFrameBuffer(FrameBufferTarget.All,_bufferHandle[index]); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void BindNull() + { + GlFunction.CurrentGL.BindFrameBuffer(FrameBufferTarget.All,GlHandle.Zero); + } + + /// + /// Bind the frame buffer object with name frame buffer to the frame buffer target specified by target. + /// Target of this frame buffer should be set manually. + /// + /// The frame buffer target of the binding operation. + /// Index of object to be binded in handle set + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void Bind(FrameBufferTarget target, int index) + { + GL.BindFrameBuffer(target, _bufferHandle[index]); + } + + protected override void Dispose(bool disposing) + { + throw new NotImplementedException(); + } + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs new file mode 100644 index 00000000..cd5ff941 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs @@ -0,0 +1,22 @@ +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract class GlBufferObjectBase : BufferObjectBase + { + private readonly glRenderStream _contextBinding; + + protected GlBufferObjectBase(glRenderStream contextBinding) + { + binding = contextBinding; + _contextBinding = contextBinding; + } + + protected GlFunction GL => _contextBinding.GL; + + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs new file mode 100644 index 00000000..91f27c83 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs @@ -0,0 +1,39 @@ +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Security.Principal; +using System.Text; + + +namespace StgSharp.Graphics.OpenGL +{ + + + + public class RenderBuffer : GlBufferObjectBase + { + public RenderBuffer(int count, glRenderStream binding):base(binding) + { + _bufferHandle = GL.GenRenderBuffer(count); + } + + public override void Bind(int index) + { + GL.BindRenderBuffer(this[index]); + } + + protected override void Dispose(bool disposing) + { + throw new NotImplementedException(); + } + + public void Store(RenderBufferInternalFormat format, (int width,int height) size) + { + if (size.width > binding.Width || size.height>binding.Height) + { + StgSharp.LogWarning("FrameBuffer is larger than current canvas binding"); + } + } + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs new file mode 100644 index 00000000..4e72cc91 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs @@ -0,0 +1,156 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="texture.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe class TextureGL + { + private GlFunction GL; + internal static bool[] unitActivated = new bool[16]; + internal GlHandle[] _textureHandle; + internal Image[] sourceList; + + public GlHandle this[int index] + { + get => _textureHandle[index]; + } + + internal TextureGL(int n, glRenderStream binding) + { + sourceList = new Image[n]; + this.GL = binding.GL; + _textureHandle = GL.GenTextures(n); + } + + public void ActivateAs(TextureUnit unit) + { + GL.ActiveTexture((uint)unit); + } + + public void Bind2D(int index) + { + GL.BindTexture(GLconst.TEXTURE_2D, _textureHandle[index]); + } + + /// + /// Load an to certain texture. + /// + /// + /// + public unsafe void LoadTexture(int index, Image i) + { + sourceList[index] = i; + var handle = sourceList[index].PixelBuffer; + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, (uint)i.Channel, + (uint)sourceList[index].Width, (uint)sourceList[index].Height, + (uint)i.Channel, i.PixelLayout, + pixels: handle + ); + GL.GenerateMipmap(Texture2DTarget.Texture2D); + } + + + + #region texture setting + + public void Set2dFilterProperty( + Filter onMinify, Filter onMagnify) + { + GL.TextureParameter(GLconst.TEXTURE_2D, GLconst.TEXTURE_MIN_FILTER, (int)onMinify); + GL.TextureParameter(GLconst.TEXTURE_2D, GLconst.TEXTURE_MAG_FILTER, (int)onMagnify); + } + + public void Set2dWrapProperty( + Wrap onHorizontial, Wrap onVertical) + { + GL.TextureParameter(GLconst.TEXTURE_2D, GLconst.TEXTURE_WRAP_S, (int)onHorizontial); + GL.TextureParameter(GLconst.TEXTURE_2D, GLconst.TEXTURE_WRAP_T, (int)onVertical); + } + + #endregion texture setting + + + } + +#pragma warning disable CA1008 + public enum Filter +#pragma warning restore CA1008 + { + Nearest = GLconst.NEAREST, + Linear = GLconst.LINEAR, + NearestLinearMipmap = GLconst.NEAREST_MIPMAP_LINEAR, + LinearLinearMipmap = GLconst.LINEAR_MIPMAP_LINEAR, + NearestNearestMipmap = GLconst.NEAREST_MIPMAP_NEAREST, + LinearNearestMipmap = GLconst.LINEAR_MIPMAP_NEAREST, + } + +#pragma warning disable CA1008 + public enum TextureUnit +#pragma warning restore CA1008 + { + Unit0 = GLconst.TEXTURE0, + Unit1 = GLconst.TEXTURE1, + Unit2 = GLconst.TEXTURE2, + Unit3 = GLconst.TEXTURE3, + Unit4 = GLconst.TEXTURE4, + Unit5 = GLconst.TEXTURE5, + Unit6 = GLconst.TEXTURE6, + Unit7 = GLconst.TEXTURE7, + Unit8 = GLconst.TEXTURE8, + Unit9 = GLconst.TEXTURE9, + Unit10 = GLconst.TEXTURE10, + Unit11 = GLconst.TEXTURE11, + Unit12 = GLconst.TEXTURE12, + Unit13 = GLconst.TEXTURE13, + Unit14 = GLconst.TEXTURE14, + Unit15 = GLconst.TEXTURE15, + } + +#pragma warning disable CA1008 + public enum Wrap +#pragma warning restore CA1008 + { + Repeat = GLconst.REPEAT, + MirroredRepeat = GLconst.MIRRORED_REPEAT, + ClampToEdge = GLconst.CLAMP_TO_EDGE, + ClampToBorder = GLconst.CLAMP_TO_BORDER, + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs new file mode 100644 index 00000000..9b780137 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="VAO.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe class VertexArray : GlBufferObjectBase + { + + internal VertexArray(int n, glRenderStream binding):base(binding) + { + _bufferHandle = GL.GenVertexArrays(n); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override sealed void Bind(int index) + { + GL.BindVertexArray(_bufferHandle[index]); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void BindNull() + { + GlFunction.CurrentGL.BindVertexArray(GlHandle.Zero); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetVertexAttribute(uint index, int vertexLength, TypeCode dataType, bool isNomalized, uint stride, int pointer) + { + GL.SetVertexAttribute( + index, vertexLength, dataType, + isNomalized, + stride, pointer); + } + + protected override sealed void Dispose(bool disposing) + { + if (disposing) + { + GL.DeleteVertexArrays(_bufferHandle); + } + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs new file mode 100644 index 00000000..265a70b8 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="VBO.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Net.Security; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe class VertexBuffer : GlBufferObjectBase + { + + internal VertexBuffer(int n, glRenderStream binding):base(binding) + { + _bufferHandle = GL.GenBuffers(n); + } + + public override sealed void Bind(int index) + { + GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + } + + /// + /// Set data to current vertex buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// Data to write in + /// How OpenGL use these data, defined by + public void WriteMatrixData(int index, T bufferData, BufferUsage usage) + where T : struct, IMat + { + GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + GL.SetBufferData(BufferType.ArrayBuffer, bufferData, usage); + } + + /// + /// Set data to current vertex buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// Data to write in + /// How OpenGL use these data, defined by + public void WriteScalerData(int index, T[] bufferArray, BufferUsage usage) + where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { + GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + GL.SetBufferData(BufferType.ArrayBuffer, bufferArray, usage); + } + + /// + /// Set data to current vertex buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A of data to write in + /// How OpenGL use these data, defined by + public void WriteScalerData(int index, ReadOnlySpan scalerSpan, BufferUsage usage) + where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { + GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + GL.SetBufferData(BufferType.ArrayBuffer, scalerSpan, usage); + } + + /// + /// Set data to current vertex buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A of data to write in + /// How OpenGL use these data, defined by + public void WriteVectorData(int index, ReadOnlySpan vectorSpan, BufferUsage usage) where T : struct, IVector + { + GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorSpan, usage); + } + + /// + /// Set data to current vertex buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A array of data to write in + /// How OpenGL use these data, defined by + public void WriteVectorData(int index, T[] vectorArray, BufferUsage usage) where T : struct, IVector + { + GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorArray, usage); + } + + /// + /// + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Unbind() + { + GL.BindBuffer(BufferType.ArrayBuffer, GlHandle.Zero); + } + + protected override sealed void Dispose(bool disposing) + { + if (disposing) + { + GL.DeleteBuffers(_bufferHandle); + } + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/GLresourceGenrator.cs b/源代码/StgSharp/Graphics/OpenGL/GLresourceGenrator.cs new file mode 100644 index 00000000..9dbbceeb --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/GLresourceGenrator.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GLresourceGenrator.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class glRenderStream + { + + /// + /// Create a set of . + /// + /// Amount of EBO to be created. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected ElementBuffer CreateElementBuffer(int count) + { + return new ElementBuffer(count, this); + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected RenderBuffer CreateRenderBuffer(int count) + { + return new RenderBuffer(count, this); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected FrameBuffer CreateFrameBuffer(int count) + { + return new FrameBuffer(count, this); + } + + /// + /// Create a sets of + /// + /// Amount of textures to be created. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected TextureGL CreateTexture(int count) + { + return new TextureGL(count, this); + } + + /// + /// Create a set of . + /// + /// Amount of VAO to be created. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected VertexArray CreateVertexArray(int count) + { + return new VertexArray(count, this); + } + + /// + /// Create a set of . + /// + /// Amount of Object to be created. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected VertexBuffer CreateVertexBuffer(int count) + { + return new VertexBuffer(count, this); + } + + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/GlException.cs b/源代码/StgSharp/Graphics/OpenGL/GlException.cs new file mode 100644 index 00000000..089ba792 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/GlException.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.Serialization; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed class GlArrayFormatException : Exception + { + public GlArrayFormatException(PixelChannelLayout layout, string arrayname): + base($"{arrayname} cannot be used as layout of {layout}") + { + } + + internal GlArrayFormatException(string message) : base(message) + { + } + + internal GlArrayFormatException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } + + internal GlArrayFormatException(string message, Exception innerException) : base(message, innerException) + { + } + } + + public static partial class GlHelper + { + public static bool CheckArrayFormat(this Array array, PixelChannelLayout layout) + { + return layout switch + { + PixelChannelLayout.Byte or PixelChannelLayout.UByte332 or PixelChannelLayout.UByte233Rev + => array is byte[] || array is sbyte[], + PixelChannelLayout.Short => array is short[], + PixelChannelLayout.UShort => array is ushort[], + PixelChannelLayout.Int => array is int[], + PixelChannelLayout.Float => array is float[], + PixelChannelLayout.UShort4444 => array is ushort[] || array is byte[], + PixelChannelLayout.UByte => array is byte[] || array is sbyte[], + PixelChannelLayout.UInt => array is uint[], + PixelChannelLayout.UShort565 or + PixelChannelLayout.UShort565Rev or + PixelChannelLayout.UShort4444Rev or + PixelChannelLayout.UShort5551 or + PixelChannelLayout.UShort1555Rev => array is ushort[], + PixelChannelLayout.UInt8888Rev or + PixelChannelLayout.UInt1010102 or + PixelChannelLayout.UInt2101010Rev => array is int[], + PixelChannelLayout.UInt8888 => array is uint[] or byte[], + _ => false, + }; + } + + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/GlHandle.cs b/源代码/StgSharp/Graphics/OpenGL/GlHandle.cs new file mode 100644 index 00000000..d64a86de --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/GlHandle.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GLhandle.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +#if Windows +using Microsoft.Win32.SafeHandles; +#endif + +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; +using System.Security.AccessControl; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + [StructLayout(LayoutKind.Explicit, Size = 4)] + public struct GlHandle + { + [FieldOffset(0)] public uint Value; + [FieldOffset(0)] public int SignedValue; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static GlHandle Alloc(uint value) + { + return new GlHandle() { Value = value }; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static GlHandle SignedAlloc(int value) + { + return new GlHandle() { SignedValue = value }; + } + + public static GlHandle Zero + { + get => new GlHandle() { Value = 0 }; + } + + } + +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/OpenGLAPICalling.cs b/源代码/StgSharp/Graphics/OpenGL/OpenGLAPICalling.cs new file mode 100644 index 00000000..a706fad6 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/OpenGLAPICalling.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + [AttributeUsage(AttributeTargets.Method)] + public sealed class OpenGLAPICallingAttribute:Attribute + { + public OpenGLAPICallingAttribute() + { + + } + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs new file mode 100644 index 00000000..ffc59834 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs @@ -0,0 +1,35 @@ +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.ShaderEdit +{ + public interface IglConvertable + { + /// + /// + /// + public void SetAllUniforms(); + + /// + /// + /// + public void GainAllUniforms(ShaderProgram source, params string[] uniformName); + + /// + /// + /// + public void DisplayGLtypeDefinition(); + + /// + /// + /// + /// + public ShaderStruct GetConvertedGLtype(); + + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs new file mode 100644 index 00000000..fd1edf91 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -0,0 +1,264 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Shader.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp; +using StgSharp.Data; + +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Xml.Linq; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract partial class glRenderStream : RenderStream + { + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected sealed override Shader CreateShaderSegment(ShaderType type, int count) + { + return new Shader( GL.CreateShaderSet(count, type), type, this); + } + /// + /// Create an instance of program + /// + /// New instance of instance. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected sealed override ShaderProgram CreateShaderProgram() + { + return new ShaderProgram(this); + } + } + + public class Shader : ISSDSerializable + { + private readonly GlFunction GL; + internal readonly GlHandle[] handle; + public readonly ShaderType type; + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.Shader; + + internal unsafe Shader(GlHandle[] handle, ShaderType usage, glRenderStream stream) + { + this.handle = handle; + GL = stream.GL; + type = usage; + } + + /// + /// Attach one shader code to a shader program. + /// + /// Shader program to attach + /// Index of shader code in current shader code set. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AttachTo(int index, ShaderProgram target) + { + GL.AttachShader(target.handle, handle[index]); + } + + public static byte[] FromCodeFile(string fileRoute) + { + string str = File.ReadAllText(fileRoute); + if (string.IsNullOrEmpty(str)) + { + throw new InvalidOperationException($"Cannot load and GLSL code from {fileRoute}"); + } + return Encoding.UTF8.GetBytes(str); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void Compile(int index, byte[] codeStream) + { + if (codeStream == null) + { + throw new ArgumentNullException(nameof(codeStream)); + } + GL.LoadShaderSource(handle[index], codeStream); + GL.CompileShader(handle[index]); + CheckStatus(index,ShaderStatus.CompileStatus); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void Compile(int index, string codeStream) + { + if (codeStream == null) + { + throw new ArgumentNullException(nameof(codeStream)); + } + GL.LoadShaderSource(handle[index],Encoding.ASCII.GetBytes( codeStream)); + GL.CompileShader(handle[index]); + CheckStatus(index, ShaderStatus.CompileStatus); + } + + public override string ToString() + { + return $"This is a {type} shader, its shader handles are {handle.ToString()}."; + } + + public byte[] GetBytes() + { + return Array.Empty(); + } + + public void CheckStatus(int index, ShaderStatus status) + { + string log = GL.GetShaderStatus(this,index, (int)status); + if (!string.IsNullOrEmpty(log)) + { + throw new Exception($"Shader Error \t{status}\n" + log); + } + } + + public byte[] GetBytes(out int length) + { + throw new NotImplementedException(); + } + + public void FromBytes(byte[] stream) + { + throw new NotImplementedException(); + } + } + + public enum ShaderStatus : int + { + CompileStatus = GLconst.COMPILE_STATUS, + } + + public class ShaderProgram + { + private readonly GlFunction GL; + internal readonly GlHandle handle; + + /// + /// CustomizeInit a program with no shader attached. + /// + internal unsafe ShaderProgram(glRenderStream binding) + { + GL = binding.GL; + handle = GL.CreateProgram(); + } + + /// + /// Get a uniform form current shader, + /// the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe Uniform GetUniform(string name) where T : struct + { + return new Uniform(GL.GetUniformLocation(this.handle, name)); + } + + /// + /// Get a uniform form current shader, + /// the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + public unsafe Uniform GetUniform(string name) + where T : struct + where U : struct + { + return new Uniform(GL.GetUniformLocation(this.handle,name)); + } + + /// + /// Get a uniform form current shader, + /// the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + public unsafe Uniform GetUniform(string name) + where T : struct + where U : struct + where V : struct + { + return new Uniform(GL.GetUniformLocation(this.handle, name)); + } + + /// + /// Get a uniform form current shader, + /// the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + public unsafe Uniform GetUniform(string name) + where T : struct + where U : struct + where V : struct + where W : struct + { + return new Uniform(GL.GetUniformLocation(this.handle, name)); + } + + /// + /// Link the shader to current viewPortDisplay. + /// + public unsafe void Link() + { + if (InternalIO.InternalLinkShaderProgram((GLcontext*)this.GL.ContextHandle, handle.Value) == 0) + { + IntPtr logPtr = InternalIO.InternalReadSSCLog(); + try + { + byte[] logByte = new byte[512]; + Marshal.Copy(logPtr, logByte, 0, 512); + string log = Encoding.UTF8.GetString(logByte); + log = log.Replace("\0", string.Empty); + InternalIO.InternalWriteLog(log, LogType.Error); + } + catch (Exception ex) + { + InternalIO.InternalWriteLog(ex.Message, LogType.Error); + } + } + } + + /// + /// Let the current viewPortDisplay use this shader. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void Use() + { + GL.UseProgram(handle); + } + + ~ShaderProgram() + { + //handle.Dispose(); + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs new file mode 100644 index 00000000..64eafccc --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -0,0 +1,203 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Uniform.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public class Uniform + { + internal GlHandle id; + + public GlHandle Handle + { + get => id; + } + } + + public sealed class Uniform : Uniform + where T : struct + { + + internal unsafe Uniform(GlHandle id) + { + this.id = id; + } + + internal Uniform() + { + + } + + internal static Uniform FromHandle(GlHandle handle) + { + return new Uniform() { id = handle }; + } + + } + + public sealed class Uniform: Uniform + where T : struct + where U : struct + { + + internal unsafe Uniform(GlHandle id) + { + this.id = id; + } + + + + internal Uniform() + { + + } + + internal static Uniform FromHandle(GlHandle handle) + { + return new Uniform() { id = handle }; + } + + } + + public sealed class Uniform:Uniform + where T : struct + where U : struct + where V : struct + { + + internal unsafe Uniform(GlHandle id) + { + this.id = id; + } + + internal Uniform() + { + + } + + internal static Uniform FromHandle(GlHandle handle) + { + return new Uniform() { id = handle }; + } + + } + + public sealed class Uniform:Uniform + where T : struct + where U : struct + where V : struct + where W : struct + { + + + internal unsafe Uniform(GlHandle id) + { + this.id = id; + } + + internal Uniform() + { + + } + + internal static Uniform FromHandle(GlHandle handle) + { + return new Uniform() { id = handle }; + } + + } + + public unsafe partial class GlFunction + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue + (Uniform uniform, Matrix44 mat) + { + Matrix44 temp = mat; + Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, false, (float*)&temp); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, vec4d vec) + { + vec4d temp = vec; + Context.glUniform1fv(uniform.id.SignedValue , 4, &temp); + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, vec4d vec) + { + vec4d temp = vec; + Context.glUniform1fv(uniform.id.SignedValue , 4, &temp); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0) + { + Context.glUniform1f(uniform.id.SignedValue , v0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, int i0) + { + Context.glUniform1i(uniform.id.SignedValue , i0); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1) + { + Context.glUniform2f(uniform.id.SignedValue , v0, v1); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1, float v2) + { + Context.glUniform3f(uniform.id.SignedValue , v0, v1, v2); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetUniformValue(Uniform uniform, float v0, float v1, float v2, float v3) + { + Context.glUniform4f(uniform.id.SignedValue , v0, v1, v2, v3); + } + + } + +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs b/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs new file mode 100644 index 00000000..1b1aeae6 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs @@ -0,0 +1,1967 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glApiManager.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class glManager + { + + private const int glExtension = 0x1f03; + private const int glVersion = 0x1f02; + + private static readonly string[] glBranch = + new string[] { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC " + }; + + private static string glExtensionList; + + /// + /// Load all supported OpenGL APIs and bind them to given viewPortDisplay. + /// + /// The used as current OpenGL viewPortDisplay + public static unsafe void LoadOpenGLApiTo(IntPtr contextHandle) + { + GLcontext* context = (GLcontext*)contextHandle; + delegate* loader = &InternalIO.glfwGetProcAddress; +#pragma warning disable CS8909 + if (context->glGetString != (delegate*)IntPtr.Zero) +#pragma warning restore CS8909 + { + return; + } + IntPtr proc = loader("glGetString"); + if (proc == IntPtr.Zero) + { +#if DEBUG + Console.WriteLine("Cannot load GL."); +#endif + throw new Exception("Cannot load gl"); + } + context->glGetString = (delegate*)proc; + + string coreVersion; + if (context->glGetString(glVersion) == IntPtr.Zero) + { + InternalIO.InternalWriteLog("Failed to call glGetString", LogType.Error); + } + coreVersion = Marshal.PtrToStringAnsi(context->glGetString(glVersion)); + + foreach (string branch in glBranch) + { + if (coreVersion.Contains(branch)) + { + coreVersion.Replace(branch, string.Empty); + } + } + string[] versionSep = coreVersion!.Split('.'); + int majorVersion = int.Parse(versionSep[0]); + int minorVersion = int.Parse(versionSep[1]); + CheckCoreVersion(majorVersion, minorVersion); + + try + { + #region load_core_gl + + LoadGLcore10(context, loader); + LoadGLcore11(context, loader); + LoadGLcore12(context, loader); + LoadGLcore13(context, loader); + LoadGLcore14(context, loader); + LoadGLcore15(context, loader); + LoadGLcore20(context, loader); + LoadGLcore21(context, loader); + LoadGLcore30(context, loader); + LoadGLcore31(context, loader); + LoadGLcore32(context, loader); + LoadGLcore33(context, loader); + LoadGLcore40(context, loader); + LoadGLcore41(context, loader); + LoadGLcore42(context, loader); + LoadGLcore43(context, loader); + LoadGLcore44(context, loader); + LoadGLcore45(context, loader); + LoadGLcore46(context, loader); + + #endregion load_core_gl + } + catch (Exception ex) + { + if (ex.Message != "Final Version") + { + throw; + } + } + + IntPtr strPtr = context->glGetString(glExtension); + string extension; + if (strPtr == IntPtr.Zero) + { + InternalIO.InternalWriteLog("No supported OpenGL extensions are found.", LogType.Info); + return; + } + else + { + extension = Marshal.PtrToStringAnsi(strPtr); + } + + List extensions = + extension.Split(" ").ToList(); + + #region checkGLextensions + + if (extensions.Contains("gl_4DFX_multisample")) { _4DFX_multisample = true; extensions.Remove("gl_4DFX_multisample"); } + if (extensions.Contains("gl_3DFX_tbuffer")) { _3DFX_tbuffer = true; extensions.Remove("gl_3DFX_tbuffer"); } + if (extensions.Contains("gl_3DFX_texture_compression_FXT1")) { _3DFX_texture_compression_FXT1 = true; extensions.Remove("gl_3DFX_texture_compression_FXT1"); } + if (extensions.Contains("gl_AMD_blend_minmax_factor")) { AMD_blend_minmax_factor = true; extensions.Remove("glAMD_blend_minmax_factor"); } + if (extensions.Contains("gl_AMD_conservative_depth")) { AMD_conservative_depth = true; extensions.Remove("glAMD_conservative_depth"); } + if (extensions.Contains("gl_AMD_debug_output")) { AMD_debug_output = true; extensions.Remove("glAMD_debug_output"); } + if (extensions.Contains("gl_AMD_depth_clamp_separate")) { AMD_depth_clamp_separate = true; extensions.Remove("glAMD_depth_clamp_separate"); } + if (extensions.Contains("gl_AMD_draw_buffers_blend")) { AMD_draw_buffers_blend = true; extensions.Remove("glAMD_draw_buffers_blend"); } + if (extensions.Contains("gl_AMD_framebuffer_multisample_advanced")) { AMD_framebuffer_multisample_advanced = true; extensions.Remove("glAMD_framebuffer_multisample_advanced"); } + if (extensions.Contains("gl_AMD_framebuffer_sample_positions")) { AMD_framebuffer_sample_positions = true; extensions.Remove("glAMD_framebuffer_sample_positions"); } + if (extensions.Contains("gl_AMD_gcn_shader")) { AMD_gcn_shader = true; extensions.Remove("glAMD_gcn_shader"); } + if (extensions.Contains("gl_AMD_gpu_shader_half_float")) { AMD_gpu_shader_half_float = true; extensions.Remove("glAMD_gpu_shader_half_float"); } + if (extensions.Contains("gl_AMD_gpu_shader_int16")) { AMD_gpu_shader_int16 = true; extensions.Remove("glAMD_gpu_shader_int16"); } + if (extensions.Contains("gl_AMD_gpu_shader_int64")) { AMD_gpu_shader_int64 = true; extensions.Remove("glAMD_gpu_shader_int64"); } + if (extensions.Contains("gl_AMD_interleaved_elements")) { AMD_interleaved_elements = true; extensions.Remove("glAMD_interleaved_elements"); } + if (extensions.Contains("gl_AMD_multi_draw_indirect")) { AMD_multi_draw_indirect = true; extensions.Remove("glAMD_multi_draw_indirect"); } + if (extensions.Contains("gl_AMD_name_gen_delete")) { AMD_name_gen_delete = true; extensions.Remove("glAMD_name_gen_delete"); } + if (extensions.Contains("gl_AMD_occlusion_query_event")) { AMD_occlusion_query_event = true; extensions.Remove("glAMD_occlusion_query_event"); } + if (extensions.Contains("gl_AMD_performance_monitor")) { AMD_performance_monitor = true; extensions.Remove("glAMD_performance_monitor"); } + if (extensions.Contains("gl_AMD_pinned_memory")) { AMD_pinned_memory = true; extensions.Remove("glAMD_pinned_memory"); } + if (extensions.Contains("gl_AMD_query_buffer_object")) { AMD_query_buffer_object = true; extensions.Remove("glAMD_query_buffer_object"); } + if (extensions.Contains("gl_AMD_sample_positions")) { AMD_sample_positions = true; extensions.Remove("glAMD_sample_positions"); } + if (extensions.Contains("gl_AMD_seamless_cubemap_per_texture")) { AMD_seamless_cubemap_per_texture = true; extensions.Remove("glAMD_seamless_cubemap_per_texture"); } + if (extensions.Contains("gl_AMD_shader_atomic_counter_ops")) { AMD_shader_atomic_counter_ops = true; extensions.Remove("glAMD_shader_atomic_counter_ops"); } + if (extensions.Contains("gl_AMD_shader_ballot")) { AMD_shader_ballot = true; extensions.Remove("glAMD_shader_ballot"); } + if (extensions.Contains("gl_AMD_shader_explicit_vertex_parameter")) { AMD_shader_explicit_vertex_parameter = true; extensions.Remove("glAMD_shader_explicit_vertex_parameter"); } + if (extensions.Contains("gl_AMD_shader_gpu_shader_half_float_fetch")) { AMD_shader_gpu_shader_half_float_fetch = true; extensions.Remove("glAMD_shader_gpu_shader_half_float_fetch"); } + if (extensions.Contains("gl_AMD_shader_image_load_store_lod")) { AMD_shader_image_load_store_lod = true; extensions.Remove("glAMD_shader_image_load_store_lod"); } + if (extensions.Contains("gl_AMD_shader_stencil_export")) { AMD_shader_stencil_export = true; extensions.Remove("glAMD_shader_stencil_export"); } + if (extensions.Contains("gl_AMD_shader_trinary_minmax")) { AMD_shader_trinary_minmax = true; extensions.Remove("glAMD_shader_trinary_minmax"); } + if (extensions.Contains("gl_AMD_sparse_texture")) { AMD_sparse_texture = true; extensions.Remove("glAMD_sparse_texture"); } + if (extensions.Contains("gl_AMD_stencil_operation_extended")) { AMD_stencil_operation_extended = true; extensions.Remove("glAMD_stencil_operation_extended"); } + if (extensions.Contains("gl_AMD_texture_gather_bias_lod")) { AMD_texture_gather_bias_lod = true; extensions.Remove("glAMD_texture_gather_bias_lod"); } + if (extensions.Contains("gl_AMD_texture_texture4")) { AMD_texture_texture4 = true; extensions.Remove("glAMD_texture_texture4"); } + if (extensions.Contains("gl_AMD_transform_feedback3_lines_triangles")) { AMD_transform_feedback3_lines_triangles = true; extensions.Remove("glAMD_transform_feedback3_lines_triangles"); } + if (extensions.Contains("gl_AMD_transform_feedback4")) { AMD_transform_feedback4 = true; extensions.Remove("glAMD_transform_feedback4"); } + if (extensions.Contains("gl_AMD_vertex_shader_layer")) { AMD_vertex_shader_layer = true; extensions.Remove("glAMD_vertex_shader_layer"); } + if (extensions.Contains("gl_AMD_vertex_shader_tessellator")) { AMD_vertex_shader_tessellator = true; extensions.Remove("glAMD_vertex_shader_tessellator"); } + if (extensions.Contains("gl_AMD_vertex_shader_viewport_index")) { AMD_vertex_shader_viewport_index = true; extensions.Remove("glAMD_vertex_shader_viewport_index"); } + if (extensions.Contains("gl_APPLE_aux_depth_stencil")) { APPLE_aux_depth_stencil = true; extensions.Remove("glAPPLE_aux_depth_stencil"); } + if (extensions.Contains("gl_APPLE_client_storage")) { APPLE_client_storage = true; extensions.Remove("glAPPLE_client_storage"); } + if (extensions.Contains("gl_APPLE_element_array")) { APPLE_element_array = true; extensions.Remove("glAPPLE_element_array"); } + if (extensions.Contains("gl_APPLE_fence")) { APPLE_fence = true; extensions.Remove("glAPPLE_fence"); } + if (extensions.Contains("gl_APPLE_float_pixels")) { APPLE_float_pixels = true; extensions.Remove("glAPPLE_float_pixels"); } + if (extensions.Contains("gl_APPLE_flush_buffer_range")) { APPLE_flush_buffer_range = true; extensions.Remove("glAPPLE_flush_buffer_range"); } + if (extensions.Contains("gl_APPLE_object_purgeable")) { APPLE_object_purgeable = true; extensions.Remove("glAPPLE_object_purgeable"); } + if (extensions.Contains("gl_APPLE_rgb_422")) { APPLE_rgb_422 = true; extensions.Remove("glAPPLE_rgb_422"); } + if (extensions.Contains("gl_APPLE_row_bytes")) { APPLE_row_bytes = true; extensions.Remove("glAPPLE_row_bytes"); } + if (extensions.Contains("gl_APPLE_specular_vector")) { APPLE_specular_vector = true; extensions.Remove("glAPPLE_specular_vector"); } + if (extensions.Contains("gl_APPLE_texture_range")) { APPLE_texture_range = true; extensions.Remove("glAPPLE_texture_range"); } + if (extensions.Contains("gl_APPLE_transform_hint")) { APPLE_transform_hint = true; extensions.Remove("glAPPLE_transform_hint"); } + if (extensions.Contains("gl_APPLE_vertex_array_object")) { APPLE_vertex_array_object = true; extensions.Remove("glAPPLE_vertex_array_object"); } + if (extensions.Contains("gl_APPLE_vertex_array_range")) { APPLE_vertex_array_range = true; extensions.Remove("glAPPLE_vertex_array_range"); } + if (extensions.Contains("gl_APPLE_vertex_program_evaluators")) { APPLE_vertex_program_evaluators = true; extensions.Remove("glAPPLE_vertex_program_evaluators"); } + if (extensions.Contains("gl_APPLE_ycbcr_422")) { APPLE_ycbcr_422 = true; extensions.Remove("glAPPLE_ycbcr_422"); } + if (extensions.Contains("gl_ARB_ES2_compatibility")) { ARB_ES2_compatibility = true; extensions.Remove("glARB_ES2_compatibility"); } + if (extensions.Contains("gl_ARB_ES3_1_compatibility")) { ARB_ES3_1_compatibility = true; extensions.Remove("glARB_ES3_1_compatibility"); } + if (extensions.Contains("gl_ARB_ES3_2_compatibility")) { ARB_ES3_2_compatibility = true; extensions.Remove("glARB_ES3_2_compatibility"); } + if (extensions.Contains("gl_ARB_ES3_compatibility")) { ARB_ES3_compatibility = true; extensions.Remove("glARB_ES3_compatibility"); } + if (extensions.Contains("gl_ARB_arrays_of_arrays")) { ARB_arrays_of_arrays = true; extensions.Remove("glARB_arrays_of_arrays"); } + if (extensions.Contains("gl_ARB_base_instance")) { ARB_base_instance = true; extensions.Remove("glARB_base_instance"); } + if (extensions.Contains("gl_ARB_bindless_texture")) { ARB_bindless_texture = true; extensions.Remove("glARB_bindless_texture"); } + if (extensions.Contains("gl_ARB_blend_func_extended")) { ARB_blend_func_extended = true; extensions.Remove("glARB_blend_func_extended"); } + if (extensions.Contains("gl_ARB_buffer_storage")) { ARB_buffer_storage = true; extensions.Remove("glARB_buffer_storage"); } + if (extensions.Contains("gl_ARB_cl_event")) { ARB_cl_event = true; extensions.Remove("glARB_cl_event"); } + if (extensions.Contains("gl_ARB_clear_buffer_object")) { ARB_clear_buffer_object = true; extensions.Remove("glARB_clear_buffer_object"); } + if (extensions.Contains("gl_ARB_clear_texture")) { ARB_clear_texture = true; extensions.Remove("glARB_clear_texture"); } + if (extensions.Contains("gl_ARB_clip_control")) { ARB_clip_control = true; extensions.Remove("glARB_clip_control"); } + if (extensions.Contains("gl_ARB_color_buffer_float")) { ARB_color_buffer_float = true; extensions.Remove("glARB_color_buffer_float"); } + if (extensions.Contains("gl_ARB_compatibility")) { ARB_compatibility = true; extensions.Remove("glARB_compatibility"); } + if (extensions.Contains("gl_ARB_compressed_texture_pixel_storage")) { ARB_compressed_texture_pixel_storage = true; extensions.Remove("glARB_compressed_texture_pixel_storage"); } + if (extensions.Contains("gl_ARB_compute_shader")) { ARB_compute_shader = true; extensions.Remove("glARB_compute_shader"); } + if (extensions.Contains("gl_ARB_compute_variable_group_size")) { ARB_compute_variable_group_size = true; extensions.Remove("glARB_compute_variable_group_size"); } + if (extensions.Contains("gl_ARB_conditional_render_inverted")) { ARB_conditional_render_inverted = true; extensions.Remove("glARB_conditional_render_inverted"); } + if (extensions.Contains("gl_ARB_conservative_depth")) { ARB_conservative_depth = true; extensions.Remove("glARB_conservative_depth"); } + if (extensions.Contains("gl_ARB_copy_buffer")) { ARB_copy_buffer = true; extensions.Remove("glARB_copy_buffer"); } + if (extensions.Contains("gl_ARB_copy_image")) { ARB_copy_image = true; extensions.Remove("glARB_copy_image"); } + if (extensions.Contains("gl_ARB_cull_distance")) { ARB_cull_distance = true; extensions.Remove("glARB_cull_distance"); } + if (extensions.Contains("gl_ARB_debug_output")) { ARB_debug_output = true; extensions.Remove("glARB_debug_output"); } + if (extensions.Contains("gl_ARB_depth_buffer_float")) { ARB_depth_buffer_float = true; extensions.Remove("glARB_depth_buffer_float"); } + if (extensions.Contains("gl_ARB_depth_clamp")) { ARB_depth_clamp = true; extensions.Remove("glARB_depth_clamp"); } + if (extensions.Contains("gl_ARB_depth_texture")) { ARB_depth_texture = true; extensions.Remove("glARB_depth_texture"); } + if (extensions.Contains("gl_ARB_derivative_control")) { ARB_derivative_control = true; extensions.Remove("glARB_derivative_control"); } + if (extensions.Contains("gl_ARB_direct_state_access")) { ARB_direct_state_access = true; extensions.Remove("glARB_direct_state_access"); } + if (extensions.Contains("gl_ARB_draw_buffers")) { ARB_draw_buffers = true; extensions.Remove("glARB_draw_buffers"); } + if (extensions.Contains("gl_ARB_draw_buffers_blend")) { ARB_draw_buffers_blend = true; extensions.Remove("glARB_draw_buffers_blend"); } + if (extensions.Contains("gl_ARB_draw_elements_base_vertex")) { ARB_draw_elements_base_vertex = true; extensions.Remove("glARB_draw_elements_base_vertex"); } + if (extensions.Contains("gl_ARB_draw_indirect")) { ARB_draw_indirect = true; extensions.Remove("glARB_draw_indirect"); } + if (extensions.Contains("gl_ARB_draw_instanced")) { ARB_draw_instanced = true; extensions.Remove("glARB_draw_instanced"); } + if (extensions.Contains("gl_ARB_enhanced_layouts")) { ARB_enhanced_layouts = true; extensions.Remove("glARB_enhanced_layouts"); } + if (extensions.Contains("gl_ARB_explicit_attrib_location")) { ARB_explicit_attrib_location = true; extensions.Remove("glARB_explicit_attrib_location"); } + if (extensions.Contains("gl_ARB_explicit_uniform_location")) { ARB_explicit_uniform_location = true; extensions.Remove("glARB_explicit_uniform_location"); } + if (extensions.Contains("gl_ARB_fragment_coord_conventions")) { ARB_fragment_coord_conventions = true; extensions.Remove("glARB_fragment_coord_conventions"); } + if (extensions.Contains("gl_ARB_fragment_layer_viewport")) { ARB_fragment_layer_viewport = true; extensions.Remove("glARB_fragment_layer_viewport"); } + if (extensions.Contains("gl_ARB_fragment_program")) { ARB_fragment_program = true; extensions.Remove("glARB_fragment_program"); } + if (extensions.Contains("gl_ARB_fragment_program_shadow")) { ARB_fragment_program_shadow = true; extensions.Remove("glARB_fragment_program_shadow"); } + if (extensions.Contains("gl_ARB_fragment_shader")) { ARB_fragment_shader = true; extensions.Remove("glARB_fragment_shader"); } + if (extensions.Contains("gl_ARB_fragment_shader_interlock")) { ARB_fragment_shader_interlock = true; extensions.Remove("glARB_fragment_shader_interlock"); } + if (extensions.Contains("gl_ARB_framebuffer_no_attachments")) { ARB_framebuffer_no_attachments = true; extensions.Remove("glARB_framebuffer_no_attachments"); } + if (extensions.Contains("gl_ARB_framebuffer_object")) { ARB_framebuffer_object = true; extensions.Remove("glARB_framebuffer_object"); } + if (extensions.Contains("gl_ARB_framebuffer_sRGB")) { ARB_framebuffer_sRGB = true; extensions.Remove("glARB_framebuffer_sRGB"); } + if (extensions.Contains("gl_ARB_geometry_shader4")) { ARB_geometry_shader4 = true; extensions.Remove("glARB_geometry_shader4"); } + if (extensions.Contains("gl_ARB_get_program_binary")) { ARB_get_program_binary = true; extensions.Remove("glARB_get_program_binary"); } + if (extensions.Contains("gl_ARB_get_texture_sub_image")) { ARB_get_texture_sub_image = true; extensions.Remove("glARB_get_texture_sub_image"); } + if (extensions.Contains("gl_ARB_gl_spirv")) { ARB_gl_spirv = true; extensions.Remove("glARB_gl_spirv"); } + if (extensions.Contains("gl_ARB_gpu_shader5")) { ARB_gpu_shader5 = true; extensions.Remove("glARB_gpu_shader5"); } + if (extensions.Contains("gl_ARB_gpu_shader_fp64")) { ARB_gpu_shader_fp64 = true; extensions.Remove("glARB_gpu_shader_fp64"); } + if (extensions.Contains("gl_ARB_gpu_shader_int64")) { ARB_gpu_shader_int64 = true; extensions.Remove("glARB_gpu_shader_int64"); } + if (extensions.Contains("gl_ARB_half_float_pixel")) { ARB_half_float_pixel = true; extensions.Remove("glARB_half_float_pixel"); } + if (extensions.Contains("gl_ARB_half_float_vertex")) { ARB_half_float_vertex = true; extensions.Remove("glARB_half_float_vertex"); } + if (extensions.Contains("gl_ARB_imaging")) { ARB_imaging = true; extensions.Remove("glARB_imaging"); } + if (extensions.Contains("gl_ARB_indirect_parameters")) { ARB_indirect_parameters = true; extensions.Remove("glARB_indirect_parameters"); } + if (extensions.Contains("gl_ARB_instanced_arrays")) { ARB_instanced_arrays = true; extensions.Remove("glARB_instanced_arrays"); } + if (extensions.Contains("gl_ARB_internalformat_query")) { ARB_internalformat_query = true; extensions.Remove("glARB_internalformat_query"); } + if (extensions.Contains("gl_ARB_internalformat_query2")) { ARB_internalformat_query2 = true; extensions.Remove("glARB_internalformat_query2"); } + if (extensions.Contains("gl_ARB_invalidate_subdata")) { ARB_invalidate_subdata = true; extensions.Remove("glARB_invalidate_subdata"); } + if (extensions.Contains("gl_ARB_map_buffer_alignment")) { ARB_map_buffer_alignment = true; extensions.Remove("glARB_map_buffer_alignment"); } + if (extensions.Contains("gl_ARB_map_buffer_range")) { ARB_map_buffer_range = true; extensions.Remove("glARB_map_buffer_range"); } + if (extensions.Contains("gl_ARB_matrix_palette")) { ARB_matrix_palette = true; extensions.Remove("glARB_matrix_palette"); } + if (extensions.Contains("gl_ARB_multi_bind")) { ARB_multi_bind = true; extensions.Remove("glARB_multi_bind"); } + if (extensions.Contains("gl_ARB_multi_draw_indirect")) { ARB_multi_draw_indirect = true; extensions.Remove("glARB_multi_draw_indirect"); } + if (extensions.Contains("gl_ARB_multisample")) { ARB_multisample = true; extensions.Remove("glARB_multisample"); } + if (extensions.Contains("gl_ARB_multitexture")) { ARB_multitexture = true; extensions.Remove("glARB_multitexture"); } + if (extensions.Contains("gl_ARB_occlusion_query")) { ARB_occlusion_query = true; extensions.Remove("glARB_occlusion_query"); } + if (extensions.Contains("gl_ARB_occlusion_query2")) { ARB_occlusion_query2 = true; extensions.Remove("glARB_occlusion_query2"); } + if (extensions.Contains("gl_ARB_parallel_shader_compile")) { ARB_parallel_shader_compile = true; extensions.Remove("glARB_parallel_shader_compile"); } + if (extensions.Contains("gl_ARB_pipeline_statistics_query")) { ARB_pipeline_statistics_query = true; extensions.Remove("glARB_pipeline_statistics_query"); } + if (extensions.Contains("gl_ARB_pixel_buffer_object")) { ARB_pixel_buffer_object = true; extensions.Remove("glARB_pixel_buffer_object"); } + if (extensions.Contains("gl_ARB_point_parameters")) { ARB_point_parameters = true; extensions.Remove("glARB_point_parameters"); } + if (extensions.Contains("gl_ARB_point_sprite")) { ARB_point_sprite = true; extensions.Remove("glARB_point_sprite"); } + if (extensions.Contains("gl_ARB_polygon_offset_clamp")) { ARB_polygon_offset_clamp = true; extensions.Remove("glARB_polygon_offset_clamp"); } + if (extensions.Contains("gl_ARB_post_depth_coverage")) { ARB_post_depth_coverage = true; extensions.Remove("glARB_post_depth_coverage"); } + if (extensions.Contains("gl_ARB_program_interface_query")) { ARB_program_interface_query = true; extensions.Remove("glARB_program_interface_query"); } + if (extensions.Contains("gl_ARB_provoking_vertex")) { ARB_provoking_vertex = true; extensions.Remove("glARB_provoking_vertex"); } + if (extensions.Contains("gl_ARB_query_buffer_object")) { ARB_query_buffer_object = true; extensions.Remove("glARB_query_buffer_object"); } + if (extensions.Contains("gl_ARB_robust_buffer_access_behavior")) { ARB_robust_buffer_access_behavior = true; extensions.Remove("glARB_robust_buffer_access_behavior"); } + if (extensions.Contains("gl_ARB_robustness")) { ARB_robustness = true; extensions.Remove("glARB_robustness"); } + if (extensions.Contains("gl_ARB_robustness_isolation")) { ARB_robustness_isolation = true; extensions.Remove("glARB_robustness_isolation"); } + if (extensions.Contains("gl_ARB_sample_locations")) { ARB_sample_locations = true; extensions.Remove("glARB_sample_locations"); } + if (extensions.Contains("gl_ARB_sample_shading")) { ARB_sample_shading = true; extensions.Remove("glARB_sample_shading"); } + if (extensions.Contains("gl_ARB_sampler_objects")) { ARB_sampler_objects = true; extensions.Remove("glARB_sampler_objects"); } + if (extensions.Contains("gl_ARB_seamless_cube_map")) { ARB_seamless_cube_map = true; extensions.Remove("glARB_seamless_cube_map"); } + if (extensions.Contains("gl_ARB_seamless_cubemap_per_texture")) { ARB_seamless_cubemap_per_texture = true; extensions.Remove("glARB_seamless_cubemap_per_texture"); } + if (extensions.Contains("gl_ARB_separate_shader_objects")) { ARB_separate_shader_objects = true; extensions.Remove("glARB_separate_shader_objects"); } + if (extensions.Contains("gl_ARB_shader_atomic_counter_ops")) { ARB_shader_atomic_counter_ops = true; extensions.Remove("glARB_shader_atomic_counter_ops"); } + if (extensions.Contains("gl_ARB_shader_atomic_counters")) { ARB_shader_atomic_counters = true; extensions.Remove("glARB_shader_atomic_counters"); } + if (extensions.Contains("gl_ARB_shader_ballot")) { ARB_shader_ballot = true; extensions.Remove("glARB_shader_ballot"); } + if (extensions.Contains("gl_ARB_shader_bit_encoding")) { ARB_shader_bit_encoding = true; extensions.Remove("glARB_shader_bit_encoding"); } + if (extensions.Contains("gl_ARB_shader_clock")) { ARB_shader_clock = true; extensions.Remove("glARB_shader_clock"); } + if (extensions.Contains("gl_ARB_shader_draw_parameters")) { ARB_shader_draw_parameters = true; extensions.Remove("glARB_shader_draw_parameters"); } + if (extensions.Contains("gl_ARB_shader_group_vote")) { ARB_shader_group_vote = true; extensions.Remove("glARB_shader_group_vote"); } + if (extensions.Contains("gl_ARB_shader_image_load_store")) { ARB_shader_image_load_store = true; extensions.Remove("glARB_shader_image_load_store"); } + if (extensions.Contains("gl_ARB_shader_image_size")) { ARB_shader_image_size = true; extensions.Remove("glARB_shader_image_size"); } + if (extensions.Contains("gl_ARB_shader_objects")) { ARB_shader_objects = true; extensions.Remove("glARB_shader_objects"); } + if (extensions.Contains("gl_ARB_shader_precision")) { ARB_shader_precision = true; extensions.Remove("glARB_shader_precision"); } + if (extensions.Contains("gl_ARB_shader_stencil_export")) { ARB_shader_stencil_export = true; extensions.Remove("glARB_shader_stencil_export"); } + if (extensions.Contains("gl_ARB_shader_storage_buffer_object")) { ARB_shader_storage_buffer_object = true; extensions.Remove("glARB_shader_storage_buffer_object"); } + if (extensions.Contains("gl_ARB_shader_subroutine")) { ARB_shader_subroutine = true; extensions.Remove("glARB_shader_subroutine"); } + if (extensions.Contains("gl_ARB_shader_texture_image_samples")) { ARB_shader_texture_image_samples = true; extensions.Remove("glARB_shader_texture_image_samples"); } + if (extensions.Contains("gl_ARB_shader_texture_lod")) { ARB_shader_texture_lod = true; extensions.Remove("glARB_shader_texture_lod"); } + if (extensions.Contains("gl_ARB_shader_viewport_layer_array")) { ARB_shader_viewport_layer_array = true; extensions.Remove("glARB_shader_viewport_layer_array"); } + if (extensions.Contains("gl_ARB_shading_language_100")) { ARB_shading_language_100 = true; extensions.Remove("glARB_shading_language_100"); } + if (extensions.Contains("gl_ARB_shading_language_420pack")) { ARB_shading_language_420pack = true; extensions.Remove("glARB_shading_language_420pack"); } + if (extensions.Contains("gl_ARB_shading_language_include")) { ARB_shading_language_include = true; extensions.Remove("glARB_shading_language_include"); } + if (extensions.Contains("gl_ARB_shading_language_packing")) { ARB_shading_language_packing = true; extensions.Remove("glARB_shading_language_packing"); } + if (extensions.Contains("gl_ARB_shadow")) { ARB_shadow = true; extensions.Remove("glARB_shadow"); } + if (extensions.Contains("gl_ARB_shadow_ambient")) { ARB_shadow_ambient = true; extensions.Remove("glARB_shadow_ambient"); } + if (extensions.Contains("gl_ARB_sparse_buffer")) { ARB_sparse_buffer = true; extensions.Remove("glARB_sparse_buffer"); } + if (extensions.Contains("gl_ARB_sparse_texture")) { ARB_sparse_texture = true; extensions.Remove("glARB_sparse_texture"); } + if (extensions.Contains("gl_ARB_sparse_texture2")) { ARB_sparse_texture2 = true; extensions.Remove("glARB_sparse_texture2"); } + if (extensions.Contains("gl_ARB_sparse_texture_clamp")) { ARB_sparse_texture_clamp = true; extensions.Remove("glARB_sparse_texture_clamp"); } + if (extensions.Contains("gl_ARB_spirv_extensions")) { ARB_spirv_extensions = true; extensions.Remove("glARB_spirv_extensions"); } + if (extensions.Contains("gl_ARB_stencil_texturing")) { ARB_stencil_texturing = true; extensions.Remove("glARB_stencil_texturing"); } + if (extensions.Contains("gl_ARB_sync")) { ARB_sync = true; extensions.Remove("glARB_sync"); } + if (extensions.Contains("gl_ARB_tessellation_shader")) { ARB_tessellation_shader = true; extensions.Remove("glARB_tessellation_shader"); } + if (extensions.Contains("gl_ARB_texture_barrier")) { ARB_texture_barrier = true; extensions.Remove("glARB_texture_barrier"); } + if (extensions.Contains("gl_ARB_texture_border_clamp")) { ARB_texture_border_clamp = true; extensions.Remove("glARB_texture_border_clamp"); } + if (extensions.Contains("gl_ARB_texture_buffer_object")) { ARB_texture_buffer_object = true; extensions.Remove("glARB_texture_buffer_object"); } + if (extensions.Contains("gl_ARB_texture_buffer_object_rgb32")) { ARB_texture_buffer_object_rgb32 = true; extensions.Remove("glARB_texture_buffer_object_rgb32"); } + if (extensions.Contains("gl_ARB_texture_buffer_range")) { ARB_texture_buffer_range = true; extensions.Remove("glARB_texture_buffer_range"); } + if (extensions.Contains("gl_ARB_texture_compression")) { ARB_texture_compression = true; extensions.Remove("glARB_texture_compression"); } + if (extensions.Contains("gl_ARB_texture_compression_bptc")) { ARB_texture_compression_bptc = true; extensions.Remove("glARB_texture_compression_bptc"); } + if (extensions.Contains("gl_ARB_texture_compression_rgtc")) { ARB_texture_compression_rgtc = true; extensions.Remove("glARB_texture_compression_rgtc"); } + if (extensions.Contains("gl_ARB_texture_cube_map")) { ARB_texture_cube_map = true; extensions.Remove("glARB_texture_cube_map"); } + if (extensions.Contains("gl_ARB_texture_cube_map_array")) { ARB_texture_cube_map_array = true; extensions.Remove("glARB_texture_cube_map_array"); } + if (extensions.Contains("gl_ARB_texture_env_add")) { ARB_texture_env_add = true; extensions.Remove("glARB_texture_env_add"); } + if (extensions.Contains("gl_ARB_texture_env_combine")) { ARB_texture_env_combine = true; extensions.Remove("glARB_texture_env_combine"); } + if (extensions.Contains("gl_ARB_texture_env_crossbar")) { ARB_texture_env_crossbar = true; extensions.Remove("glARB_texture_env_crossbar"); } + if (extensions.Contains("gl_ARB_texture_env_dot3")) { ARB_texture_env_dot3 = true; extensions.Remove("glARB_texture_env_dot3"); } + if (extensions.Contains("gl_ARB_texture_filter_anisotropic")) { ARB_texture_filter_anisotropic = true; extensions.Remove("glARB_texture_filter_anisotropic"); } + if (extensions.Contains("gl_ARB_texture_filter_minmax")) { ARB_texture_filter_minmax = true; extensions.Remove("glARB_texture_filter_minmax"); } + if (extensions.Contains("gl_ARB_texture_float")) { ARB_texture_float = true; extensions.Remove("glARB_texture_float"); } + if (extensions.Contains("gl_ARB_texture_gather")) { ARB_texture_gather = true; extensions.Remove("glARB_texture_gather"); } + if (extensions.Contains("gl_ARB_texture_mirror_clamp_to_edge")) { ARB_texture_mirror_clamp_to_edge = true; extensions.Remove("glARB_texture_mirror_clamp_to_edge"); } + if (extensions.Contains("gl_ARB_texture_mirrored_repeat")) { ARB_texture_mirrored_repeat = true; extensions.Remove("glARB_texture_mirrored_repeat"); } + if (extensions.Contains("gl_ARB_texture_multisample")) { ARB_texture_multisample = true; extensions.Remove("glARB_texture_multisample"); } + if (extensions.Contains("gl_ARB_texture_non_power_of_two")) { ARB_texture_non_power_of_two = true; extensions.Remove("glARB_texture_non_power_of_two"); } + if (extensions.Contains("gl_ARB_texture_query_levels")) { ARB_texture_query_levels = true; extensions.Remove("glARB_texture_query_levels"); } + if (extensions.Contains("gl_ARB_texture_query_lod")) { ARB_texture_query_lod = true; extensions.Remove("glARB_texture_query_lod"); } + if (extensions.Contains("gl_ARB_texture_rectangle")) { ARB_texture_rectangle = true; extensions.Remove("glARB_texture_rectangle"); } + if (extensions.Contains("gl_ARB_texture_rg")) { ARB_texture_rg = true; extensions.Remove("glARB_texture_rg"); } + if (extensions.Contains("gl_ARB_texture_rgb10_a2ui")) { ARB_texture_rgb10_a2ui = true; extensions.Remove("glARB_texture_rgb10_a2ui"); } + if (extensions.Contains("gl_ARB_texture_stencil8")) { ARB_texture_stencil8 = true; extensions.Remove("glARB_texture_stencil8"); } + if (extensions.Contains("gl_ARB_texture_storage")) { ARB_texture_storage = true; extensions.Remove("glARB_texture_storage"); } + if (extensions.Contains("gl_ARB_texture_storage_multisample")) { ARB_texture_storage_multisample = true; extensions.Remove("glARB_texture_storage_multisample"); } + if (extensions.Contains("gl_ARB_texture_swizzle")) { ARB_texture_swizzle = true; extensions.Remove("glARB_texture_swizzle"); } + if (extensions.Contains("gl_ARB_texture_view")) { ARB_texture_view = true; extensions.Remove("glARB_texture_view"); } + if (extensions.Contains("gl_ARB_timer_query")) { ARB_timer_query = true; extensions.Remove("glARB_timer_query"); } + if (extensions.Contains("gl_ARB_transform_feedback2")) { ARB_transform_feedback2 = true; extensions.Remove("glARB_transform_feedback2"); } + if (extensions.Contains("gl_ARB_transform_feedback3")) { ARB_transform_feedback3 = true; extensions.Remove("glARB_transform_feedback3"); } + if (extensions.Contains("gl_ARB_transform_feedback_instanced")) { ARB_transform_feedback_instanced = true; extensions.Remove("glARB_transform_feedback_instanced"); } + if (extensions.Contains("gl_ARB_transform_feedback_overflow_query")) { ARB_transform_feedback_overflow_query = true; extensions.Remove("glARB_transform_feedback_overflow_query"); } + if (extensions.Contains("gl_ARB_transpose_matrix")) { ARB_transpose_matrix = true; extensions.Remove("glARB_transpose_matrix"); } + if (extensions.Contains("gl_ARB_uniform_buffer_object")) { ARB_uniform_buffer_object = true; extensions.Remove("glARB_uniform_buffer_object"); } + if (extensions.Contains("gl_ARB_vertex_array_bgra")) { ARB_vertex_array_bgra = true; extensions.Remove("glARB_vertex_array_bgra"); } + if (extensions.Contains("gl_ARB_vertex_array_object")) { ARB_vertex_array_object = true; extensions.Remove("glARB_vertex_array_object"); } + if (extensions.Contains("gl_ARB_vertex_attrib_64bit")) { ARB_vertex_attrib_64bit = true; extensions.Remove("glARB_vertex_attrib_64bit"); } + if (extensions.Contains("gl_ARB_vertex_attrib_binding")) { ARB_vertex_attrib_binding = true; extensions.Remove("glARB_vertex_attrib_binding"); } + if (extensions.Contains("gl_ARB_vertex_blend")) { ARB_vertex_blend = true; extensions.Remove("glARB_vertex_blend"); } + if (extensions.Contains("gl_ARB_vertex_buffer_object")) { ARB_vertex_buffer_object = true; extensions.Remove("glARB_vertex_buffer_object"); } + if (extensions.Contains("gl_ARB_vertex_program")) { ARB_vertex_program = true; extensions.Remove("glARB_vertex_program"); } + if (extensions.Contains("gl_ARB_vertex_shader")) { ARB_vertex_shader = true; extensions.Remove("glARB_vertex_shader"); } + if (extensions.Contains("gl_ARB_vertex_type_10f_11f_11f_rev")) { ARB_vertex_type_10f_11f_11f_rev = true; extensions.Remove("glARB_vertex_type_10f_11f_11f_rev"); } + if (extensions.Contains("gl_ARB_vertex_type_2_10_10_10_rev")) { ARB_vertex_type_2_10_10_10_rev = true; extensions.Remove("glARB_vertex_type_2_10_10_10_rev"); } + if (extensions.Contains("gl_ARB_viewport_array")) { ARB_viewport_array = true; extensions.Remove("glARB_viewport_array"); } + if (extensions.Contains("gl_ARB_window_pos")) { ARB_window_pos = true; extensions.Remove("glARB_window_pos"); } + if (extensions.Contains("gl_ATI_draw_buffers")) { ATI_draw_buffers = true; extensions.Remove("glATI_draw_buffers"); } + if (extensions.Contains("gl_ATI_element_array")) { ATI_element_array = true; extensions.Remove("glATI_element_array"); } + if (extensions.Contains("gl_ATI_envmap_bumpmap")) { ATI_envmap_bumpmap = true; extensions.Remove("glATI_envmap_bumpmap"); } + if (extensions.Contains("gl_ATI_fragment_shader")) { ATI_fragment_shader = true; extensions.Remove("glATI_fragment_shader"); } + if (extensions.Contains("gl_ATI_map_object_buffer")) { ATI_map_object_buffer = true; extensions.Remove("glATI_map_object_buffer"); } + if (extensions.Contains("gl_ATI_meminfo")) { ATI_meminfo = true; extensions.Remove("glATI_meminfo"); } + if (extensions.Contains("gl_ATI_pixel_format_float")) { ATI_pixel_format_float = true; extensions.Remove("glATI_pixel_format_float"); } + if (extensions.Contains("gl_ATI_pn_triangles")) { ATI_pn_triangles = true; extensions.Remove("glATI_pn_triangles"); } + if (extensions.Contains("gl_ATI_separate_stencil")) { ATI_separate_stencil = true; extensions.Remove("glATI_separate_stencil"); } + if (extensions.Contains("gl_ATI_text_fragment_shader")) { ATI_text_fragment_shader = true; extensions.Remove("glATI_text_fragment_shader"); } + if (extensions.Contains("gl_ATI_texture_env_combine3")) { ATI_texture_env_combine3 = true; extensions.Remove("glATI_texture_env_combine3"); } + if (extensions.Contains("gl_ATI_texture_float")) { ATI_texture_float = true; extensions.Remove("glATI_texture_float"); } + if (extensions.Contains("gl_ATI_texture_mirror_once")) { ATI_texture_mirror_once = true; extensions.Remove("glATI_texture_mirror_once"); } + if (extensions.Contains("gl_ATI_vertex_array_object")) { ATI_vertex_array_object = true; extensions.Remove("glATI_vertex_array_object"); } + if (extensions.Contains("gl_ATI_vertex_attrib_array_object")) { ATI_vertex_attrib_array_object = true; extensions.Remove("glATI_vertex_attrib_array_object"); } + if (extensions.Contains("gl_ATI_vertex_streams")) { ATI_vertex_streams = true; extensions.Remove("glATI_vertex_streams"); } + if (extensions.Contains("gl_EXT_422_pixels")) { EXT_422_pixels = true; extensions.Remove("glEXT_422_pixels"); } + if (extensions.Contains("gl_EXT_EGL_image_storage")) { EXT_EGL_image_storage = true; extensions.Remove("glEXT_EGL_image_storage"); } + if (extensions.Contains("gl_EXT_EGL_sync")) { EXT_EGL_sync = true; extensions.Remove("glEXT_EGL_sync"); } + if (extensions.Contains("gl_EXT_abgr")) { EXT_abgr = true; extensions.Remove("glEXT_abgr"); } + if (extensions.Contains("gl_EXT_bgra")) { EXT_bgra = true; extensions.Remove("glEXT_bgra"); } + if (extensions.Contains("gl_EXT_bindable_uniform")) { EXT_bindable_uniform = true; extensions.Remove("glEXT_bindable_uniform"); } + if (extensions.Contains("gl_EXT_blend_color")) { EXT_blend_color = true; extensions.Remove("glEXT_blend_color"); } + if (extensions.Contains("gl_EXT_blend_equation_separate")) { EXT_blend_equation_separate = true; extensions.Remove("glEXT_blend_equation_separate"); } + if (extensions.Contains("gl_EXT_blend_func_separate")) { EXT_blend_func_separate = true; extensions.Remove("glEXT_blend_func_separate"); } + if (extensions.Contains("gl_EXT_blend_logic_op")) { EXT_blend_logic_op = true; extensions.Remove("glEXT_blend_logic_op"); } + if (extensions.Contains("gl_EXT_blend_minmax")) { EXT_blend_minmax = true; extensions.Remove("glEXT_blend_minmax"); } + if (extensions.Contains("gl_EXT_blend_subtract")) { EXT_blend_subtract = true; extensions.Remove("glEXT_blend_subtract"); } + if (extensions.Contains("gl_EXT_clip_volume_hint")) { EXT_clip_volume_hint = true; extensions.Remove("glEXT_clip_volume_hint"); } + if (extensions.Contains("gl_EXT_cmyka")) { EXT_cmyka = true; extensions.Remove("glEXT_cmyka"); } + if (extensions.Contains("gl_EXT_color_subtable")) { EXT_color_subtable = true; extensions.Remove("glEXT_color_subtable"); } + if (extensions.Contains("gl_EXT_compiled_vertex_array")) { EXT_compiled_vertex_array = true; extensions.Remove("glEXT_compiled_vertex_array"); } + if (extensions.Contains("gl_EXT_convolution")) { EXT_convolution = true; extensions.Remove("glEXT_convolution"); } + if (extensions.Contains("gl_EXT_coordinate_frame")) { EXT_coordinate_frame = true; extensions.Remove("glEXT_coordinate_frame"); } + if (extensions.Contains("gl_EXT_copy_texture")) { EXT_copy_texture = true; extensions.Remove("glEXT_copy_texture"); } + if (extensions.Contains("gl_EXT_cull_vertex")) { EXT_cull_vertex = true; extensions.Remove("glEXT_cull_vertex"); } + if (extensions.Contains("gl_EXT_debug_label")) { EXT_debug_label = true; extensions.Remove("glEXT_debug_label"); } + if (extensions.Contains("gl_EXT_debug_marker")) { EXT_debug_marker = true; extensions.Remove("glEXT_debug_marker"); } + if (extensions.Contains("gl_EXT_depth_bounds_test")) { EXT_depth_bounds_test = true; extensions.Remove("glEXT_depth_bounds_test"); } + if (extensions.Contains("gl_EXT_direct_state_access")) { EXT_direct_state_access = true; extensions.Remove("glEXT_direct_state_access"); } + if (extensions.Contains("gl_EXT_draw_buffers2")) { EXT_draw_buffers2 = true; extensions.Remove("glEXT_draw_buffers2"); } + if (extensions.Contains("gl_EXT_draw_instanced")) { EXT_draw_instanced = true; extensions.Remove("glEXT_draw_instanced"); } + if (extensions.Contains("gl_EXT_draw_range_elements")) { EXT_draw_range_elements = true; extensions.Remove("glEXT_draw_range_elements"); } + if (extensions.Contains("gl_EXT_external_buffer")) { EXT_external_buffer = true; extensions.Remove("glEXT_external_buffer"); } + if (extensions.Contains("gl_EXT_fog_coord")) { EXT_fog_coord = true; extensions.Remove("glEXT_fog_coord"); } + if (extensions.Contains("gl_EXT_framebuffer_blit")) { EXT_framebuffer_blit = true; extensions.Remove("glEXT_framebuffer_blit"); } + if (extensions.Contains("gl_EXT_framebuffer_blit_layers")) { EXT_framebuffer_blit_layers = true; extensions.Remove("glEXT_framebuffer_blit_layers"); } + if (extensions.Contains("gl_EXT_framebuffer_multisample")) { EXT_framebuffer_multisample = true; extensions.Remove("glEXT_framebuffer_multisample"); } + if (extensions.Contains("gl_EXT_framebuffer_multisample_blit_scaled")) { EXT_framebuffer_multisample_blit_scaled = true; extensions.Remove("glEXT_framebuffer_multisample_blit_scaled"); } + if (extensions.Contains("gl_EXT_framebuffer_object")) { EXT_framebuffer_object = true; extensions.Remove("glEXT_framebuffer_object"); } + if (extensions.Contains("gl_EXT_framebuffer_sRGB")) { EXT_framebuffer_sRGB = true; extensions.Remove("glEXT_framebuffer_sRGB"); } + if (extensions.Contains("gl_EXT_geometry_shader4")) { EXT_geometry_shader4 = true; extensions.Remove("glEXT_geometry_shader4"); } + if (extensions.Contains("gl_EXT_gpu_program_parameters")) { EXT_gpu_program_parameters = true; extensions.Remove("glEXT_gpu_program_parameters"); } + if (extensions.Contains("gl_EXT_gpu_shader4")) { EXT_gpu_shader4 = true; extensions.Remove("glEXT_gpu_shader4"); } + if (extensions.Contains("gl_EXT_histogram")) { EXT_histogram = true; extensions.Remove("glEXT_histogram"); } + if (extensions.Contains("gl_EXT_index_array_formats")) { EXT_index_array_formats = true; extensions.Remove("glEXT_index_array_formats"); } + if (extensions.Contains("gl_EXT_index_func")) { EXT_index_func = true; extensions.Remove("glEXT_index_func"); } + if (extensions.Contains("gl_EXT_index_material")) { EXT_index_material = true; extensions.Remove("glEXT_index_material"); } + if (extensions.Contains("gl_EXT_index_texture")) { EXT_index_texture = true; extensions.Remove("glEXT_index_texture"); } + if (extensions.Contains("gl_EXT_light_texture")) { EXT_light_texture = true; extensions.Remove("glEXT_light_texture"); } + if (extensions.Contains("gl_EXT_memory_object")) { EXT_memory_object = true; extensions.Remove("glEXT_memory_object"); } + if (extensions.Contains("gl_EXT_memory_object_fd")) { EXT_memory_object_fd = true; extensions.Remove("glEXT_memory_object_fd"); } + if (extensions.Contains("gl_EXT_memory_object_win32")) { EXT_memory_object_win32 = true; extensions.Remove("glEXT_memory_object_win32"); } + if (extensions.Contains("gl_EXT_misc_attribute")) { EXT_misc_attribute = true; extensions.Remove("glEXT_misc_attribute"); } + if (extensions.Contains("gl_EXT_multi_draw_arrays")) { EXT_multi_draw_arrays = true; extensions.Remove("glEXT_multi_draw_arrays"); } + if (extensions.Contains("gl_EXT_multisample")) { EXT_multisample = true; extensions.Remove("glEXT_multisample"); } + if (extensions.Contains("gl_EXT_multiview_tessellation_geometry_shader")) { EXT_multiview_tessellation_geometry_shader = true; extensions.Remove("glEXT_multiview_tessellation_geometry_shader"); } + if (extensions.Contains("gl_EXT_multiview_texture_multisample")) { EXT_multiview_texture_multisample = true; extensions.Remove("glEXT_multiview_texture_multisample"); } + if (extensions.Contains("gl_EXT_multiview_timer_query")) { EXT_multiview_timer_query = true; extensions.Remove("glEXT_multiview_timer_query"); } + if (extensions.Contains("gl_EXT_packed_depth_stencil")) { EXT_packed_depth_stencil = true; extensions.Remove("glEXT_packed_depth_stencil"); } + if (extensions.Contains("gl_EXT_packed_float")) { EXT_packed_float = true; extensions.Remove("glEXT_packed_float"); } + if (extensions.Contains("gl_EXT_packed_pixels")) { EXT_packed_pixels = true; extensions.Remove("glEXT_packed_pixels"); } + if (extensions.Contains("gl_EXT_paletted_texture")) { EXT_paletted_texture = true; extensions.Remove("glEXT_paletted_texture"); } + if (extensions.Contains("gl_EXT_pixel_buffer_object")) { EXT_pixel_buffer_object = true; extensions.Remove("glEXT_pixel_buffer_object"); } + if (extensions.Contains("gl_EXT_pixel_transform")) { EXT_pixel_transform = true; extensions.Remove("glEXT_pixel_transform"); } + if (extensions.Contains("gl_EXT_pixel_transform_color_table")) { EXT_pixel_transform_color_table = true; extensions.Remove("glEXT_pixel_transform_color_table"); } + if (extensions.Contains("gl_EXT_point_parameters")) { EXT_point_parameters = true; extensions.Remove("glEXT_point_parameters"); } + if (extensions.Contains("gl_EXT_polygon_offset")) { EXT_polygon_offset = true; extensions.Remove("glEXT_polygon_offset"); } + if (extensions.Contains("gl_EXT_polygon_offset_clamp")) { EXT_polygon_offset_clamp = true; extensions.Remove("glEXT_polygon_offset_clamp"); } + if (extensions.Contains("gl_EXT_post_depth_coverage")) { EXT_post_depth_coverage = true; extensions.Remove("glEXT_post_depth_coverage"); } + if (extensions.Contains("gl_EXT_provoking_vertex")) { EXT_provoking_vertex = true; extensions.Remove("glEXT_provoking_vertex"); } + if (extensions.Contains("gl_EXT_raster_multisample")) { EXT_raster_multisample = true; extensions.Remove("glEXT_raster_multisample"); } + if (extensions.Contains("gl_EXT_rescale_normal")) { EXT_rescale_normal = true; extensions.Remove("glEXT_rescale_normal"); } + if (extensions.Contains("gl_EXT_secondary_color")) { EXT_secondary_color = true; extensions.Remove("glEXT_secondary_color"); } + if (extensions.Contains("gl_EXT_semaphore")) { EXT_semaphore = true; extensions.Remove("glEXT_semaphore"); } + if (extensions.Contains("gl_EXT_semaphore_fd")) { EXT_semaphore_fd = true; extensions.Remove("glEXT_semaphore_fd"); } + if (extensions.Contains("gl_EXT_semaphore_win32")) { EXT_semaphore_win32 = true; extensions.Remove("glEXT_semaphore_win32"); } + if (extensions.Contains("gl_EXT_separate_shader_objects")) { EXT_separate_shader_objects = true; extensions.Remove("glEXT_separate_shader_objects"); } + if (extensions.Contains("gl_EXT_separate_specular_color")) { EXT_separate_specular_color = true; extensions.Remove("glEXT_separate_specular_color"); } + if (extensions.Contains("gl_EXT_shader_framebuffer_fetch")) { EXT_shader_framebuffer_fetch = true; extensions.Remove("glEXT_shader_framebuffer_fetch"); } + if (extensions.Contains("gl_EXT_shader_framebuffer_fetch_non_coherent")) { EXT_shader_framebuffer_fetch_non_coherent = true; extensions.Remove("glEXT_shader_framebuffer_fetch_non_coherent"); } + if (extensions.Contains("gl_EXT_shader_image_load_formatted")) { EXT_shader_image_load_formatted = true; extensions.Remove("glEXT_shader_image_load_formatted"); } + if (extensions.Contains("gl_EXT_shader_image_load_store")) { EXT_shader_image_load_store = true; extensions.Remove("glEXT_shader_image_load_store"); } + if (extensions.Contains("gl_EXT_shader_integer_mix")) { EXT_shader_integer_mix = true; extensions.Remove("glEXT_shader_integer_mix"); } + if (extensions.Contains("gl_EXT_shader_samples_identical")) { EXT_shader_samples_identical = true; extensions.Remove("glEXT_shader_samples_identical"); } + if (extensions.Contains("gl_EXT_shadow_funcs")) { EXT_shadow_funcs = true; extensions.Remove("glEXT_shadow_funcs"); } + if (extensions.Contains("gl_EXT_shared_texture_palette")) { EXT_shared_texture_palette = true; extensions.Remove("glEXT_shared_texture_palette"); } + if (extensions.Contains("gl_EXT_sparse_texture2")) { EXT_sparse_texture2 = true; extensions.Remove("glEXT_sparse_texture2"); } + if (extensions.Contains("gl_EXT_stencil_clear_tag")) { EXT_stencil_clear_tag = true; extensions.Remove("glEXT_stencil_clear_tag"); } + if (extensions.Contains("gl_EXT_stencil_two_side")) { EXT_stencil_two_side = true; extensions.Remove("glEXT_stencil_two_side"); } + if (extensions.Contains("gl_EXT_stencil_wrap")) { EXT_stencil_wrap = true; extensions.Remove("glEXT_stencil_wrap"); } + if (extensions.Contains("gl_EXT_subtexture")) { EXT_subtexture = true; extensions.Remove("glEXT_subtexture"); } + if (extensions.Contains("gl_EXT_texture")) { EXT_texture = true; extensions.Remove("glEXT_texture"); } + if (extensions.Contains("gl_EXT_texture3D")) { EXT_texture3D = true; extensions.Remove("glEXT_texture3D"); } + if (extensions.Contains("gl_EXT_texture_array")) { EXT_texture_array = true; extensions.Remove("glEXT_texture_array"); } + if (extensions.Contains("gl_EXT_texture_buffer_object")) { EXT_texture_buffer_object = true; extensions.Remove("glEXT_texture_buffer_object"); } + if (extensions.Contains("gl_EXT_texture_compression_latc")) { EXT_texture_compression_latc = true; extensions.Remove("glEXT_texture_compression_latc"); } + if (extensions.Contains("gl_EXT_texture_compression_rgtc")) { EXT_texture_compression_rgtc = true; extensions.Remove("glEXT_texture_compression_rgtc"); } + if (extensions.Contains("gl_EXT_texture_compression_s3tc")) { EXT_texture_compression_s3tc = true; extensions.Remove("glEXT_texture_compression_s3tc"); } + if (extensions.Contains("gl_EXT_texture_cube_map")) { EXT_texture_cube_map = true; extensions.Remove("glEXT_texture_cube_map"); } + if (extensions.Contains("gl_EXT_texture_env_add")) { EXT_texture_env_add = true; extensions.Remove("glEXT_texture_env_add"); } + if (extensions.Contains("gl_EXT_texture_env_combine")) { EXT_texture_env_combine = true; extensions.Remove("glEXT_texture_env_combine"); } + if (extensions.Contains("gl_EXT_texture_env_dot3")) { EXT_texture_env_dot3 = true; extensions.Remove("glEXT_texture_env_dot3"); } + if (extensions.Contains("gl_EXT_texture_filter_anisotropic")) { EXT_texture_filter_anisotropic = true; extensions.Remove("glEXT_texture_filter_anisotropic"); } + if (extensions.Contains("gl_EXT_texture_filter_minmax")) { EXT_texture_filter_minmax = true; extensions.Remove("glEXT_texture_filter_minmax"); } + if (extensions.Contains("gl_EXT_texture_integer")) { EXT_texture_integer = true; extensions.Remove("glEXT_texture_integer"); } + if (extensions.Contains("gl_EXT_texture_lod_bias")) { EXT_texture_lod_bias = true; extensions.Remove("glEXT_texture_lod_bias"); } + if (extensions.Contains("gl_EXT_texture_mirror_clamp")) { EXT_texture_mirror_clamp = true; extensions.Remove("glEXT_texture_mirror_clamp"); } + if (extensions.Contains("gl_EXT_texture_object")) { EXT_texture_object = true; extensions.Remove("glEXT_texture_object"); } + if (extensions.Contains("gl_EXT_texture_perturb_normal")) { EXT_texture_perturb_normal = true; extensions.Remove("glEXT_texture_perturb_normal"); } + if (extensions.Contains("gl_EXT_texture_sRGB")) { EXT_texture_sRGB = true; extensions.Remove("glEXT_texture_sRGB"); } + if (extensions.Contains("gl_EXT_texture_sRGB_R8")) { EXT_texture_sRGB_R8 = true; extensions.Remove("glEXT_texture_sRGB_R8"); } + if (extensions.Contains("gl_EXT_texture_sRGB_RG8")) { EXT_texture_sRGB_RG8 = true; extensions.Remove("glEXT_texture_sRGB_RG8"); } + if (extensions.Contains("gl_EXT_texture_sRGB_decode")) { EXT_texture_sRGB_decode = true; extensions.Remove("glEXT_texture_sRGB_decode"); } + if (extensions.Contains("gl_EXT_texture_shadow_lod")) { EXT_texture_shadow_lod = true; extensions.Remove("glEXT_texture_shadow_lod"); } + if (extensions.Contains("gl_EXT_texture_shared_exponent")) { EXT_texture_shared_exponent = true; extensions.Remove("glEXT_texture_shared_exponent"); } + if (extensions.Contains("gl_EXT_texture_snorm")) { EXT_texture_snorm = true; extensions.Remove("glEXT_texture_snorm"); } + if (extensions.Contains("gl_EXT_texture_storage")) { EXT_texture_storage = true; extensions.Remove("glEXT_texture_storage"); } + if (extensions.Contains("gl_EXT_texture_swizzle")) { EXT_texture_swizzle = true; extensions.Remove("glEXT_texture_swizzle"); } + if (extensions.Contains("gl_EXT_timer_query")) { EXT_timer_query = true; extensions.Remove("glEXT_timer_query"); } + if (extensions.Contains("gl_EXT_transform_feedback")) { EXT_transform_feedback = true; extensions.Remove("glEXT_transform_feedback"); } + if (extensions.Contains("gl_EXT_vertex_array")) { EXT_vertex_array = true; extensions.Remove("glEXT_vertex_array"); } + if (extensions.Contains("gl_EXT_vertex_array_bgra")) { EXT_vertex_array_bgra = true; extensions.Remove("glEXT_vertex_array_bgra"); } + if (extensions.Contains("gl_EXT_vertex_attrib_64bit")) { EXT_vertex_attrib_64bit = true; extensions.Remove("glEXT_vertex_attrib_64bit"); } + if (extensions.Contains("gl_EXT_vertex_shader")) { EXT_vertex_shader = true; extensions.Remove("glEXT_vertex_shader"); } + if (extensions.Contains("gl_EXT_vertex_weighting")) { EXT_vertex_weighting = true; extensions.Remove("glEXT_vertex_weighting"); } + if (extensions.Contains("gl_EXT_win32_keyed_mutex")) { EXT_win32_keyed_mutex = true; extensions.Remove("glEXT_win32_keyed_mutex"); } + if (extensions.Contains("gl_EXT_window_rectangles")) { EXT_window_rectangles = true; extensions.Remove("glEXT_window_rectangles"); } + if (extensions.Contains("gl_EXT_x11_sync_object")) { EXT_x11_sync_object = true; extensions.Remove("glEXT_x11_sync_object"); } + if (extensions.Contains("gl_GREMEDY_frame_terminator")) { GREMEDY_frame_terminator = true; extensions.Remove("glGREMEDY_frame_terminator"); } + if (extensions.Contains("gl_GREMEDY_string_marker")) { GREMEDY_string_marker = true; extensions.Remove("glGREMEDY_string_marker"); } + if (extensions.Contains("gl_HP_convolution_border_modes")) { HP_convolution_border_modes = true; extensions.Remove("glHP_convolution_border_modes"); } + if (extensions.Contains("gl_HP_image_transform")) { HP_image_transform = true; extensions.Remove("glHP_image_transform"); } + if (extensions.Contains("gl_HP_occlusion_test")) { HP_occlusion_test = true; extensions.Remove("glHP_occlusion_test"); } + if (extensions.Contains("gl_HP_texture_lighting")) { HP_texture_lighting = true; extensions.Remove("glHP_texture_lighting"); } + if (extensions.Contains("gl_IBM_cull_vertex")) { IBM_cull_vertex = true; extensions.Remove("glIBM_cull_vertex"); } + if (extensions.Contains("gl_IBM_multimode_draw_arrays")) { IBM_multimode_draw_arrays = true; extensions.Remove("glIBM_multimode_draw_arrays"); } + if (extensions.Contains("gl_IBM_rasterpos_clip")) { IBM_rasterpos_clip = true; extensions.Remove("glIBM_rasterpos_clip"); } + if (extensions.Contains("gl_IBM_static_data")) { IBM_static_data = true; extensions.Remove("glIBM_static_data"); } + if (extensions.Contains("gl_IBM_texture_mirrored_repeat")) { IBM_texture_mirrored_repeat = true; extensions.Remove("glIBM_texture_mirrored_repeat"); } + if (extensions.Contains("gl_IBM_vertex_array_lists")) { IBM_vertex_array_lists = true; extensions.Remove("glIBM_vertex_array_lists"); } + if (extensions.Contains("gl_INGR_blend_func_separate")) { INGR_blend_func_separate = true; extensions.Remove("glINGR_blend_func_separate"); } + if (extensions.Contains("gl_INGR_color_clamp")) { INGR_color_clamp = true; extensions.Remove("glINGR_color_clamp"); } + if (extensions.Contains("gl_INGR_interlace_read")) { INGR_interlace_read = true; extensions.Remove("glINGR_interlace_read"); } + if (extensions.Contains("gl_INTEL_blackhole_render")) { INTEL_blackhole_render = true; extensions.Remove("glINTEL_blackhole_render"); } + if (extensions.Contains("gl_INTEL_conservative_rasterization")) { INTEL_conservative_rasterization = true; extensions.Remove("glINTEL_conservative_rasterization"); } + if (extensions.Contains("gl_INTEL_fragment_shader_ordering")) { INTEL_fragment_shader_ordering = true; extensions.Remove("glINTEL_fragment_shader_ordering"); } + if (extensions.Contains("gl_INTEL_framebuffer_CMAA")) { INTEL_framebuffer_CMAA = true; extensions.Remove("glINTEL_framebuffer_CMAA"); } + if (extensions.Contains("gl_INTEL_map_texture")) { INTEL_map_texture = true; extensions.Remove("glINTEL_map_texture"); } + if (extensions.Contains("gl_INTEL_parallel_arrays")) { INTEL_parallel_arrays = true; extensions.Remove("glINTEL_parallel_arrays"); } + if (extensions.Contains("gl_INTEL_performance_query")) { INTEL_performance_query = true; extensions.Remove("glINTEL_performance_query"); } + if (extensions.Contains("gl_KHR_blend_equation_advanced")) { KHR_blend_equation_advanced = true; extensions.Remove("glKHR_blend_equation_advanced"); } + if (extensions.Contains("gl_KHR_blend_equation_advanced_coherent")) { KHR_blend_equation_advanced_coherent = true; extensions.Remove("glKHR_blend_equation_advanced_coherent"); } + if (extensions.Contains("gl_KHR_context_flush_control")) { KHR_context_flush_control = true; extensions.Remove("glKHR_context_flush_control"); } + if (extensions.Contains("gl_KHR_debug")) { KHR_debug = true; extensions.Remove("glKHR_debug"); } + if (extensions.Contains("gl_KHR_no_error")) { KHR_no_error = true; extensions.Remove("glKHR_no_error"); } + if (extensions.Contains("gl_KHR_parallel_shader_compile")) { KHR_parallel_shader_compile = true; extensions.Remove("glKHR_parallel_shader_compile"); } + if (extensions.Contains("gl_KHR_robust_buffer_access_behavior")) { KHR_robust_buffer_access_behavior = true; extensions.Remove("glKHR_robust_buffer_access_behavior"); } + if (extensions.Contains("gl_KHR_robustness")) { KHR_robustness = true; extensions.Remove("glKHR_robustness"); } + if (extensions.Contains("gl_KHR_shader_subgroup")) { KHR_shader_subgroup = true; extensions.Remove("glKHR_shader_subgroup"); } + if (extensions.Contains("gl_KHR_texture_compression_astc_hdr")) { KHR_texture_compression_astc_hdr = true; extensions.Remove("glKHR_texture_compression_astc_hdr"); } + if (extensions.Contains("gl_KHR_texture_compression_astc_ldr")) { KHR_texture_compression_astc_ldr = true; extensions.Remove("glKHR_texture_compression_astc_ldr"); } + if (extensions.Contains("gl_KHR_texture_compression_astc_sliced_3d")) { KHR_texture_compression_astc_sliced_3d = true; extensions.Remove("glKHR_texture_compression_astc_sliced_3d"); } + if (extensions.Contains("gl_MESAX_texture_stack")) { MESAX_texture_stack = true; extensions.Remove("glMESAX_texture_stack"); } + if (extensions.Contains("gl_MESA_framebuffer_flip_x")) { MESA_framebuffer_flip_x = true; extensions.Remove("glMESA_framebuffer_flip_x"); } + if (extensions.Contains("gl_MESA_framebuffer_flip_y")) { MESA_framebuffer_flip_y = true; extensions.Remove("glMESA_framebuffer_flip_y"); } + if (extensions.Contains("gl_MESA_framebuffer_swap_xy")) { MESA_framebuffer_swap_xy = true; extensions.Remove("glMESA_framebuffer_swap_xy"); } + if (extensions.Contains("gl_MESA_pack_invert")) { MESA_pack_invert = true; extensions.Remove("glMESA_pack_invert"); } + if (extensions.Contains("gl_MESA_program_binary_formats")) { MESA_program_binary_formats = true; extensions.Remove("glMESA_program_binary_formats"); } + if (extensions.Contains("gl_MESA_resize_buffers")) { MESA_resize_buffers = true; extensions.Remove("glMESA_resize_buffers"); } + if (extensions.Contains("gl_MESA_shader_integer_functions")) { MESA_shader_integer_functions = true; extensions.Remove("glMESA_shader_integer_functions"); } + if (extensions.Contains("gl_MESA_tile_raster_order")) { MESA_tile_raster_order = true; extensions.Remove("glMESA_tile_raster_order"); } + if (extensions.Contains("gl_MESA_window_pos")) { MESA_window_pos = true; extensions.Remove("glMESA_window_pos"); } + if (extensions.Contains("gl_MESA_ycbcr_texture")) { MESA_ycbcr_texture = true; extensions.Remove("glMESA_ycbcr_texture"); } + if (extensions.Contains("gl_NVX_blend_equation_advanced_multi_draw_buffers")) { NVX_blend_equation_advanced_multi_draw_buffers = true; extensions.Remove("glNVX_blend_equation_advanced_multi_draw_buffers"); } + if (extensions.Contains("gl_NVX_conditional_render")) { NVX_conditional_render = true; extensions.Remove("glNVX_conditional_render"); } + if (extensions.Contains("gl_NVX_gpu_memory_info")) { NVX_gpu_memory_info = true; extensions.Remove("glNVX_gpu_memory_info"); } + if (extensions.Contains("gl_NVX_gpu_multicast2")) { NVX_gpu_multicast2 = true; extensions.Remove("glNVX_gpu_multicast2"); } + if (extensions.Contains("gl_NVX_linked_gpu_multicast")) { NVX_linked_gpu_multicast = true; extensions.Remove("glNVX_linked_gpu_multicast"); } + if (extensions.Contains("gl_NVX_progress_fence")) { NVX_progress_fence = true; extensions.Remove("glNVX_progress_fence"); } + if (extensions.Contains("gl_NV_alpha_to_coverage_dither_control")) { NV_alpha_to_coverage_dither_control = true; extensions.Remove("glNV_alpha_to_coverage_dither_control"); } + if (extensions.Contains("gl_NV_bindless_multi_draw_indirect")) { NV_bindless_multi_draw_indirect = true; extensions.Remove("glNV_bindless_multi_draw_indirect"); } + if (extensions.Contains("gl_NV_bindless_multi_draw_indirect_count")) { NV_bindless_multi_draw_indirect_count = true; extensions.Remove("glNV_bindless_multi_draw_indirect_count"); } + if (extensions.Contains("gl_NV_bindless_texture")) { NV_bindless_texture = true; extensions.Remove("glNV_bindless_texture"); } + if (extensions.Contains("gl_NV_blend_equation_advanced")) { NV_blend_equation_advanced = true; extensions.Remove("glNV_blend_equation_advanced"); } + if (extensions.Contains("gl_NV_blend_equation_advanced_coherent")) { NV_blend_equation_advanced_coherent = true; extensions.Remove("glNV_blend_equation_advanced_coherent"); } + if (extensions.Contains("gl_NV_blend_minmax_factor")) { NV_blend_minmax_factor = true; extensions.Remove("glNV_blend_minmax_factor"); } + if (extensions.Contains("gl_NV_blend_square")) { NV_blend_square = true; extensions.Remove("glNV_blend_square"); } + if (extensions.Contains("gl_NV_clip_space_w_scaling")) { NV_clip_space_w_scaling = true; extensions.Remove("glNV_clip_space_w_scaling"); } + if (extensions.Contains("gl_NV_command_list")) { NV_command_list = true; extensions.Remove("glNV_command_list"); } + if (extensions.Contains("gl_NV_compute_program5")) { NV_compute_program5 = true; extensions.Remove("glNV_compute_program5"); } + if (extensions.Contains("gl_NV_compute_shader_derivatives")) { NV_compute_shader_derivatives = true; extensions.Remove("glNV_compute_shader_derivatives"); } + if (extensions.Contains("gl_NV_conditional_render")) { NV_conditional_render = true; extensions.Remove("glNV_conditional_render"); } + if (extensions.Contains("gl_NV_conservative_raster")) { NV_conservative_raster = true; extensions.Remove("glNV_conservative_raster"); } + if (extensions.Contains("gl_NV_conservative_raster_dilate")) { NV_conservative_raster_dilate = true; extensions.Remove("glNV_conservative_raster_dilate"); } + if (extensions.Contains("gl_NV_conservative_raster_pre_snap")) { NV_conservative_raster_pre_snap = true; extensions.Remove("glNV_conservative_raster_pre_snap"); } + if (extensions.Contains("gl_NV_conservative_raster_pre_snap_triangles")) { NV_conservative_raster_pre_snap_triangles = true; extensions.Remove("glNV_conservative_raster_pre_snap_triangles"); } + if (extensions.Contains("gl_NV_conservative_raster_underestimation")) { NV_conservative_raster_underestimation = true; extensions.Remove("glNV_conservative_raster_underestimation"); } + if (extensions.Contains("gl_NV_copy_depth_to_color")) { NV_copy_depth_to_color = true; extensions.Remove("glNV_copy_depth_to_color"); } + if (extensions.Contains("gl_NV_copy_image")) { NV_copy_image = true; extensions.Remove("glNV_copy_image"); } + if (extensions.Contains("gl_NV_deep_texture3D")) { NV_deep_texture3D = true; extensions.Remove("glNV_deep_texture3D"); } + if (extensions.Contains("gl_NV_depth_buffer_float")) { NV_depth_buffer_float = true; extensions.Remove("glNV_depth_buffer_float"); } + if (extensions.Contains("gl_NV_depth_clamp")) { NV_depth_clamp = true; extensions.Remove("glNV_depth_clamp"); } + if (extensions.Contains("gl_NV_draw_texture")) { NV_draw_texture = true; extensions.Remove("glNV_draw_texture"); } + if (extensions.Contains("gl_NV_draw_vulkan_image")) { NV_draw_vulkan_image = true; extensions.Remove("glNV_draw_vulkan_image"); } + if (extensions.Contains("gl_NV_evaluators")) { NV_evaluators = true; extensions.Remove("glNV_evaluators"); } + if (extensions.Contains("gl_NV_explicit_multisample")) { NV_explicit_multisample = true; extensions.Remove("glNV_explicit_multisample"); } + if (extensions.Contains("gl_NV_fence")) { NV_fence = true; extensions.Remove("glNV_fence"); } + if (extensions.Contains("gl_NV_fill_rectangle")) { NV_fill_rectangle = true; extensions.Remove("glNV_fill_rectangle"); } + if (extensions.Contains("gl_NV_float_buffer")) { NV_float_buffer = true; extensions.Remove("glNV_float_buffer"); } + if (extensions.Contains("gl_NV_fog_distance")) { NV_fog_distance = true; extensions.Remove("glNV_fog_distance"); } + if (extensions.Contains("gl_NV_fragment_coverage_to_color")) { NV_fragment_coverage_to_color = true; extensions.Remove("glNV_fragment_coverage_to_color"); } + if (extensions.Contains("gl_NV_fragment_program")) { NV_fragment_program = true; extensions.Remove("glNV_fragment_program"); } + if (extensions.Contains("gl_NV_fragment_program2")) { NV_fragment_program2 = true; extensions.Remove("glNV_fragment_program2"); } + if (extensions.Contains("gl_NV_fragment_program4")) { NV_fragment_program4 = true; extensions.Remove("glNV_fragment_program4"); } + if (extensions.Contains("gl_NV_fragment_program_option")) { NV_fragment_program_option = true; extensions.Remove("glNV_fragment_program_option"); } + if (extensions.Contains("gl_NV_fragment_shader_barycentric")) { NV_fragment_shader_barycentric = true; extensions.Remove("glNV_fragment_shader_barycentric"); } + if (extensions.Contains("gl_NV_fragment_shader_interlock")) { NV_fragment_shader_interlock = true; extensions.Remove("glNV_fragment_shader_interlock"); } + if (extensions.Contains("gl_NV_framebuffer_mixed_samples")) { NV_framebuffer_mixed_samples = true; extensions.Remove("glNV_framebuffer_mixed_samples"); } + if (extensions.Contains("gl_NV_framebuffer_multisample_coverage")) { NV_framebuffer_multisample_coverage = true; extensions.Remove("glNV_framebuffer_multisample_coverage"); } + if (extensions.Contains("gl_NV_geometry_program4")) { NV_geometry_program4 = true; extensions.Remove("glNV_geometry_program4"); } + if (extensions.Contains("gl_NV_geometry_shader4")) { NV_geometry_shader4 = true; extensions.Remove("glNV_geometry_shader4"); } + if (extensions.Contains("gl_NV_geometry_shader_passthrough")) { NV_geometry_shader_passthrough = true; extensions.Remove("glNV_geometry_shader_passthrough"); } + if (extensions.Contains("gl_NV_gpu_multicast")) { NV_gpu_multicast = true; extensions.Remove("glNV_gpu_multicast"); } + if (extensions.Contains("gl_NV_gpu_program4")) { NV_gpu_program4 = true; extensions.Remove("glNV_gpu_program4"); } + if (extensions.Contains("gl_NV_gpu_program5")) { NV_gpu_program5 = true; extensions.Remove("glNV_gpu_program5"); } + if (extensions.Contains("gl_NV_gpu_program5_mem_extended")) { NV_gpu_program5_mem_extended = true; extensions.Remove("glNV_gpu_program5_mem_extended"); } + if (extensions.Contains("gl_NV_gpu_shader5")) { NV_gpu_shader5 = true; extensions.Remove("glNV_gpu_shader5"); } + if (extensions.Contains("gl_NV_half_float")) { NV_half_float = true; extensions.Remove("glNV_half_float"); } + if (extensions.Contains("gl_NV_internalformat_sample_query")) { NV_internalformat_sample_query = true; extensions.Remove("glNV_internalformat_sample_query"); } + if (extensions.Contains("gl_NV_light_max_exponent")) { NV_light_max_exponent = true; extensions.Remove("glNV_light_max_exponent"); } + if (extensions.Contains("gl_NV_memory_attachment")) { NV_memory_attachment = true; extensions.Remove("glNV_memory_attachment"); } + if (extensions.Contains("gl_NV_memory_object_sparse")) { NV_memory_object_sparse = true; extensions.Remove("glNV_memory_object_sparse"); } + if (extensions.Contains("gl_NV_mesh_shader")) { NV_mesh_shader = true; extensions.Remove("glNV_mesh_shader"); } + if (extensions.Contains("gl_NV_multisample_coverage")) { NV_multisample_coverage = true; extensions.Remove("glNV_multisample_coverage"); } + if (extensions.Contains("gl_NV_multisample_filter_hint")) { NV_multisample_filter_hint = true; extensions.Remove("glNV_multisample_filter_hint"); } + if (extensions.Contains("gl_NV_occlusion_query")) { NV_occlusion_query = true; extensions.Remove("glNV_occlusion_query"); } + if (extensions.Contains("gl_NV_packed_depth_stencil")) { NV_packed_depth_stencil = true; extensions.Remove("glNV_packed_depth_stencil"); } + if (extensions.Contains("gl_NV_parameter_buffer_object")) { NV_parameter_buffer_object = true; extensions.Remove("glNV_parameter_buffer_object"); } + if (extensions.Contains("gl_NV_parameter_buffer_object2")) { NV_parameter_buffer_object2 = true; extensions.Remove("glNV_parameter_buffer_object2"); } + if (extensions.Contains("gl_NV_path_rendering")) { NV_path_rendering = true; extensions.Remove("glNV_path_rendering"); } + if (extensions.Contains("gl_NV_path_rendering_shared_edge")) { NV_path_rendering_shared_edge = true; extensions.Remove("glNV_path_rendering_shared_edge"); } + if (extensions.Contains("gl_NV_pixel_data_range")) { NV_pixel_data_range = true; extensions.Remove("glNV_pixel_data_range"); } + if (extensions.Contains("gl_NV_point_sprite")) { NV_point_sprite = true; extensions.Remove("glNV_point_sprite"); } + if (extensions.Contains("gl_NV_present_video")) { NV_present_video = true; extensions.Remove("glNV_present_video"); } + if (extensions.Contains("gl_NV_primitive_restart")) { NV_primitive_restart = true; extensions.Remove("glNV_primitive_restart"); } + if (extensions.Contains("gl_NV_primitive_shading_rate")) { NV_primitive_shading_rate = true; extensions.Remove("glNV_primitive_shading_rate"); } + if (extensions.Contains("gl_NV_query_resource")) { NV_query_resource = true; extensions.Remove("glNV_query_resource"); } + if (extensions.Contains("gl_NV_query_resource_tag")) { NV_query_resource_tag = true; extensions.Remove("glNV_query_resource_tag"); } + if (extensions.Contains("gl_NV_register_combiners")) { NV_register_combiners = true; extensions.Remove("glNV_register_combiners"); } + if (extensions.Contains("gl_NV_register_combiners2")) { NV_register_combiners2 = true; extensions.Remove("glNV_register_combiners2"); } + if (extensions.Contains("gl_NV_representative_fragment_test")) { NV_representative_fragment_test = true; extensions.Remove("glNV_representative_fragment_test"); } + if (extensions.Contains("gl_NV_robustness_video_memory_purge")) { NV_robustness_video_memory_purge = true; extensions.Remove("glNV_robustness_video_memory_purge"); } + if (extensions.Contains("gl_NV_sample_locations")) { NV_sample_locations = true; extensions.Remove("glNV_sample_locations"); } + if (extensions.Contains("gl_NV_sample_mask_override_coverage")) { NV_sample_mask_override_coverage = true; extensions.Remove("glNV_sample_mask_override_coverage"); } + if (extensions.Contains("gl_NV_scissor_exclusive")) { NV_scissor_exclusive = true; extensions.Remove("glNV_scissor_exclusive"); } + if (extensions.Contains("gl_NV_shader_atomic_counters")) { NV_shader_atomic_counters = true; extensions.Remove("glNV_shader_atomic_counters"); } + if (extensions.Contains("gl_NV_shader_atomic_float")) { NV_shader_atomic_float = true; extensions.Remove("glNV_shader_atomic_float"); } + if (extensions.Contains("gl_NV_shader_atomic_float64")) { NV_shader_atomic_float64 = true; extensions.Remove("glNV_shader_atomic_float64"); } + if (extensions.Contains("gl_NV_shader_atomic_fp16_vector")) { NV_shader_atomic_fp16_vector = true; extensions.Remove("glNV_shader_atomic_fp16_vector"); } + if (extensions.Contains("gl_NV_shader_atomic_int64")) { NV_shader_atomic_int64 = true; extensions.Remove("glNV_shader_atomic_int64"); } + if (extensions.Contains("gl_NV_shader_buffer_load")) { NV_shader_buffer_load = true; extensions.Remove("glNV_shader_buffer_load"); } + if (extensions.Contains("gl_NV_shader_buffer_store")) { NV_shader_buffer_store = true; extensions.Remove("glNV_shader_buffer_store"); } + if (extensions.Contains("gl_NV_shader_storage_buffer_object")) { NV_shader_storage_buffer_object = true; extensions.Remove("glNV_shader_storage_buffer_object"); } + if (extensions.Contains("gl_NV_shader_subgroup_partitioned")) { NV_shader_subgroup_partitioned = true; extensions.Remove("glNV_shader_subgroup_partitioned"); } + if (extensions.Contains("gl_NV_shader_texture_footprint")) { NV_shader_texture_footprint = true; extensions.Remove("glNV_shader_texture_footprint"); } + if (extensions.Contains("gl_NV_shader_thread_group")) { NV_shader_thread_group = true; extensions.Remove("glNV_shader_thread_group"); } + if (extensions.Contains("gl_NV_shader_thread_shuffle")) { NV_shader_thread_shuffle = true; extensions.Remove("glNV_shader_thread_shuffle"); } + if (extensions.Contains("gl_NV_shading_rate_image")) { NV_shading_rate_image = true; extensions.Remove("glNV_shading_rate_image"); } + if (extensions.Contains("gl_NV_stereo_view_rendering")) { NV_stereo_view_rendering = true; extensions.Remove("glNV_stereo_view_rendering"); } + if (extensions.Contains("gl_NV_tessellation_program5")) { NV_tessellation_program5 = true; extensions.Remove("glNV_tessellation_program5"); } + if (extensions.Contains("gl_NV_texgen_emboss")) { NV_texgen_emboss = true; extensions.Remove("glNV_texgen_emboss"); } + if (extensions.Contains("gl_NV_texgen_reflection")) { NV_texgen_reflection = true; extensions.Remove("glNV_texgen_reflection"); } + if (extensions.Contains("gl_NV_texture_barrier")) { NV_texture_barrier = true; extensions.Remove("glNV_texture_barrier"); } + if (extensions.Contains("gl_NV_texture_compression_vtc")) { NV_texture_compression_vtc = true; extensions.Remove("glNV_texture_compression_vtc"); } + if (extensions.Contains("gl_NV_texture_env_combine4")) { NV_texture_env_combine4 = true; extensions.Remove("glNV_texture_env_combine4"); } + if (extensions.Contains("gl_NV_texture_expand_normal")) { NV_texture_expand_normal = true; extensions.Remove("glNV_texture_expand_normal"); } + if (extensions.Contains("gl_NV_texture_multisample")) { NV_texture_multisample = true; extensions.Remove("glNV_texture_multisample"); } + if (extensions.Contains("gl_NV_texture_rectangle")) { NV_texture_rectangle = true; extensions.Remove("glNV_texture_rectangle"); } + if (extensions.Contains("gl_NV_texture_rectangle_compressed")) { NV_texture_rectangle_compressed = true; extensions.Remove("glNV_texture_rectangle_compressed"); } + if (extensions.Contains("gl_NV_texture_shader")) { NV_texture_shader = true; extensions.Remove("glNV_texture_shader"); } + if (extensions.Contains("gl_NV_texture_shader2")) { NV_texture_shader2 = true; extensions.Remove("glNV_texture_shader2"); } + if (extensions.Contains("gl_NV_texture_shader3")) { NV_texture_shader3 = true; extensions.Remove("glNV_texture_shader3"); } + if (extensions.Contains("gl_NV_timeline_semaphore")) { NV_timeline_semaphore = true; extensions.Remove("glNV_timeline_semaphore"); } + if (extensions.Contains("gl_NV_transform_feedback")) { NV_transform_feedback = true; extensions.Remove("glNV_transform_feedback"); } + if (extensions.Contains("gl_NV_transform_feedback2")) { NV_transform_feedback2 = true; extensions.Remove("glNV_transform_feedback2"); } + if (extensions.Contains("gl_NV_uniform_buffer_std430_layout")) { NV_uniform_buffer_std430_layout = true; extensions.Remove("glNV_uniform_buffer_std430_layout"); } + if (extensions.Contains("gl_NV_uniform_buffer_unified_memory")) { NV_uniform_buffer_unified_memory = true; extensions.Remove("glNV_uniform_buffer_unified_memory"); } + if (extensions.Contains("gl_NV_vdpau_interop")) { NV_vdpau_interop = true; extensions.Remove("glNV_vdpau_interop"); } + if (extensions.Contains("gl_NV_vdpau_interop2")) { NV_vdpau_interop2 = true; extensions.Remove("glNV_vdpau_interop2"); } + if (extensions.Contains("gl_NV_vertex_array_range")) { NV_vertex_array_range = true; extensions.Remove("glNV_vertex_array_range"); } + if (extensions.Contains("gl_NV_vertex_array_range2")) { NV_vertex_array_range2 = true; extensions.Remove("glNV_vertex_array_range2"); } + if (extensions.Contains("gl_NV_vertex_attrib_integer_64bit")) { NV_vertex_attrib_integer_64bit = true; extensions.Remove("glNV_vertex_attrib_integer_64bit"); } + if (extensions.Contains("gl_NV_vertex_buffer_unified_memory")) { NV_vertex_buffer_unified_memory = true; extensions.Remove("glNV_vertex_buffer_unified_memory"); } + if (extensions.Contains("gl_NV_vertex_program")) { NV_vertex_program = true; extensions.Remove("glNV_vertex_program"); } + if (extensions.Contains("gl_NV_vertex_program1_1")) { NV_vertex_program1_1 = true; extensions.Remove("glNV_vertex_program1_1"); } + if (extensions.Contains("gl_NV_vertex_program2")) { NV_vertex_program2 = true; extensions.Remove("glNV_vertex_program2"); } + if (extensions.Contains("gl_NV_vertex_program2_option")) { NV_vertex_program2_option = true; extensions.Remove("glNV_vertex_program2_option"); } + if (extensions.Contains("gl_NV_vertex_program3")) { NV_vertex_program3 = true; extensions.Remove("glNV_vertex_program3"); } + if (extensions.Contains("gl_NV_vertex_program4")) { NV_vertex_program4 = true; extensions.Remove("glNV_vertex_program4"); } + if (extensions.Contains("gl_NV_video_capture")) { NV_video_capture = true; extensions.Remove("glNV_video_capture"); } + if (extensions.Contains("gl_NV_viewport_array2")) { NV_viewport_array2 = true; extensions.Remove("glNV_viewport_array2"); } + if (extensions.Contains("gl_NV_viewport_swizzle")) { NV_viewport_swizzle = true; extensions.Remove("glNV_viewport_swizzle"); } + if (extensions.Contains("gl_OES_byte_coordinates")) { OES_byte_coordinates = true; extensions.Remove("glOES_byte_coordinates"); } + if (extensions.Contains("gl_OES_compressed_paletted_texture")) { OES_compressed_paletted_texture = true; extensions.Remove("glOES_compressed_paletted_texture"); } + if (extensions.Contains("gl_OES_fixed_point")) { OES_fixed_point = true; extensions.Remove("glOES_fixed_point"); } + if (extensions.Contains("gl_OES_query_matrix")) { OES_query_matrix = true; extensions.Remove("glOES_query_matrix"); } + if (extensions.Contains("gl_OES_read_format")) { OES_read_format = true; extensions.Remove("glOES_read_format"); } + if (extensions.Contains("gl_OES_single_precision")) { OES_single_precision = true; extensions.Remove("glOES_single_precision"); } + if (extensions.Contains("gl_OML_interlace")) { OML_interlace = true; extensions.Remove("glOML_interlace"); } + if (extensions.Contains("gl_OML_resample")) { OML_resample = true; extensions.Remove("glOML_resample"); } + if (extensions.Contains("gl_OML_subsample")) { OML_subsample = true; extensions.Remove("glOML_subsample"); } + if (extensions.Contains("gl_OVR_multiview")) { OVR_multiview = true; extensions.Remove("glOVR_multiview"); } + if (extensions.Contains("gl_OVR_multiview2")) { OVR_multiview2 = true; extensions.Remove("glOVR_multiview2"); } + if (extensions.Contains("gl_PGI_misc_hints")) { PGI_misc_hints = true; extensions.Remove("glPGI_misc_hints"); } + if (extensions.Contains("gl_PGI_vertex_hints")) { PGI_vertex_hints = true; extensions.Remove("glPGI_vertex_hints"); } + if (extensions.Contains("gl_REND_screen_coordinates")) { REND_screen_coordinates = true; extensions.Remove("glREND_screen_coordinates"); } + if (extensions.Contains("gl_S3_s3tc")) { S3_s3tc = true; extensions.Remove("glS3_s3tc"); } + if (extensions.Contains("gl_SGIS_detail_texture")) { SGIS_detail_texture = true; extensions.Remove("glSGIS_detail_texture"); } + if (extensions.Contains("gl_SGIS_fog_function")) { SGIS_fog_function = true; extensions.Remove("glSGIS_fog_function"); } + if (extensions.Contains("gl_SGIS_generate_mipmap")) { SGIS_generate_mipmap = true; extensions.Remove("glSGIS_generate_mipmap"); } + if (extensions.Contains("gl_SGIS_multisample")) { SGIS_multisample = true; extensions.Remove("glSGIS_multisample"); } + if (extensions.Contains("gl_SGIS_pixel_texture")) { SGIS_pixel_texture = true; extensions.Remove("glSGIS_pixel_texture"); } + if (extensions.Contains("gl_SGIS_point_line_texgen")) { SGIS_point_line_texgen = true; extensions.Remove("glSGIS_point_line_texgen"); } + if (extensions.Contains("gl_SGIS_point_parameters")) { SGIS_point_parameters = true; extensions.Remove("glSGIS_point_parameters"); } + if (extensions.Contains("gl_SGIS_sharpen_texture")) { SGIS_sharpen_texture = true; extensions.Remove("glSGIS_sharpen_texture"); } + if (extensions.Contains("gl_SGIS_texture4D")) { SGIS_texture4D = true; extensions.Remove("glSGIS_texture4D"); } + if (extensions.Contains("gl_SGIS_texture_border_clamp")) { SGIS_texture_border_clamp = true; extensions.Remove("glSGIS_texture_border_clamp"); } + if (extensions.Contains("gl_SGIS_texture_color_mask")) { SGIS_texture_color_mask = true; extensions.Remove("glSGIS_texture_color_mask"); } + if (extensions.Contains("gl_SGIS_texture_edge_clamp")) { SGIS_texture_edge_clamp = true; extensions.Remove("glSGIS_texture_edge_clamp"); } + if (extensions.Contains("gl_SGIS_texture_filter4")) { SGIS_texture_filter4 = true; extensions.Remove("glSGIS_texture_filter4"); } + if (extensions.Contains("gl_SGIS_texture_lod")) { SGIS_texture_lod = true; extensions.Remove("glSGIS_texture_lod"); } + if (extensions.Contains("gl_SGIS_texture_select")) { SGIS_texture_select = true; extensions.Remove("glSGIS_texture_select"); } + if (extensions.Contains("gl_SGIX_async")) { SGIX_async = true; extensions.Remove("glSGIX_async"); } + if (extensions.Contains("gl_SGIX_async_histogram")) { SGIX_async_histogram = true; extensions.Remove("glSGIX_async_histogram"); } + if (extensions.Contains("gl_SGIX_async_pixel")) { SGIX_async_pixel = true; extensions.Remove("glSGIX_async_pixel"); } + if (extensions.Contains("gl_SGIX_blend_alpha_minmax")) { SGIX_blend_alpha_minmax = true; extensions.Remove("glSGIX_blend_alpha_minmax"); } + if (extensions.Contains("gl_SGIX_calligraphic_fragment")) { SGIX_calligraphic_fragment = true; extensions.Remove("glSGIX_calligraphic_fragment"); } + if (extensions.Contains("gl_SGIX_clipmap")) { SGIX_clipmap = true; extensions.Remove("glSGIX_clipmap"); } + if (extensions.Contains("gl_SGIX_convolution_accuracy")) { SGIX_convolution_accuracy = true; extensions.Remove("glSGIX_convolution_accuracy"); } + if (extensions.Contains("gl_SGIX_depth_pass_instrument")) { SGIX_depth_pass_instrument = true; extensions.Remove("glSGIX_depth_pass_instrument"); } + if (extensions.Contains("gl_SGIX_depth_texture")) { SGIX_depth_texture = true; extensions.Remove("glSGIX_depth_texture"); } + if (extensions.Contains("gl_SGIX_flush_raster")) { SGIX_flush_raster = true; extensions.Remove("glSGIX_flush_raster"); } + if (extensions.Contains("gl_SGIX_fog_offset")) { SGIX_fog_offset = true; extensions.Remove("glSGIX_fog_offset"); } + if (extensions.Contains("gl_SGIX_fragment_lighting")) { SGIX_fragment_lighting = true; extensions.Remove("glSGIX_fragment_lighting"); } + if (extensions.Contains("gl_SGIX_framezoom")) { SGIX_framezoom = true; extensions.Remove("glSGIX_framezoom"); } + if (extensions.Contains("gl_SGIX_igloo_interface")) { SGIX_igloo_interface = true; extensions.Remove("glSGIX_igloo_interface"); } + if (extensions.Contains("gl_SGIX_instruments")) { SGIX_instruments = true; extensions.Remove("glSGIX_instruments"); } + if (extensions.Contains("gl_SGIX_interlace")) { SGIX_interlace = true; extensions.Remove("glSGIX_interlace"); } + if (extensions.Contains("gl_SGIX_ir_instrument1")) { SGIX_ir_instrument1 = true; extensions.Remove("glSGIX_ir_instrument1"); } + if (extensions.Contains("gl_SGIX_list_priority")) { SGIX_list_priority = true; extensions.Remove("glSGIX_list_priority"); } + if (extensions.Contains("gl_SGIX_pixel_texture")) { SGIX_pixel_texture = true; extensions.Remove("glSGIX_pixel_texture"); } + if (extensions.Contains("gl_SGIX_pixel_tiles")) { SGIX_pixel_tiles = true; extensions.Remove("glSGIX_pixel_tiles"); } + if (extensions.Contains("gl_SGIX_polynomial_ffd")) { SGIX_polynomial_ffd = true; extensions.Remove("glSGIX_polynomial_ffd"); } + if (extensions.Contains("gl_SGIX_reference_plane")) { SGIX_reference_plane = true; extensions.Remove("glSGIX_reference_plane"); } + if (extensions.Contains("gl_SGIX_resample")) { SGIX_resample = true; extensions.Remove("glSGIX_resample"); } + if (extensions.Contains("gl_SGIX_scalebias_hint")) { SGIX_scalebias_hint = true; extensions.Remove("glSGIX_scalebias_hint"); } + if (extensions.Contains("gl_SGIX_shadow")) { SGIX_shadow = true; extensions.Remove("glSGIX_shadow"); } + if (extensions.Contains("gl_SGIX_shadow_ambient")) { SGIX_shadow_ambient = true; extensions.Remove("glSGIX_shadow_ambient"); } + if (extensions.Contains("gl_SGIX_sprite")) { SGIX_sprite = true; extensions.Remove("glSGIX_sprite"); } + if (extensions.Contains("gl_SGIX_subsample")) { SGIX_subsample = true; extensions.Remove("glSGIX_subsample"); } + if (extensions.Contains("gl_SGIX_tag_sample_buffer")) { SGIX_tag_sample_buffer = true; extensions.Remove("glSGIX_tag_sample_buffer"); } + if (extensions.Contains("gl_SGIX_texture_add_env")) { SGIX_texture_add_env = true; extensions.Remove("glSGIX_texture_add_env"); } + if (extensions.Contains("gl_SGIX_texture_coordinate_clamp")) { SGIX_texture_coordinate_clamp = true; extensions.Remove("glSGIX_texture_coordinate_clamp"); } + if (extensions.Contains("gl_SGIX_texture_lod_bias")) { SGIX_texture_lod_bias = true; extensions.Remove("glSGIX_texture_lod_bias"); } + if (extensions.Contains("gl_SGIX_texture_multi_buffer")) { SGIX_texture_multi_buffer = true; extensions.Remove("glSGIX_texture_multi_buffer"); } + if (extensions.Contains("gl_SGIX_texture_scale_bias")) { SGIX_texture_scale_bias = true; extensions.Remove("glSGIX_texture_scale_bias"); } + if (extensions.Contains("gl_SGIX_vertex_preclip")) { SGIX_vertex_preclip = true; extensions.Remove("glSGIX_vertex_preclip"); } + if (extensions.Contains("gl_SGIX_ycrcb")) { SGIX_ycrcb = true; extensions.Remove("glSGIX_ycrcb"); } + if (extensions.Contains("gl_SGIX_ycrcb_subsample")) { SGIX_ycrcb_subsample = true; extensions.Remove("glSGIX_ycrcb_subsample"); } + if (extensions.Contains("gl_SGIX_ycrcba")) { SGIX_ycrcba = true; extensions.Remove("glSGIX_ycrcba"); } + if (extensions.Contains("gl_SGI_color_matrix")) { SGI_color_matrix = true; extensions.Remove("glSGI_color_matrix"); } + if (extensions.Contains("gl_SGI_color_table")) { SGI_color_table = true; extensions.Remove("glSGI_color_table"); } + if (extensions.Contains("gl_SGI_texture_color_table")) { SGI_texture_color_table = true; extensions.Remove("glSGI_texture_color_table"); } + if (extensions.Contains("gl_SUNX_constant_data")) { SUNX_constant_data = true; extensions.Remove("glSUNX_constant_data"); } + if (extensions.Contains("gl_SUN_convolution_border_modes")) { SUN_convolution_border_modes = true; extensions.Remove("glSUN_convolution_border_modes"); } + if (extensions.Contains("gl_SUN_global_alpha")) { SUN_global_alpha = true; extensions.Remove("glSUN_global_alpha"); } + if (extensions.Contains("gl_SUN_mesh_array")) { SUN_mesh_array = true; extensions.Remove("glSUN_mesh_array"); } + if (extensions.Contains("gl_SUN_slice_accum")) { SUN_slice_accum = true; extensions.Remove("glSUN_slice_accum"); } + if (extensions.Contains("gl_SUN_triangle_list")) { SUN_triangle_list = true; extensions.Remove("glSUN_triangle_list"); } + if (extensions.Contains("gl_SUN_vertex")) { SUN_vertex = true; extensions.Remove("glSUN_vertex"); } + if (extensions.Contains("gl_WIN_phong_shading")) { WIN_phong_shading = true; extensions.Remove("glWIN_phong_shading"); } + if (extensions.Contains("gl_WIN_specular_fog")) { WIN_specular_fog = true; extensions.Remove("glWIN_specular_fog"); } + + #endregion checkGLextensions + + InternalIO.InternalWriteLog("Find OpenGL extensions.", LogType.Info); + } + + /// + /// Get the function pointer of given OpenGL api name + /// + /// ContextName of the OpenGL api + /// The funtion pointer of the api in stream of + public static IntPtr LoadGLfunc(string name) + { + IntPtr ret = InternalIO.glfwGetProcAddress(name); + if (ret == default) + { + InternalIO.InternalAppendLog( + $"Cannot load OpenGL api called {name}, this api may not exist or supported."); + return ret; + } + return ret; + } + + 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 string GetExtensions(this GLcontext context) + { + if (context.glGetString == null) + { + return string.Empty; + } + return Marshal.PtrToStringAnsi( + context.glGetString(glExtension)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static T internalLoadAPI(IntPtr ptr) where T : Delegate + { + try + { + if (ptr == IntPtr.Zero) { return null; } + T func = Marshal.GetDelegateForFunctionPointer(ptr); + return func; + } + catch (Exception ex) + { + InternalIO.InternalWriteLog( + $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", LogType.Warning); + return default; + } + } + + internal static unsafe void LoadGLcore10(GLcontext* contextPtr, delegate* load) + { + if (!core10) + { + InternalIO.InternalAppendLog("The core version 1.0 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBlendFunc = (delegate*)load("glBlendFunc"); + contextPtr->glClear = (delegate*)load("glClear"); + contextPtr->glClearColor = (delegate*)load("glClearColor"); + contextPtr->glClearDepth = (delegate*)load("glClearDepth"); + contextPtr->glClearStencil = (delegate*)load("glClearStencil"); + contextPtr->glColorMask = (delegate*)load("glColorMask"); + contextPtr->glCullFace = (delegate*)load("glCullFace"); + contextPtr->glDepthFunc = (delegate*)load("glDepthFunc"); + contextPtr->glDepthMask = (delegate*)load("glDepthMask"); + contextPtr->glDepthRange = (delegate*)load("glDepthRange"); + contextPtr->glDisable = (delegate*)load("glDisable"); + contextPtr->glDrawBuffer = (delegate*)load("glDrawBuffer"); + contextPtr->glEnable = (delegate*)load("glEnable"); + contextPtr->glFinish = (delegate*)load("glFinish"); + contextPtr->glFlush = (delegate*)load("glFlush"); + contextPtr->glFrontFace = (delegate*)load("glFrontFace"); + contextPtr->glGetBooleanv = (delegate*)load("glGetBooleanv"); + contextPtr->glGetDoublev = (delegate*)load("glGetDoublev"); + contextPtr->glGetError = (delegate*)load("glGetError"); + contextPtr->glGetFloatv = (delegate*)load("glGetFloatv"); + contextPtr->glGetIntegerv = (delegate*)load("glGetIntegerv"); + contextPtr->glGetString = (delegate*)load("glGetString"); + contextPtr->glGetTexImage = (delegate*)load("glGetTexImage"); + contextPtr->glGetTexLevelParameterfv = (delegate*)load("glGetTexLevelParameterfv"); + contextPtr->glGetTexLevelParameteriv = (delegate*)load("glGetTexLevelParameteriv"); + contextPtr->glGetTexParameterfv = (delegate*)load("glGetTexParameterfv"); + contextPtr->glGetTexParameteriv = (delegate*)load("glGetTexParameteriv"); + contextPtr->glHint = (delegate*)load("glHint"); + contextPtr->glIsEnabled = (delegate*)load("glIsEnabled"); + contextPtr->glLineWidth = (delegate*)load("glLineWidth"); + contextPtr->glLogicOp = (delegate*)load("glLogicOp"); + contextPtr->glPixelStoref = (delegate*)load("glPixelStoref"); + contextPtr->glPixelStorei = (delegate*)load("glPixelStorei"); + contextPtr->glPointSize = (delegate*)load("glPointSize"); + contextPtr->glPolygonMode = (delegate*)load("glPolygonMode"); + contextPtr->glReadBuffer = (delegate*)load("glReadBuffer"); + contextPtr->glReadPixels = (delegate*)load("glReadPixels"); + contextPtr->glScissor = (delegate*)load("glScissor"); + contextPtr->glStencilFunc = (delegate*)load("glStencilFunc"); + contextPtr->glStencilMask = (delegate*)load("glStencilMask"); + contextPtr->glStencilOp = (delegate*)load("glStencilOp"); + contextPtr->glTexImage1D = (delegate*)load("glTexImage1D"); + contextPtr->glTexImage2D = (delegate*)load("glTexImage2D"); + contextPtr->glTexParameterf = (delegate*)load("glTexParameterf"); + contextPtr->glTexParameterfv = (delegate*)load("glTexParameterfv"); + contextPtr->glTexParameteri = (delegate*)load("glTexParameteri"); + contextPtr->glTexParameteriv = (delegate*)load("glTexParameteriv"); + contextPtr->glViewport = (delegate*)load("glViewport"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 1.0 APIs"); + } + + internal static unsafe void LoadGLcore11(GLcontext* contextPtr, delegate* load) + { + if (!core11) + { + InternalIO.InternalAppendLog("The core version 1.1 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindTexture = (delegate*)load("glBindTexture"); + contextPtr->glCopyTexImage1D = (delegate*)load("glCopyTexImage1D"); + contextPtr->glCopyTexImage2D = (delegate*)load("glCopyTexImage2D"); + contextPtr->glCopyTexSubImage1D = (delegate*)load("glCopyTexSubImage1D"); + contextPtr->glCopyTexSubImage2D = (delegate*)load("glCopyTexSubImage2D"); + contextPtr->glDeleteTextures = (delegate*)load("glDeleteTextures"); + contextPtr->glDrawArrays = (delegate*)load("glDrawArrays"); + contextPtr->glDrawElements = (delegate*)load("glDrawElements"); + contextPtr->glGenTextures = (delegate*)load("glGenTextures"); + contextPtr->glGetPointerv = (delegate*)load("glGetPointerv"); + contextPtr->glIsTexture = (delegate*)load("glIsTexture"); + contextPtr->glPolygonOffset = (delegate*)load("glPolygonOffset"); + contextPtr->glTexSubImage1D = (delegate*)load("glTexSubImage1D"); + contextPtr->glTexSubImage2D = (delegate*)load("glTexSubImage2D"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 1.1 APIs"); + } + + internal static unsafe void LoadGLcore12(GLcontext* contextPtr, delegate* load) + { + if (!core12) + { + InternalIO.InternalAppendLog("The core version 1.2 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glCopyTexSubImage3D = (delegate*)load("glCopyTexSubImage3D"); + contextPtr->glDrawRangeElements = (delegate*)load("glDrawRangeElements"); + contextPtr->glTexImage3D = (delegate*)load("glTexImage3D"); + contextPtr->glTexSubImage3D = (delegate*)load("glTexSubImage3D"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 1.2 APIs"); + } + + internal static unsafe void LoadGLcore13(GLcontext* contextPtr, delegate* load) + { + if (!core13) + { + InternalIO.InternalAppendLog("The core version 1.3 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glActiveTexture = (delegate*)load("glActiveTexture"); + contextPtr->glCompressedTexImage1D = (delegate*)load("glCompressedTexImage1D"); + contextPtr->glCompressedTexImage2D = (delegate*)load("glCompressedTexImage2D"); + contextPtr->glCompressedTexImage3D = (delegate*)load("glCompressedTexImage3D"); + contextPtr->glCompressedTexSubImage1D = (delegate*)load("glCompressedTexSubImage1D"); + contextPtr->glCompressedTexSubImage2D = (delegate*)load("glCompressedTexSubImage2D"); + contextPtr->glCompressedTexSubImage3D = (delegate*)load("glCompressedTexSubImage3D"); + contextPtr->glGetCompressedTexImage = (delegate*)load("glGetCompressedTexImage"); + contextPtr->glSampleCoverage = (delegate*)load("glSampleCoverage"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 1.3 APIs"); + } + + internal static unsafe void LoadGLcore14(GLcontext* contextPtr, delegate* load) + { + if (!core14) + { + InternalIO.InternalAppendLog("The core version 1.4 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBlendColor = (delegate*)load("glBlendColor"); + contextPtr->glBlendEquation = (delegate*)load("glBlendEquation"); + contextPtr->glBlendFuncSeparate = (delegate*)load("glBlendFuncSeparate"); + contextPtr->glMultiDrawArrays = (delegate*)load("glMultiDrawArrays"); + contextPtr->glMultiDrawElements = (delegate*)load("glMultiDrawElements"); + contextPtr->glPointParameterf = (delegate*)load("glPointParameterf"); + contextPtr->glPointParameterfv = (delegate*)load("glPointParameterfv"); + contextPtr->glPointParameteri = (delegate*)load("glPointParameteri"); + contextPtr->glPointParameteriv = (delegate*)load("glPointParameteriv"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 1.4 APIs"); + } + + internal static unsafe void LoadGLcore15(GLcontext* contextPtr, delegate* load) + { + if (!core15) + { + InternalIO.InternalAppendLog("The core version 1.5 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBeginQuery = (delegate*)load("glBeginQuery"); + contextPtr->glBindBuffer = (delegate*)load("glBindBuffer"); + contextPtr->glBufferData = (delegate*)load("glBufferData"); + contextPtr->glBufferSubData = (delegate*)load("glBufferSubData"); + contextPtr->glDeleteBuffers = (delegate*)load("glDeleteBuffers"); + contextPtr->glDeleteQueries = (delegate*)load("glDeleteQueries"); + contextPtr->glEndQuery = (delegate*)load("glEndQuery"); + contextPtr->glGenBuffers = (delegate*)load("glGenBuffers"); + contextPtr->glGenQueries = (delegate*)load("glGenQueries"); + contextPtr->glGetBufferParameteriv = (delegate*)load("glGetBufferParameteriv"); + contextPtr->glGetBufferPointerv = (delegate*)load("glGetBufferPointerv"); + contextPtr->glGetBufferSubData = (delegate*)load("glGetBufferSubData"); + contextPtr->glGetQueryObjectiv = (delegate*)load("glGetQueryObjectiv"); + contextPtr->glGetQueryObjectuiv = (delegate*)load("glGetQueryObjectuiv"); + contextPtr->glGetQueryiv = (delegate*)load("glGetQueryiv"); + contextPtr->glIsBuffer = (delegate*)load("glIsBuffer"); + contextPtr->glIsQuery = (delegate*)load("glIsQuery"); + contextPtr->glMapBuffer = (delegate*)load("glMapBuffer"); + contextPtr->glUnmapBuffer = (delegate*)load("glUnmapBuffer"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 1.5 APIs"); + } + + internal static unsafe void LoadGLcore20(GLcontext* contextPtr, delegate* load) + { + if (!core20) + { + InternalIO.InternalAppendLog("The core version 2.0 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glAttachShader = (delegate*)load("glAttachShader"); + contextPtr->glBindAttribLocation = (delegate*)load("glBindAttribLocation"); + contextPtr->glBlendEquationSeparate = (delegate*)load("glBlendEquationSeparate"); + contextPtr->glCompileShader = (delegate*)load("glCompileShader"); + contextPtr->glCreateProgram = (delegate*)load("glCreateProgram"); + contextPtr->glCreateShader = (delegate*)load("glCreateShader"); + contextPtr->glDeleteProgram = (delegate*)load("glDeleteProgram"); + contextPtr->glDeleteShader = (delegate*)load("glDeleteShader"); + contextPtr->glDetachShader = (delegate*)load("glDetachShader"); + contextPtr->glDisableVertexAttribArray = (delegate*)load("glDisableVertexAttribArray"); + contextPtr->glDrawBuffers = (delegate*)load("glDrawBuffers"); + contextPtr->glEnableVertexAttribArray = (delegate*)load("glEnableVertexAttribArray"); + contextPtr->glGetActiveAttrib = (delegate*)load("glGetActiveAttrib"); + contextPtr->glGetActiveUniform = (delegate*)load("glGetActiveUniform"); + contextPtr->glGetAttachedShaders = (delegate*)load("glGetAttachedShaders"); + contextPtr->glGetAttribLocation = (delegate*)load("glGetAttribLocation"); + contextPtr->glGetProgramInfoLog = (delegate*)load("glGetProgramInfoLog"); + contextPtr->glGetProgramiv = (delegate*)load("glGetProgramiv"); + contextPtr->glGetShaderInfoLog = (delegate*)load("glGetShaderInfoLog"); + contextPtr->glGetShaderSource = (delegate*)load("glGetShaderSource"); + contextPtr->glGetShaderiv = (delegate*)load("glGetShaderiv"); + contextPtr->glGetUniformLocation = (delegate*)load("glGetUniformLocation"); + contextPtr->glGetUniformfv = (delegate*)load("glGetUniformfv"); + contextPtr->glGetUniformiv = (delegate*)load("glGetUniformiv"); + contextPtr->glGetVertexAttribPointerv = (delegate*)load("glGetVertexAttribPointerv"); + contextPtr->glGetVertexAttribdv = (delegate*)load("glGetVertexAttribdv"); + contextPtr->glGetVertexAttribfv = (delegate*)load("glGetVertexAttribfv"); + contextPtr->glGetVertexAttribiv = (delegate*)load("glGetVertexAttribiv"); + contextPtr->glIsProgram = (delegate*)load("glIsProgram"); + contextPtr->glIsShader = (delegate*)load("glIsShader"); + contextPtr->glLinkProgram = (delegate*)load("glLinkProgram"); + contextPtr->glShaderSource = (delegate* unmanaged[Stdcall])load("glShaderSource"); + contextPtr->glStencilFuncSeparate = (delegate*)load("glStencilFuncSeparate"); + contextPtr->glStencilMaskSeparate = (delegate*)load("glStencilMaskSeparate"); + contextPtr->glStencilOpSeparate = (delegate*)load("glStencilOpSeparate"); + contextPtr->glUniform1f = (delegate*)load("glUniform1f"); + contextPtr->glUniform1fv = (delegate*)load("glUniform1fv"); + contextPtr->glUniform1i = (delegate*)load("glUniform1i"); + contextPtr->glUniform1iv = (delegate*)load("glUniform1iv"); + contextPtr->glUniform2f = (delegate*)load("glUniform2f"); + contextPtr->glUniform2fv = (delegate*)load("glUniform2fv"); + contextPtr->glUniform2i = (delegate*)load("glUniform2i"); + contextPtr->glUniform2iv = (delegate*)load("glUniform2iv"); + contextPtr->glUniform3f = (delegate*)load("glUniform3f"); + contextPtr->glUniform3fv = (delegate*)load("glUniform3fv"); + contextPtr->glUniform3i = (delegate*)load("glUniform3i"); + contextPtr->glUniform3iv = (delegate*)load("glUniform3iv"); + contextPtr->glUniform4f = (delegate*)load("glUniform4f"); + contextPtr->glUniform4fv = (delegate*)load("glUniform4fv"); + contextPtr->glUniform4i = (delegate*)load("glUniform4i"); + contextPtr->glUniform4iv = (delegate*)load("glUniform4iv"); + contextPtr->glUniformMatrix2fv = (delegate*)load("glUniformMatrix2fv"); + contextPtr->glUniformMatrix3fv = (delegate*)load("glUniformMatrix3fv"); + contextPtr->glUniformMatrix4fv = (delegate*)load("glUniformMatrix4fv"); + contextPtr->glUseProgram = (delegate*)load("glUseProgram"); + contextPtr->glValidateProgram = (delegate*)load("glValidateProgram"); + contextPtr->glVertexAttrib1d = (delegate*)load("glVertexAttrib1d"); + contextPtr->glVertexAttrib1dv = (delegate*)load("glVertexAttrib1dv"); + contextPtr->glVertexAttrib1f = (delegate*)load("glVertexAttrib1f"); + contextPtr->glVertexAttrib1fv = (delegate*)load("glVertexAttrib1fv"); + contextPtr->glVertexAttrib1s = (delegate*)load("glVertexAttrib1s"); + contextPtr->glVertexAttrib1sv = (delegate*)load("glVertexAttrib1sv"); + contextPtr->glVertexAttrib2d = (delegate*)load("glVertexAttrib2d"); + contextPtr->glVertexAttrib2dv = (delegate*)load("glVertexAttrib2dv"); + contextPtr->glVertexAttrib2f = (delegate*)load("glVertexAttrib2f"); + contextPtr->glVertexAttrib2fv = (delegate*)load("glVertexAttrib2fv"); + contextPtr->glVertexAttrib2s = (delegate*)load("glVertexAttrib2s"); + contextPtr->glVertexAttrib2sv = (delegate*)load("glVertexAttrib2sv"); + contextPtr->glVertexAttrib3d = (delegate*)load("glVertexAttrib3d"); + contextPtr->glVertexAttrib3dv = (delegate*)load("glVertexAttrib3dv"); + contextPtr->glVertexAttrib3f = (delegate*)load("glVertexAttrib3f"); + contextPtr->glVertexAttrib3fv = (delegate*)load("glVertexAttrib3fv"); + contextPtr->glVertexAttrib3s = (delegate*)load("glVertexAttrib3s"); + contextPtr->glVertexAttrib3sv = (delegate*)load("glVertexAttrib3sv"); + contextPtr->glVertexAttrib4Nbv = (delegate*)load("glVertexAttrib4Nbv"); + contextPtr->glVertexAttrib4Niv = (delegate*)load("glVertexAttrib4Niv"); + contextPtr->glVertexAttrib4Nsv = (delegate*)load("glVertexAttrib4Nsv"); + contextPtr->glVertexAttrib4Nub = (delegate*)load("glVertexAttrib4Nub"); + contextPtr->glVertexAttrib4Nubv = (delegate*)load("glVertexAttrib4Nubv"); + contextPtr->glVertexAttrib4Nuiv = (delegate*)load("glVertexAttrib4Nuiv"); + contextPtr->glVertexAttrib4Nusv = (delegate*)load("glVertexAttrib4Nusv"); + contextPtr->glVertexAttrib4bv = (delegate*)load("glVertexAttrib4bv"); + contextPtr->glVertexAttrib4d = (delegate*)load("glVertexAttrib4d"); + contextPtr->glVertexAttrib4dv = (delegate*)load("glVertexAttrib4dv"); + contextPtr->glVertexAttrib4f = (delegate*)load("glVertexAttrib4f"); + contextPtr->glVertexAttrib4fv = (delegate*)load("glVertexAttrib4fv"); + contextPtr->glVertexAttrib4iv = (delegate*)load("glVertexAttrib4iv"); + contextPtr->glVertexAttrib4s = (delegate*)load("glVertexAttrib4s"); + contextPtr->glVertexAttrib4sv = (delegate*)load("glVertexAttrib4sv"); + contextPtr->glVertexAttrib4ubv = (delegate*)load("glVertexAttrib4ubv"); + contextPtr->glVertexAttrib4uiv = (delegate*)load("glVertexAttrib4uiv"); + contextPtr->glVertexAttrib4usv = (delegate*)load("glVertexAttrib4usv"); + contextPtr->glVertexAttribPointer = (delegate*)load("glVertexAttribPointer"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 2.0 APIs"); + } + + internal static unsafe void LoadGLcore21(GLcontext* contextPtr, delegate* load) + { + if (!core21) + { + InternalIO.InternalAppendLog("The core version 2.1 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glUniformMatrix2x3fv = (delegate*)load("glUniformMatrix2x3fv"); + contextPtr->glUniformMatrix2x4fv = (delegate*)load("glUniformMatrix2x4fv"); + contextPtr->glUniformMatrix3x2fv = (delegate*)load("glUniformMatrix3x2fv"); + contextPtr->glUniformMatrix3x4fv = (delegate*)load("glUniformMatrix3x4fv"); + contextPtr->glUniformMatrix4x2fv = (delegate*)load("glUniformMatrix4x2fv"); + contextPtr->glUniformMatrix4x3fv = (delegate*)load("glUniformMatrix4x3fv"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 2.1 APIs"); + } + + internal static unsafe void LoadGLcore30(GLcontext* contextPtr, delegate* load) + { + if (!core30) + { + InternalIO.InternalAppendLog("The core version 3.0 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBeginConditionalRender = (delegate*)load("glBeginConditionalRender"); + contextPtr->glBeginTransformFeedback = (delegate*)load("glBeginTransformFeedback"); + contextPtr->glBindBufferBase = (delegate*)load("glBindBufferBase"); + contextPtr->glBindBufferRange = (delegate*)load("glBindBufferRange"); + contextPtr->glBindFragDataLocation = (delegate*)load("glBindFragDataLocation"); + contextPtr->glBindFramebuffer = (delegate*)load("glBindFramebuffer"); + contextPtr->glBindRenderbuffer = (delegate*)load("glBindRenderbuffer"); + contextPtr->glBindVertexArray = (delegate*)load("glBindVertexArray"); + contextPtr->glBlitFramebuffer = (delegate*)load("glBlitFramebuffer"); + contextPtr->glCheckFramebufferStatus = (delegate*)load("glCheckFramebufferStatus"); + contextPtr->glClampColor = (delegate*)load("glClampColor"); + contextPtr->glClearBufferfi = (delegate*)load("glClearBufferfi"); + contextPtr->glClearBufferfv = (delegate*)load("glClearBufferfv"); + contextPtr->glClearBufferiv = (delegate*)load("glClearBufferiv"); + contextPtr->glClearBufferuiv = (delegate*)load("glClearBufferuiv"); + contextPtr->glColorMaski = (delegate*)load("glColorMaski"); + contextPtr->glDeleteFramebuffers = (delegate*)load("glDeleteFramebuffers"); + contextPtr->glDeleteRenderbuffers = (delegate*)load("glDeleteRenderbuffers"); + contextPtr->glDeleteVertexArrays = (delegate*)load("glDeleteVertexArrays"); + contextPtr->glDisablei = (delegate*)load("glDisablei"); + contextPtr->glEnablei = (delegate*)load("glEnablei"); + contextPtr->glEndConditionalRender = (delegate*)load("glEndConditionalRender"); + contextPtr->glEndTransformFeedback = (delegate*)load("glEndTransformFeedback"); + contextPtr->glFlushMappedBufferRange = (delegate*)load("glFlushMappedBufferRange"); + contextPtr->glFramebufferRenderbuffer = (delegate*)load("glFramebufferRenderbuffer"); + contextPtr->glFramebufferTexture1D = (delegate*)load("glFramebufferTexture1D"); + contextPtr->glFramebufferTexture2D = (delegate*)load("glFramebufferTexture2D"); + contextPtr->glFramebufferTexture3D = (delegate*)load("glFramebufferTexture3D"); + contextPtr->glFramebufferTextureLayer = (delegate*)load("glFramebufferTextureLayer"); + contextPtr->glGenFramebuffers = (delegate*)load("glGenFramebuffers"); + contextPtr->glGenRenderbuffers = (delegate*)load("glGenRenderbuffers"); + contextPtr->glGenVertexArrays = (delegate*)load("glGenVertexArrays"); + contextPtr->glGenerateMipmap = (delegate*)load("glGenerateMipmap"); + contextPtr->glGetBooleani_v = (delegate*)load("glGetBooleani_v"); + contextPtr->glGetFragDataLocation = (delegate*)load("glGetFragDataLocation"); + contextPtr->glGetFramebufferAttachmentParameteriv = (delegate*)load("glGetFramebufferAttachmentParameteriv"); + contextPtr->glGetIntegeri_v = (delegate*)load("glGetIntegeri_v"); + contextPtr->glGetRenderbufferParameteriv = (delegate*)load("glGetRenderbufferParameteriv"); + contextPtr->glGetStringi = (delegate*)load("glGetStringi"); + contextPtr->glGetTexParameterIiv = (delegate*)load("glGetTexParameterIiv"); + contextPtr->glGetTexParameterIuiv = (delegate*)load("glGetTexParameterIuiv"); + contextPtr->glGetTransformFeedbackVarying = (delegate*)load("glGetTransformFeedbackVarying"); + contextPtr->glGetUniformuiv = (delegate*)load("glGetUniformuiv"); + contextPtr->glGetVertexAttribIiv = (delegate*)load("glGetVertexAttribIiv"); + contextPtr->glGetVertexAttribIuiv = (delegate*)load("glGetVertexAttribIuiv"); + contextPtr->glIsEnabledi = (delegate*)load("glIsEnabledi"); + contextPtr->glIsFramebuffer = (delegate*)load("glIsFramebuffer"); + contextPtr->glIsRenderbuffer = (delegate*)load("glIsRenderbuffer"); + contextPtr->glIsVertexArray = (delegate*)load("glIsVertexArray"); + contextPtr->glMapBufferRange = (delegate*)load("glMapBufferRange"); + contextPtr->glRenderbufferStorage = (delegate*)load("glRenderbufferStorage"); + contextPtr->glRenderbufferStorageMultisample = (delegate*)load("glRenderbufferStorageMultisample"); + contextPtr->glTexParameterIiv = (delegate*)load("glTexParameterIiv"); + contextPtr->glTexParameterIuiv = (delegate*)load("glTexParameterIuiv"); + contextPtr->glTransformFeedbackVaryings = (delegate*)load("glTransformFeedbackVaryings"); + contextPtr->glUniform1ui = (delegate*)load("glUniform1ui"); + contextPtr->glUniform1uiv = (delegate*)load("glUniform1uiv"); + contextPtr->glUniform2ui = (delegate*)load("glUniform2ui"); + contextPtr->glUniform2uiv = (delegate*)load("glUniform2uiv"); + contextPtr->glUniform3ui = (delegate*)load("glUniform3ui"); + contextPtr->glUniform3uiv = (delegate*)load("glUniform3uiv"); + contextPtr->glUniform4ui = (delegate*)load("glUniform4ui"); + contextPtr->glUniform4uiv = (delegate*)load("glUniform4uiv"); + contextPtr->glVertexAttribI1i = (delegate*)load("glVertexAttribI1i"); + contextPtr->glVertexAttribI1iv = (delegate*)load("glVertexAttribI1iv"); + contextPtr->glVertexAttribI1ui = (delegate*)load("glVertexAttribI1ui"); + contextPtr->glVertexAttribI1uiv = (delegate*)load("glVertexAttribI1uiv"); + contextPtr->glVertexAttribI2i = (delegate*)load("glVertexAttribI2i"); + contextPtr->glVertexAttribI2iv = (delegate*)load("glVertexAttribI2iv"); + contextPtr->glVertexAttribI2ui = (delegate*)load("glVertexAttribI2ui"); + contextPtr->glVertexAttribI2uiv = (delegate*)load("glVertexAttribI2uiv"); + contextPtr->glVertexAttribI3i = (delegate*)load("glVertexAttribI3i"); + contextPtr->glVertexAttribI3iv = (delegate*)load("glVertexAttribI3iv"); + contextPtr->glVertexAttribI3ui = (delegate*)load("glVertexAttribI3ui"); + contextPtr->glVertexAttribI3uiv = (delegate*)load("glVertexAttribI3uiv"); + contextPtr->glVertexAttribI4bv = (delegate*)load("glVertexAttribI4bv"); + contextPtr->glVertexAttribI4i = (delegate*)load("glVertexAttribI4i"); + contextPtr->glVertexAttribI4iv = (delegate*)load("glVertexAttribI4iv"); + contextPtr->glVertexAttribI4sv = (delegate*)load("glVertexAttribI4sv"); + contextPtr->glVertexAttribI4ubv = (delegate*)load("glVertexAttribI4ubv"); + contextPtr->glVertexAttribI4ui = (delegate*)load("glVertexAttribI4ui"); + contextPtr->glVertexAttribI4uiv = (delegate*)load("glVertexAttribI4uiv"); + contextPtr->glVertexAttribI4usv = (delegate*)load("glVertexAttribI4usv"); + contextPtr->glVertexAttribIPointer = (delegate*)load("glVertexAttribIPointer"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 3.0 APIs"); + } + + internal static unsafe void LoadGLcore31(GLcontext* contextPtr, delegate* load) + { + if (!core31) + { + InternalIO.InternalAppendLog("The core version 3.1 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindBufferBase = (delegate*)load("glBindBufferBase"); + contextPtr->glBindBufferRange = (delegate*)load("glBindBufferRange"); + contextPtr->glCopyBufferSubData = (delegate*)load("glCopyBufferSubData"); + contextPtr->glDrawArraysInstanced = (delegate*)load("glDrawArraysInstanced"); + contextPtr->glDrawElementsInstanced = (delegate*)load("glDrawElementsInstanced"); + contextPtr->glGetActiveUniformBlockName = (delegate*)load("glGetActiveUniformBlockName"); + contextPtr->glGetActiveUniformBlockiv = (delegate*)load("glGetActiveUniformBlockiv"); + contextPtr->glGetActiveUniformName = (delegate*)load("glGetActiveUniformName"); + contextPtr->glGetActiveUniformsiv = (delegate*)load("glGetActiveUniformsiv"); + contextPtr->glGetIntegeri_v = (delegate*)load("glGetIntegeri_v"); + contextPtr->glGetUniformBlockIndex = (delegate*)load("glGetUniformBlockIndex"); + contextPtr->glGetUniformIndices = (delegate*)load("glGetUniformIndices"); + contextPtr->glPrimitiveRestartIndex = (delegate*)load("glPrimitiveRestartIndex"); + contextPtr->glTexBuffer = (delegate*)load("glTexBuffer"); + contextPtr->glUniformBlockBinding = (delegate*)load("glUniformBlockBinding"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 3.1 APIs"); + } + + internal static unsafe void LoadGLcore32(GLcontext* contextPtr, delegate* load) + { + if (!core32) + { + InternalIO.InternalAppendLog("The core version 3.2 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glClientWaitSync = (delegate*)load("glClientWaitSync"); + contextPtr->glDeleteSync = (delegate*)load("glDeleteSync"); + contextPtr->glDrawElementsBaseVertex = (delegate*)load("glDrawElementsBaseVertex"); + contextPtr->glDrawElementsInstancedBaseVertex = (delegate*)load("glDrawElementsInstancedBaseVertex"); + contextPtr->glDrawRangeElementsBaseVertex = (delegate*)load("glDrawRangeElementsBaseVertex"); + contextPtr->glFenceSync = (delegate*)load("glFenceSync"); + contextPtr->glFramebufferTexture = (delegate*)load("glFramebufferTexture"); + contextPtr->glGetBufferParameteri64v = (delegate*)load("glGetBufferParameteri64v"); + contextPtr->glGetInteger64i_v = (delegate*)load("glGetInteger64i_v"); + contextPtr->glGetInteger64v = (delegate*)load("glGetInteger64v"); + contextPtr->glGetMultisamplefv = (delegate*)load("glGetMultisamplefv"); + contextPtr->glGetSynciv = (delegate*)load("glGetSynciv"); + contextPtr->glIsSync = (delegate*)load("glIsSync"); + contextPtr->glMultiDrawElementsBaseVertex = (delegate*)load("glMultiDrawElementsBaseVertex"); + contextPtr->glProvokingVertex = (delegate*)load("glProvokingVertex"); + contextPtr->glSampleMaski = (delegate*)load("glSampleMaski"); + contextPtr->glTexImage2DMultisample = (delegate*)load("glTexImage2DMultisample"); + contextPtr->glTexImage3DMultisample = (delegate*)load("glTexImage3DMultisample"); + contextPtr->glWaitSync = (delegate*)load("glWaitSync"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 3.2 APIs"); + } + + internal static unsafe void LoadGLcore33(GLcontext* contextPtr, delegate* load) + { + if (!core33) + { + InternalIO.InternalAppendLog("The core version 3.3 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindFragDataLocationIndexed = (delegate*)load("glBindFragDataLocationIndexed"); + contextPtr->glBindSampler = (delegate*)load("glBindSampler"); + contextPtr->glDeleteSamplers = (delegate*)load("glDeleteSamplers"); + contextPtr->glGenSamplers = (delegate*)load("glGenSamplers"); + contextPtr->glGetFragDataIndex = (delegate*)load("glGetFragDataIndex"); + contextPtr->glGetQueryObjecti64v = (delegate*)load("glGetQueryObjecti64v"); + contextPtr->glGetQueryObjectui64v = (delegate*)load("glGetQueryObjectui64v"); + contextPtr->glGetSamplerParameterIiv = (delegate*)load("glGetSamplerParameterIiv"); + contextPtr->glGetSamplerParameterIuiv = (delegate*)load("glGetSamplerParameterIuiv"); + contextPtr->glGetSamplerParameterfv = (delegate*)load("glGetSamplerParameterfv"); + contextPtr->glGetSamplerParameteriv = (delegate*)load("glGetSamplerParameteriv"); + contextPtr->glIsSampler = (delegate*)load("glIsSampler"); + contextPtr->glQueryCounter = (delegate*)load("glQueryCounter"); + contextPtr->glSamplerParameterIiv = (delegate*)load("glSamplerParameterIiv"); + contextPtr->glSamplerParameterIuiv = (delegate*)load("glSamplerParameterIuiv"); + contextPtr->glSamplerParameterf = (delegate*)load("glSamplerParameterf"); + contextPtr->glSamplerParameterfv = (delegate*)load("glSamplerParameterfv"); + contextPtr->glSamplerParameteri = (delegate*)load("glSamplerParameteri"); + contextPtr->glSamplerParameteriv = (delegate*)load("glSamplerParameteriv"); + contextPtr->glVertexAttribDivisor = (delegate*)load("glVertexAttribDivisor"); + contextPtr->glVertexAttribP1ui = (delegate*)load("glVertexAttribP1ui"); + contextPtr->glVertexAttribP1uiv = (delegate*)load("glVertexAttribP1uiv"); + contextPtr->glVertexAttribP2ui = (delegate*)load("glVertexAttribP2ui"); + contextPtr->glVertexAttribP2uiv = (delegate*)load("glVertexAttribP2uiv"); + contextPtr->glVertexAttribP3ui = (delegate*)load("glVertexAttribP3ui"); + contextPtr->glVertexAttribP3uiv = (delegate*)load("glVertexAttribP3uiv"); + contextPtr->glVertexAttribP4ui = (delegate*)load("glVertexAttribP4ui"); + contextPtr->glVertexAttribP4uiv = (delegate*)load("glVertexAttribP4uiv"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 3.3 APIs"); + } + + internal static unsafe void LoadGLcore40(GLcontext* contextPtr, delegate* load) + { + if (!core40) + { + InternalIO.InternalAppendLog("The core version 4.0 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBeginQueryIndexed = (delegate*)load("glBeginQueryIndexed"); + contextPtr->glBindTransformFeedback = (delegate*)load("glBindTransformFeedback"); + contextPtr->glBlendEquationSeparatei = (delegate*)load("glBlendEquationSeparatei"); + contextPtr->glBlendEquationi = (delegate*)load("glBlendEquationi"); + contextPtr->glBlendFuncSeparatei = (delegate*)load("glBlendFuncSeparatei"); + contextPtr->glBlendFunci = (delegate*)load("glBlendFunci"); + contextPtr->glDeleteTransformFeedbacks = (delegate*)load("glDeleteTransformFeedbacks"); + contextPtr->glDrawArraysIndirect = (delegate*)load("glDrawArraysIndirect"); + contextPtr->glDrawElementsIndirect = (delegate*)load("glDrawElementsIndirect"); + contextPtr->glDrawTransformFeedback = (delegate*)load("glDrawTransformFeedback"); + contextPtr->glDrawTransformFeedbackStream = (delegate*)load("glDrawTransformFeedbackStream"); + contextPtr->glEndQueryIndexed = (delegate*)load("glEndQueryIndexed"); + contextPtr->glGenTransformFeedbacks = (delegate*)load("glGenTransformFeedbacks"); + contextPtr->glGetActiveSubroutineName = (delegate*)load("glGetActiveSubroutineName"); + contextPtr->glGetActiveSubroutineUniformName = (delegate*)load("glGetActiveSubroutineUniformName"); + contextPtr->glGetActiveSubroutineUniformiv = (delegate*)load("glGetActiveSubroutineUniformiv"); + contextPtr->glGetProgramStageiv = (delegate*)load("glGetProgramStageiv"); + contextPtr->glGetQueryIndexediv = (delegate*)load("glGetQueryIndexediv"); + contextPtr->glGetSubroutineIndex = (delegate*)load("glGetSubroutineIndex"); + contextPtr->glGetSubroutineUniformLocation = (delegate*)load("glGetSubroutineUniformLocation"); + contextPtr->glGetUniformSubroutineuiv = (delegate*)load("glGetUniformSubroutineuiv"); + contextPtr->glGetUniformdv = (delegate*)load("glGetUniformdv"); + contextPtr->glIsTransformFeedback = (delegate*)load("glIsTransformFeedback"); + contextPtr->glMinSampleShading = (delegate*)load("glMinSampleShading"); + contextPtr->glPatchParameterfv = (delegate*)load("glPatchParameterfv"); + contextPtr->glPatchParameteri = (delegate*)load("glPatchParameteri"); + contextPtr->glPauseTransformFeedback = (delegate*)load("glPauseTransformFeedback"); + contextPtr->glResumeTransformFeedback = (delegate*)load("glResumeTransformFeedback"); + contextPtr->glUniform1d = (delegate*)load("glUniform1d"); + contextPtr->glUniform1dv = (delegate*)load("glUniform1dv"); + contextPtr->glUniform2d = (delegate*)load("glUniform2d"); + contextPtr->glUniform2dv = (delegate*)load("glUniform2dv"); + contextPtr->glUniform3d = (delegate*)load("glUniform3d"); + contextPtr->glUniform3dv = (delegate*)load("glUniform3dv"); + contextPtr->glUniform4d = (delegate*)load("glUniform4d"); + contextPtr->glUniform4dv = (delegate*)load("glUniform4dv"); + contextPtr->glUniformMatrix2dv = (delegate*)load("glUniformMatrix2dv"); + contextPtr->glUniformMatrix2x3dv = (delegate*)load("glUniformMatrix2x3dv"); + contextPtr->glUniformMatrix2x4dv = (delegate*)load("glUniformMatrix2x4dv"); + contextPtr->glUniformMatrix3dv = (delegate*)load("glUniformMatrix3dv"); + contextPtr->glUniformMatrix3x2dv = (delegate*)load("glUniformMatrix3x2dv"); + contextPtr->glUniformMatrix3x4dv = (delegate*)load("glUniformMatrix3x4dv"); + contextPtr->glUniformMatrix4dv = (delegate*)load("glUniformMatrix4dv"); + contextPtr->glUniformMatrix4x2dv = (delegate*)load("glUniformMatrix4x2dv"); + contextPtr->glUniformMatrix4x3dv = (delegate*)load("glUniformMatrix4x3dv"); + contextPtr->glUniformSubroutinesuiv = (delegate*)load("glUniformSubroutinesuiv"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.0 APIs"); + } + + internal static unsafe void LoadGLcore41(GLcontext* contextPtr, delegate* load) + { + if (!core41) + { + InternalIO.InternalAppendLog("The core version 4.1 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glActiveShaderProgram = (delegate*)load("glActiveShaderProgram"); + contextPtr->glBindProgramPipeline = (delegate*)load("glBindProgramPipeline"); + contextPtr->glClearDepthf = (delegate*)load("glClearDepthf"); + contextPtr->glCreateShaderProgramv = (delegate*)load("glCreateShaderProgramv"); + contextPtr->glDeleteProgramPipelines = (delegate*)load("glDeleteProgramPipelines"); + contextPtr->glDepthRangeArrayv = (delegate*)load("glDepthRangeArrayv"); + contextPtr->glDepthRangeIndexed = (delegate*)load("glDepthRangeIndexed"); + contextPtr->glDepthRangef = (delegate*)load("glDepthRangef"); + contextPtr->glGenProgramPipelines = (delegate*)load("glGenProgramPipelines"); + contextPtr->glGetDoublei_v = (delegate*)load("glGetDoublei_v"); + contextPtr->glGetFloati_v = (delegate*)load("glGetFloati_v"); + contextPtr->glGetProgramBinary = (delegate*)load("glGetProgramBinary"); + contextPtr->glGetProgramPipelineInfoLog = (delegate*)load("glGetProgramPipelineInfoLog"); + contextPtr->glGetProgramPipelineiv = (delegate*)load("glGetProgramPipelineiv"); + contextPtr->glGetShaderPrecisionFormat = (delegate*)load("glGetShaderPrecisionFormat"); + contextPtr->glGetVertexAttribLdv = (delegate*)load("glGetVertexAttribLdv"); + contextPtr->glIsProgramPipeline = (delegate*)load("glIsProgramPipeline"); + contextPtr->glProgramBinary = (delegate*)load("glProgramBinary"); + contextPtr->glProgramParameteri = (delegate*)load("glProgramParameteri"); + contextPtr->glProgramUniform1d = (delegate*)load("glProgramUniform1d"); + contextPtr->glProgramUniform1dv = (delegate*)load("glProgramUniform1dv"); + contextPtr->glProgramUniform1f = (delegate*)load("glProgramUniform1f"); + contextPtr->glProgramUniform1fv = (delegate*)load("glProgramUniform1fv"); + contextPtr->glProgramUniform1i = (delegate*)load("glProgramUniform1i"); + contextPtr->glProgramUniform1iv = (delegate*)load("glProgramUniform1iv"); + contextPtr->glProgramUniform1ui = (delegate*)load("glProgramUniform1ui"); + contextPtr->glProgramUniform1uiv = (delegate*)load("glProgramUniform1uiv"); + contextPtr->glProgramUniform2d = (delegate*)load("glProgramUniform2d"); + contextPtr->glProgramUniform2dv = (delegate*)load("glProgramUniform2dv"); + contextPtr->glProgramUniform2f = (delegate*)load("glProgramUniform2f"); + contextPtr->glProgramUniform2fv = (delegate*)load("glProgramUniform2fv"); + contextPtr->glProgramUniform2i = (delegate*)load("glProgramUniform2i"); + contextPtr->glProgramUniform2iv = (delegate*)load("glProgramUniform2iv"); + contextPtr->glProgramUniform2ui = (delegate*)load("glProgramUniform2ui"); + contextPtr->glProgramUniform2uiv = (delegate*)load("glProgramUniform2uiv"); + contextPtr->glProgramUniform3d = (delegate*)load("glProgramUniform3d"); + contextPtr->glProgramUniform3dv = (delegate*)load("glProgramUniform3dv"); + contextPtr->glProgramUniform3f = (delegate*)load("glProgramUniform3f"); + contextPtr->glProgramUniform3fv = (delegate*)load("glProgramUniform3fv"); + contextPtr->glProgramUniform3i = (delegate*)load("glProgramUniform3i"); + contextPtr->glProgramUniform3iv = (delegate*)load("glProgramUniform3iv"); + contextPtr->glProgramUniform3ui = (delegate*)load("glProgramUniform3ui"); + contextPtr->glProgramUniform3uiv = (delegate*)load("glProgramUniform3uiv"); + contextPtr->glProgramUniform4d = (delegate*)load("glProgramUniform4d"); + contextPtr->glProgramUniform4dv = (delegate*)load("glProgramUniform4dv"); + contextPtr->glProgramUniform4f = (delegate*)load("glProgramUniform4f"); + contextPtr->glProgramUniform4fv = (delegate*)load("glProgramUniform4fv"); + contextPtr->glProgramUniform4i = (delegate*)load("glProgramUniform4i"); + contextPtr->glProgramUniform4iv = (delegate*)load("glProgramUniform4iv"); + contextPtr->glProgramUniform4ui = (delegate*)load("glProgramUniform4ui"); + contextPtr->glProgramUniform4uiv = (delegate*)load("glProgramUniform4uiv"); + contextPtr->glProgramUniformMatrix2dv = (delegate*)load("glProgramUniformMatrix2dv"); + contextPtr->glProgramUniformMatrix2fv = (delegate*)load("glProgramUniformMatrix2fv"); + contextPtr->glProgramUniformMatrix2x3dv = (delegate*)load("glProgramUniformMatrix2x3dv"); + contextPtr->glProgramUniformMatrix2x3fv = (delegate*)load("glProgramUniformMatrix2x3fv"); + contextPtr->glProgramUniformMatrix2x4dv = (delegate*)load("glProgramUniformMatrix2x4dv"); + contextPtr->glProgramUniformMatrix2x4fv = (delegate*)load("glProgramUniformMatrix2x4fv"); + contextPtr->glProgramUniformMatrix3dv = (delegate*)load("glProgramUniformMatrix3dv"); + contextPtr->glProgramUniformMatrix3fv = (delegate*)load("glProgramUniformMatrix3fv"); + contextPtr->glProgramUniformMatrix3x2dv = (delegate*)load("glProgramUniformMatrix3x2dv"); + contextPtr->glProgramUniformMatrix3x2fv = (delegate*)load("glProgramUniformMatrix3x2fv"); + contextPtr->glProgramUniformMatrix3x4dv = (delegate*)load("glProgramUniformMatrix3x4dv"); + contextPtr->glProgramUniformMatrix3x4fv = (delegate*)load("glProgramUniformMatrix3x4fv"); + contextPtr->glProgramUniformMatrix4dv = (delegate*)load("glProgramUniformMatrix4dv"); + contextPtr->glProgramUniformMatrix4fv = (delegate*)load("glProgramUniformMatrix4fv"); + contextPtr->glProgramUniformMatrix4x2dv = (delegate*)load("glProgramUniformMatrix4x2dv"); + contextPtr->glProgramUniformMatrix4x2fv = (delegate*)load("glProgramUniformMatrix4x2fv"); + contextPtr->glProgramUniformMatrix4x3dv = (delegate*)load("glProgramUniformMatrix4x3dv"); + contextPtr->glProgramUniformMatrix4x3fv = (delegate*)load("glProgramUniformMatrix4x3fv"); + contextPtr->glReleaseShaderCompiler = (delegate*)load("glReleaseShaderCompiler"); + contextPtr->glScissorArrayv = (delegate*)load("glScissorArrayv"); + contextPtr->glScissorIndexed = (delegate*)load("glScissorIndexed"); + contextPtr->glScissorIndexedv = (delegate*)load("glScissorIndexedv"); + contextPtr->glShaderBinary = (delegate*)load("glShaderBinary"); + contextPtr->glUseProgramStages = (delegate*)load("glUseProgramStages"); + contextPtr->glValidateProgramPipeline = (delegate*)load("glValidateProgramPipeline"); + contextPtr->glVertexAttribL1d = (delegate*)load("glVertexAttribL1d"); + contextPtr->glVertexAttribL1dv = (delegate*)load("glVertexAttribL1dv"); + contextPtr->glVertexAttribL2d = (delegate*)load("glVertexAttribL2d"); + contextPtr->glVertexAttribL2dv = (delegate*)load("glVertexAttribL2dv"); + contextPtr->glVertexAttribL3d = (delegate*)load("glVertexAttribL3d"); + contextPtr->glVertexAttribL3dv = (delegate*)load("glVertexAttribL3dv"); + contextPtr->glVertexAttribL4d = (delegate*)load("glVertexAttribL4d"); + contextPtr->glVertexAttribL4dv = (delegate*)load("glVertexAttribL4dv"); + contextPtr->glVertexAttribLPointer = (delegate*)load("glVertexAttribLPointer"); + contextPtr->glViewportArrayv = (delegate*)load("glViewportArrayv"); + contextPtr->glViewportIndexedf = (delegate*)load("glViewportIndexedf"); + contextPtr->glViewportIndexedfv = (delegate*)load("glViewportIndexedfv"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.1 APIs"); + } + + internal static unsafe void LoadGLcore42(GLcontext* contextPtr, delegate* load) + { + if (!core42) + { + InternalIO.InternalAppendLog("The core version 4.2 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindImageTexture = (delegate*)load("glBindImageTexture"); + contextPtr->glDrawArraysInstancedBaseInstance = (delegate*)load("glDrawArraysInstancedBaseInstance"); + contextPtr->glDrawElementsInstancedBaseInstance = (delegate*)load("glDrawElementsInstancedBaseInstance"); + contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = (delegate*)load("glDrawElementsInstancedBaseVertexBaseInstance"); + contextPtr->glDrawTransformFeedbackInstanced = (delegate*)load("glDrawTransformFeedbackInstanced"); + contextPtr->glDrawTransformFeedbackStreamInstanced = (delegate*)load("glDrawTransformFeedbackStreamInstanced"); + contextPtr->glGetActiveAtomicCounterBufferiv = (delegate*)load("glGetActiveAtomicCounterBufferiv"); + contextPtr->glGetInternalformativ = (delegate*)load("glGetInternalformativ"); + contextPtr->glMemoryBarrier = (delegate*)load("glMemoryBarrier"); + contextPtr->glTexStorage1D = (delegate*)load("glTexStorage1D"); + contextPtr->glTexStorage2D = (delegate*)load("glTexStorage2D"); + contextPtr->glTexStorage3D = (delegate*)load("glTexStorage3D"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.2 APIs"); + } + + internal static unsafe void LoadGLcore43(GLcontext* contextPtr, delegate* load) + { + if (!core43) + { + InternalIO.InternalAppendLog("The core version 4.3 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindVertexBuffer = (delegate*)load("glBindVertexBuffer"); + contextPtr->glClearBufferData = (delegate*)load("glClearBufferData"); + contextPtr->glClearBufferSubData = (delegate*)load("glClearBufferSubData"); + contextPtr->glCopyImageSubData = (delegate*)load("glCopyImageSubData"); + contextPtr->glDebugMessageCallback = (delegate*)load("glDebugMessageCallback"); + contextPtr->glDebugMessageControl = (delegate*)load("glDebugMessageControl"); + contextPtr->glDebugMessageInsert = (delegate*)load("glDebugMessageInsert"); + contextPtr->glDispatchCompute = (delegate*)load("glDispatchCompute"); + contextPtr->glDispatchComputeIndirect = (delegate*)load("glDispatchComputeIndirect"); + contextPtr->glFramebufferParameteri = (delegate*)load("glFramebufferParameteri"); + contextPtr->glGetDebugMessageLog = (delegate*)load("glGetDebugMessageLog"); + contextPtr->glGetFramebufferParameteriv = (delegate*)load("glGetFramebufferParameteriv"); + contextPtr->glGetInternalformati64v = (delegate*)load("glGetInternalformati64v"); + contextPtr->glGetObjectLabel = (delegate*)load("glGetObjectLabel"); + contextPtr->glGetObjectPtrLabel = (delegate*)load("glGetObjectPtrLabel"); + contextPtr->glGetPointerv = (delegate*)load("glGetPointerv"); + contextPtr->glGetProgramInterfaceiv = (delegate*)load("glGetProgramInterfaceiv"); + contextPtr->glGetProgramResourceIndex = (delegate*)load("glGetProgramResourceIndex"); + contextPtr->glGetProgramResourceLocation = (delegate*)load("glGetProgramResourceLocation"); + contextPtr->glGetProgramResourceLocationIndex = (delegate*)load("glGetProgramResourceLocationIndex"); + contextPtr->glGetProgramResourceName = (delegate*)load("glGetProgramResourceName"); + contextPtr->glGetProgramResourceiv = (delegate*)load("glGetProgramResourceiv"); + contextPtr->glInvalidateBufferData = (delegate*)load("glInvalidateBufferData"); + contextPtr->glInvalidateBufferSubData = (delegate*)load("glInvalidateBufferSubData"); + contextPtr->glInvalidateFramebuffer = (delegate*)load("glInvalidateFramebuffer"); + contextPtr->glInvalidateSubFramebuffer = (delegate*)load("glInvalidateSubFramebuffer"); + contextPtr->glInvalidateTexImage = (delegate*)load("glInvalidateTexImage"); + contextPtr->glInvalidateTexSubImage = (delegate*)load("glInvalidateTexSubImage"); + contextPtr->glMultiDrawArraysIndirect = (delegate*)load("glMultiDrawArraysIndirect"); + contextPtr->glMultiDrawElementsIndirect = (delegate*)load("glMultiDrawElementsIndirect"); + contextPtr->glObjectLabel = (delegate*)load("glObjectLabel"); + contextPtr->glObjectPtrLabel = (delegate*)load("glObjectPtrLabel"); + contextPtr->glPopDebugGroup = (delegate*)load("glPopDebugGroup"); + contextPtr->glPushDebugGroup = (delegate*)load("glPushDebugGroup"); + contextPtr->glShaderStorageBlockBinding = (delegate*)load("glShaderStorageBlockBinding"); + contextPtr->glTexBufferRange = (delegate*)load("glTexBufferRange"); + contextPtr->glTexStorage2DMultisample = (delegate*)load("glTexStorage2DMultisample"); + contextPtr->glTexStorage3DMultisample = (delegate*)load("glTexStorage3DMultisample"); + contextPtr->glTextureView = (delegate*)load("glTextureView"); + contextPtr->glVertexAttribBinding = (delegate*)load("glVertexAttribBinding"); + contextPtr->glVertexAttribFormat = (delegate*)load("glVertexAttribFormat"); + contextPtr->glVertexAttribIFormat = (delegate*)load("glVertexAttribIFormat"); + contextPtr->glClearBufferData = (delegate*)load("glClearBufferData"); + contextPtr->glVertexBindingDivisor = (delegate*)load("glVertexBindingDivisor"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.3 APIs"); + } + + internal static unsafe void LoadGLcore44(GLcontext* contextPtr, delegate* load) + { + if (!core44) + { + InternalIO.InternalAppendLog("The core version 4.4 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindBuffersBase = (delegate*)load("glBindBuffersBase"); + contextPtr->glBindBuffersRange = (delegate*)load("glBindBuffersRange"); + contextPtr->glBindImageTextures = (delegate*)load("glBindImageTextures"); + contextPtr->glBindSamplers = (delegate*)load("glBindSamplers"); + contextPtr->glBindTextures = (delegate*)load("glBindTextures"); + contextPtr->glBindVertexBuffers = (delegate*)load("glBindVertexBuffers"); + contextPtr->glBufferStorage = (delegate*)load("glBufferStorage"); + contextPtr->glClearTexImage = (delegate*)load("glClearTexImage"); + contextPtr->glClearTexSubImage = (delegate*)load("glClearTexSubImage"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.4 APIs"); + } + + internal static unsafe void LoadGLcore45(GLcontext* contextPtr, delegate* load) + { + if (!core45) + { + InternalIO.InternalAppendLog("The core version 4.5 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glBindTextureUnit = (delegate*)load("glBindTextureUnit"); + contextPtr->glBlitNamedFramebuffer = (delegate*)load("glBlitNamedFramebuffer"); + contextPtr->glCheckNamedFramebufferStatus = (delegate*)load("glCheckNamedFramebufferStatus"); + contextPtr->glClearNamedBufferData = (delegate*)load("glClearNamedBufferData"); + contextPtr->glClearNamedBufferSubData = (delegate*)load("glClearNamedBufferSubData"); + contextPtr->glClearNamedFramebufferfi = (delegate*)load("glClearNamedFramebufferfi"); + contextPtr->glClearNamedFramebufferfv = (delegate*)load("glClearNamedFramebufferfv"); + contextPtr->glClearNamedFramebufferiv = (delegate*)load("glClearNamedFramebufferiv"); + contextPtr->glClearNamedFramebufferuiv = (delegate*)load("glClearNamedFramebufferuiv"); + contextPtr->glClipControl = (delegate*)load("glClipControl"); + contextPtr->glCompressedTextureSubImage1D = (delegate*)load("glCompressedTextureSubImage1D"); + contextPtr->glCompressedTextureSubImage2D = (delegate*)load("glCompressedTextureSubImage2D"); + contextPtr->glCompressedTextureSubImage3D = (delegate*)load("glCompressedTextureSubImage3D"); + contextPtr->glCopyNamedBufferSubData = (delegate*)load("glCopyNamedBufferSubData"); + contextPtr->glCopyTextureSubImage1D = (delegate*)load("glCopyTextureSubImage1D"); + contextPtr->glCopyTextureSubImage2D = (delegate*)load("glCopyTextureSubImage2D"); + contextPtr->glCopyTextureSubImage3D = (delegate*)load("glCopyTextureSubImage3D"); + contextPtr->glCreateBuffers = (delegate*)load("glCreateBuffers"); + contextPtr->glCreateFramebuffers = (delegate*)load("glCreateFramebuffers"); + contextPtr->glCreateProgramPipelines = (delegate*)load("glCreateProgramPipelines"); + contextPtr->glCreateQueries = (delegate*)load("glCreateQueries"); + contextPtr->glCreateRenderbuffers = (delegate*)load("glCreateRenderbuffers"); + contextPtr->glCreateSamplers = (delegate*)load("glCreateSamplers"); + contextPtr->glCreateTextures = (delegate*)load("glCreateTextures"); + contextPtr->glCreateTransformFeedbacks = (delegate*)load("glCreateTransformFeedbacks"); + contextPtr->glCreateVertexArrays = (delegate*)load("glCreateVertexArrays"); + contextPtr->glDisableVertexArrayAttrib = (delegate*)load("glDisableVertexArrayAttrib"); + contextPtr->glEnableVertexArrayAttrib = (delegate*)load("glEnableVertexArrayAttrib"); + contextPtr->glFlushMappedNamedBufferRange = (delegate*)load("glFlushMappedNamedBufferRange"); + contextPtr->glGenerateTextureMipmap = (delegate*)load("glGenerateTextureMipmap"); + contextPtr->glGetCompressedTextureImage = (delegate*)load("glGetCompressedTextureImage"); + contextPtr->glGetCompressedTextureSubImage = (delegate*)load("glGetCompressedTextureSubImage"); + contextPtr->glGetGraphicsResetStatus = (delegate*)load("glGetGraphicsResetStatus"); + contextPtr->glGetNamedBufferParameteri64v = (delegate*)load("glGetNamedBufferParameteri64v"); + contextPtr->glGetNamedBufferParameteriv = (delegate*)load("glGetNamedBufferParameteriv"); + contextPtr->glGetNamedBufferPointerv = (delegate*)load("glGetNamedBufferPointerv"); + contextPtr->glGetNamedBufferSubData = (delegate*)load("glGetNamedBufferSubData"); + contextPtr->glGetNamedFramebufferAttachmentParameteriv = (delegate*)load("glGetNamedFramebufferAttachmentParameteriv"); + contextPtr->glGetNamedFramebufferParameteriv = (delegate*)load("glGetNamedFramebufferParameteriv"); + contextPtr->glGetNamedRenderbufferParameteriv = (delegate*)load("glGetNamedRenderbufferParameteriv"); + contextPtr->glGetQueryBufferObjecti64v = (delegate*)load("glGetQueryBufferObjecti64v"); + contextPtr->glGetQueryBufferObjectiv = (delegate*)load("glGetQueryBufferObjectiv"); + contextPtr->glGetQueryBufferObjectui64v = (delegate*)load("glGetQueryBufferObjectui64v"); + contextPtr->glGetQueryBufferObjectuiv = (delegate*)load("glGetQueryBufferObjectuiv"); + contextPtr->glGetTextureImage = (delegate*)load("glGetTextureImage"); + contextPtr->glGetTextureLevelParameterfv = (delegate*)load("glGetTextureLevelParameterfv"); + contextPtr->glGetTextureLevelParameteriv = (delegate*)load("glGetTextureLevelParameteriv"); + contextPtr->glGetTextureParameterIiv = (delegate*)load("glGetTextureParameterIiv"); + contextPtr->glGetTextureParameterIuiv = (delegate*)load("glGetTextureParameterIuiv"); + contextPtr->glGetTextureParameterfv = (delegate*)load("glGetTextureParameterfv"); + contextPtr->glGetTextureParameteriv = (delegate*)load("glGetTextureParameteriv"); + contextPtr->glGetTextureSubImage = (delegate*)load("glGetTextureSubImage"); + contextPtr->glGetTransformFeedbacki64_v = (delegate*)load("glGetTransformFeedbacki64_v"); + contextPtr->glGetTransformFeedbacki_v = (delegate*)load("glGetTransformFeedbacki_v"); + contextPtr->glGetTransformFeedbackiv = (delegate*)load("glGetTransformFeedbackiv"); + contextPtr->glGetVertexArrayIndexed64iv = (delegate*)load("glGetVertexArrayIndexed64iv"); + contextPtr->glGetVertexArrayIndexediv = (delegate*)load("glGetVertexArrayIndexediv"); + contextPtr->glGetVertexArrayiv = (delegate*)load("glGetVertexArrayiv"); + contextPtr->glGetnCompressedTexImage = (delegate*)load("glGetnCompressedTexImage"); + contextPtr->glGetnTexImage = (delegate*)load("glGetnTexImage"); + contextPtr->glGetnUniformdv = (delegate*)load("glGetnUniformdv"); + contextPtr->glGetnUniformfv = (delegate*)load("glGetnUniformfv"); + contextPtr->glGetnUniformiv = (delegate*)load("glGetnUniformiv"); + contextPtr->glGetnUniformuiv = (delegate*)load("glGetnUniformuiv"); + contextPtr->glInvalidateNamedFramebufferData = (delegate*)load("glInvalidateNamedFramebufferData"); + contextPtr->glInvalidateNamedFramebufferSubData = (delegate*)load("glInvalidateNamedFramebufferSubData"); + contextPtr->glMapNamedBuffer = (delegate*)load("glMapNamedBuffer"); + contextPtr->glMapNamedBufferRange = (delegate*)load("glMapNamedBufferRange"); + contextPtr->glMemoryBarrierByRegion = (delegate*)load("glMemoryBarrierByRegion"); + contextPtr->glNamedBufferData = (delegate*)load("glNamedBufferData"); + contextPtr->glNamedBufferStorage = (delegate*)load("glNamedBufferStorage"); + contextPtr->glNamedBufferSubData = (delegate*)load("glNamedBufferSubData"); + contextPtr->glNamedFramebufferDrawBuffer = (delegate*)load("glNamedFramebufferDrawBuffer"); + contextPtr->glNamedFramebufferDrawBuffers = (delegate*)load("glNamedFramebufferDrawBuffers"); + contextPtr->glNamedFramebufferParameteri = (delegate*)load("glNamedFramebufferParameteri"); + contextPtr->glNamedFramebufferReadBuffer = (delegate*)load("glNamedFramebufferReadBuffer"); + contextPtr->glNamedFramebufferRenderbuffer = (delegate*)load("glNamedFramebufferRenderbuffer"); + contextPtr->glNamedFramebufferTexture = (delegate*)load("glNamedFramebufferTexture"); + contextPtr->glNamedFramebufferTextureLayer = (delegate*)load("glNamedFramebufferTextureLayer"); + contextPtr->glNamedRenderbufferStorage = (delegate*)load("glNamedRenderbufferStorage"); + contextPtr->glNamedRenderbufferStorageMultisample = (delegate*)load("glNamedRenderbufferStorageMultisample"); + contextPtr->glReadnPixels = (delegate*)load("glReadnPixels"); + contextPtr->glTextureBarrier = (delegate*)load("glTextureBarrier"); + contextPtr->glTextureBuffer = (delegate*)load("glTextureBuffer"); + contextPtr->glTextureBufferRange = (delegate*)load("glTextureBufferRange"); + contextPtr->glTextureParameterIiv = (delegate*)load("glTextureParameterIiv"); + contextPtr->glTextureParameterIuiv = (delegate*)load("glTextureParameterIuiv"); + contextPtr->glTextureParameterf = (delegate*)load("glTextureParameterf"); + contextPtr->glTextureParameterfv = (delegate*)load("glTextureParameterfv"); + contextPtr->glTextureParameteri = (delegate*)load("glTextureParameteri"); + contextPtr->glTextureParameteriv = (delegate*)load("glTextureParameteriv"); + contextPtr->glTextureStorage1D = (delegate*)load("glTextureStorage1D"); + contextPtr->glTextureStorage2D = (delegate*)load("glTextureStorage2D"); + contextPtr->glTextureStorage2DMultisample = (delegate*)load("glTextureStorage2DMultisample"); + contextPtr->glTextureStorage3D = (delegate*)load("glTextureStorage3D"); + contextPtr->glTextureStorage3DMultisample = (delegate*)load("glTextureStorage3DMultisample"); + contextPtr->glTextureSubImage1D = (delegate*)load("glTextureSubImage1D"); + contextPtr->glTextureSubImage2D = (delegate*)load("glTextureSubImage2D"); + contextPtr->glTextureSubImage3D = (delegate*)load("glTextureSubImage3D"); + contextPtr->glTransformFeedbackBufferBase = (delegate*)load("glTransformFeedbackBufferBase"); + contextPtr->glTransformFeedbackBufferRange = (delegate*)load("glTransformFeedbackBufferRange"); + contextPtr->glUnmapNamedBuffer = (delegate*)load("glUnmapNamedBuffer"); + contextPtr->glVertexArrayAttribBinding = (delegate*)load("glVertexArrayAttribBinding"); + contextPtr->glVertexArrayAttribFormat = (delegate*)load("glVertexArrayAttribFormat"); + contextPtr->glVertexArrayAttribIFormat = (delegate*)load("glVertexArrayAttribIFormat"); + contextPtr->glVertexArrayAttribLFormat = (delegate*)load("glVertexArrayAttribLFormat"); + contextPtr->glVertexArrayBindingDivisor = (delegate*)load("glVertexArrayBindingDivisor"); + contextPtr->glVertexArrayElementBuffer = (delegate*)load("glVertexArrayElementBuffer"); + contextPtr->glVertexArrayVertexBuffer = (delegate*)load("glVertexArrayVertexBuffer"); + contextPtr->glVertexArrayVertexBuffers = (delegate*)load("glVertexArrayVertexBuffers"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.5 APIs"); + } + + internal static unsafe void LoadGLcore46(GLcontext* contextPtr, delegate* load) + { + if (!core46) + { + InternalIO.InternalAppendLog("The core version 4.6 is not supported."); + throw new Exception("Final Version"); + } + + #region load + + contextPtr->glMultiDrawArraysIndirectCount = (delegate*)load("glMultiDrawArraysIndirectCount"); + contextPtr->glMultiDrawElementsIndirectCount = (delegate*)load("glMultiDrawElementsIndirectCount"); + contextPtr->glPolygonOffsetClamp = (delegate*)load("glPolygonOffsetClamp"); + contextPtr->glSpecializeShader = (delegate*)load("glSpecializeShader"); + + #endregion load + + InternalIO.InternalAppendLog("Successfully load all OpenGL 4.6 APIs"); + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs b/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs new file mode 100644 index 00000000..40ca87ef --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs @@ -0,0 +1,689 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glApiManagerConst.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class glManager + { + #region coreVersion + + private static bool core10 = false; + private static bool core11 = false; + private static bool core12 = false; + private static bool core13 = false; + private static bool core14 = false; + private static bool core15 = false; + private static bool core20 = false; + private static bool core21 = false; + private static bool core30 = false; + private static bool core31 = false; + private static bool core32 = false; + private static bool core33 = false; + private static bool core40 = false; + private static bool core41 = false; + private static bool core42 = false; + private static bool core43 = false; + private static bool core44 = false; + private static bool core45 = false; + private static bool core46 = false; + + #endregion + + #region extension + + private static bool _3DFX_tbuffer; + private static bool _3DFX_texture_compression_FXT1; + private static bool _4DFX_multisample; + 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_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_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_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_shader_fp64; + private static bool ARB_gpu_shader_int64; + private static bool ARB_gpu_shader5; + 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_texture_clamp; + private static bool ARB_sparse_texture2; + 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_feedback_instanced; + private static bool ARB_transform_feedback_overflow_query; + private static bool ARB_transform_feedback2; + private static bool ARB_transform_feedback3; + 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_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_EGL_image_storage; + private static bool EXT_EGL_sync; + 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_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_shadow_lod; + private static bool EXT_texture_shared_exponent; + private static bool EXT_texture_snorm; + private static bool EXT_texture_sRGB; + private static bool EXT_texture_sRGB_decode; + private static bool EXT_texture_sRGB_R8; + private static bool EXT_texture_sRGB_RG8; + private static bool EXT_texture_storage; + private static bool EXT_texture_swizzle; + private static bool EXT_texture3D; + 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 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 MESAX_texture_stack; + 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_program_option; + private static bool NV_fragment_program2; + private static bool NV_fragment_program4; + 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_shader_passthrough; + private static bool NV_geometry_shader4; + 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 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 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 SGI_color_matrix; + private static bool SGI_color_table; + private static bool SGI_texture_color_table; + 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_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 SGIS_texture4D; + 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 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 SUNX_constant_data; + private static bool WIN_phong_shading; + private static bool WIN_specular_fog; + + + #endregion + + } +} diff --git a/源代码/StgSharp/Graphics/OpenGL/glFunction.cs b/源代码/StgSharp/Graphics/OpenGL/glFunction.cs new file mode 100644 index 00000000..c7a2188b --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glFunction.cs @@ -0,0 +1,723 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glFunction.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics; +using StgSharp.Logic; +using StgSharp.Math; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp +{ + internal static unsafe partial class InternalIO + { + + [DllImport(SSC_libName, EntryPoint = "glCheckShaderStat", + CallingConvention = CallingConvention.Cdecl)] +#pragma warning disable CA5392 + internal static extern int glCheckShaderStatus(ref GLcontext context, uint shaderHandle, int key, ref IntPtr logPtr); +#pragma warning restore CA5392 + + + } +} +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class GlFunction + { + + private static Dictionary contextToGLMap = new Dictionary(); + private GLcontext* _context; + + private GlFunction() + { + } + + internal static GlFunction CurrentGL { get; set; } + + internal IntPtr ContextHandle => (IntPtr)_context; + + protected ref GLcontext Context + { + get + { +#if DEBUG + if ((IntPtr)_context == IntPtr.Zero) + { + throw new NullReferenceException(); + } +#endif + return ref (*_context); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ActiveTexture(uint type) + { + Context.glActiveTexture(type); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void AttachShader(GlHandle program, GlHandle shader) + { + Context.glAttachShader(program.Value, shader.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindBuffer(BufferType bufferType, GlHandle handle) + { + Context.glBindBuffer((uint)bufferType, handle.Value); + } + + /// + /// Bind a frame buffer to a frame buffer target + /// Same function as glBindFramebuffer. + /// + /// The frame buffer target of the binding operation. + /// The handle of the frame buffer object to bind. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindFrameBuffer(FrameBufferTarget target, GlHandle handle) + { + Context.glBindFramebuffer((uint)target, handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindRenderBuffer(GlHandle handle) + { + Context.glBindRenderbuffer(GLconst.RENDERBUFFER, handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindTexture(uint type, GlHandle texture) + { + Context.glBindTexture(type, texture.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void BindVertexArray(GlHandle handle) + { + Context.glBindVertexArray(handle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public FrameBufferStatus CheckFrameBufferStatus(FrameBufferTarget target) + { + return (FrameBufferStatus)Context.glCheckFramebufferStatus((uint)target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Clear(MaskBufferBit mask) + { + Context.glClear((uint)mask); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void ClearColor(float R, float G, float B, float A) + { + Context.glClearColor(R, G, B, A); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ClearError() + { + while (Context.glGetError() != 0) { } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void GenerateMipmap(Texture2DTarget target) + { + Context.glGenerateMipmap((uint)target); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void ClearGraphicError() + { + while (Context.glGetError() != 0) { } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CombineFrameBufferRenderBuffer(GlHandle fboHandle, GlHandle rboHandle) + { + Context.glFramebufferRenderbuffer(GLconst.FRAMEBUFFER, fboHandle.Value, GLconst.RENDERBUFFER, rboHandle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void CompileShader(GlHandle shaderhandle) + { + Context.glCompileShader(shaderhandle.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle CreateGraphicProgram() + { + return GlHandle.Alloc(Context.glCreateProgram()); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle CreateProgram() + { + return GlHandle.Alloc(Context.glCreateProgram()); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] CreateProgram(int count) + { + GlHandle[] h = new GlHandle[count]; + for (int i = 0; i < count; i++) + { + h.SetValue(i, Context.glCreateProgram()); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public GlHandle[] CreateShaderSet(int count, ShaderType type) + { + GlHandle[] ret = new GlHandle[count]; + uint t = (uint)type; + for (int i = 0; i < count; i++) + { + uint id = Context.glCreateShader(t); + if (id == 0) + { + uint error = Context.glGetError(); + throw new InvalidOperationException($"Failed in creating shader: {error}"); + } + ret[i] = GlHandle.Alloc(id); + } + return ret; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DeleteBuffer(GlHandle handle) + { + Context.glDeleteBuffers(1, (uint*)&handle); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DeleteBuffers(GlHandle[] handle) + { + if ((handle == null) || (handle.Length == 0)) + { + throw new ArgumentNullException(nameof(handle)); + } + fixed (GlHandle* hptr = handle) + { + uint* iptr = (uint*)hptr; + for (int i = 0; i < handle.Length; i++) + { + Context.glDeleteBuffers(1, iptr + i); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DeleteVertexArrays(GlHandle[] arrays) + { + fixed (GlHandle* hptr = arrays) + { + uint* iptr = (uint*)hptr; + for (int i = 0; i < arrays.Length; i++) + { + Context.glDeleteVertexArrays(1, iptr + i); + } + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void DrawElements(GeometryType mode, uint count, TypeCode type, IntPtr ptr) + { + uint a; + a = type switch + { + TypeCode.UInt32 => GLconst.UNSIGNED_INT, + TypeCode.UInt16 => GLconst.UNSIGNED_SHORT, + TypeCode.Byte => GLconst.UNSIGNED_BYTE, + _ => throw new ArgumentException( + $"{($"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}")}{($"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}")}") + }; + Context.glDrawElements((uint)mode, count, a, (void*)ptr); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void DrawElementsInstanced( + GeometryType mode, uint count, TypeCode type, IntPtr ptr, uint amount + ) + { + uint a; + switch (type) + { + case TypeCode.UInt32: + a = GLconst.UNSIGNED_INT; + break; + + case TypeCode.UInt16: + a = GLconst.UNSIGNED_SHORT; + break; + + case TypeCode.Byte: + a = GLconst.UNSIGNED_BYTE; + break; + + default: + InternalIO.InternalWriteLog( + $"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}", + LogType.Error); + return; + } + Context.glDrawElementsInstanced((uint)mode, count, a, (void*)ptr, amount); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Enable(GLOperation operation) + { + Context.glEnable((uint)operation); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FrameBufferTexture2d(FrameBufferTarget target, uint attachment, Texture2DTarget texTarget, GlHandle textureHandle, int level) + { + Context.glFramebufferTexture2D( + (uint)target, attachment, (uint)texTarget, textureHandle.Value, level + ); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] GenBuffers(int count) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) + { + for (int i = 0; i < count; i++) + { + Context.glGenBuffers(count, ((uint*)hptr) + i); + } + } + return h; + } + + public unsafe GlHandle[] GenFrameBuffers(int count) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) + { + Context.glGenFramebuffers(1, (uint*)hptr); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] GenRenderBuffer(int count) + { + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) + { + Context.glGenRenderbuffers(count, (uint*)hptr); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle[] GenTextures(int count) + { + + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) + { + Context.glGenTextures(count, (uint*)hptr); + } + return h; + } + + + public unsafe GlHandle[] GenVertexArrays(int count) + { + + GlHandle[] h = new GlHandle[count]; + fixed (GlHandle* hptr = h) + { + Context.glGenVertexArrays(count, (uint*)hptr); + } + return h; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint GetError() + { + return Context.glGetError(); + } + + public unsafe int GetMaskInteger(uint statusCode) + { + int ret = 0; + Context.glGetIntegerv(statusCode, &ret); + return ret; + } + + public string GetShaderStatus(Shader s, int index, int key) + { + IntPtr sptr = IntPtr.Zero; + if (InternalIO.glCheckShaderStatus(ref Context, s.handle[index].Value, key, ref sptr) == 0) + { + return Marshal.PtrToStringAnsi(sptr); + } + return string.Empty; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void GetTextureImage(Texture2DTarget target, int level, ImageChannel channel, PixelChannelLayout channelLayout, T[] dataStream) + where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { +#pragma warning disable CS8500 + fixed (T* tptr = dataStream) + { + Context.glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout, tptr); + } +#pragma warning restore CS8500 + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe GlHandle GetUniformLocation(GlHandle program, string name) + { + byte[] code = Encoding.UTF8.GetBytes(name); + fixed (byte* ptr = code) + { + int ret = Context.glGetUniformLocation(program.Value, ptr); +#if DEBUG + if ((ret == GLconst.INVALID_OPERATION) || + (ret == GLconst.INVALID_VALUE)) + { + throw new InvalidOperationException(); + } + if (ret == -1) + { + throw new UniformEmptyReferenceException(nameof(program), name); + } +#endif + return GlHandle.SignedAlloc(ret); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void LoadShaderSource(GlHandle shaderHandle, byte[] codeStream) + { + fixed (byte* streamPtr = codeStream) + { + Context.glShaderSource(shaderHandle.Value, 1, &streamPtr, (void*)0); + } + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ReadPixels( + (int X, int Y) beginPosition, (int width, int height) size, FrameBufferChannel format, PixelChannelLayout dataType, ref byte[] stream + ) + { + fixed (byte* bptr = stream) + { + Context.glReadPixels( + beginPosition.X, beginPosition.Y, + size.width, size.height, (uint)format, (uint)dataType, bptr); + } + } + + public void RereadImage( + in Image i, (int X, int Y) beginPosition, FrameBufferChannel format, PixelChannelLayout dataType) + { + byte[] pixels = i.PixelBuffer; + if (!pixels.CheckArrayFormat(dataType)) + { + throw new GlArrayFormatException(dataType, "i.PixelArray"); + } + fixed (byte* bptr = pixels) + { + Context.glReadPixels( + beginPosition.X, beginPosition.Y, i.Width, i.Height, (uint)format, (uint)dataType, bptr); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData(BufferType bufferType, T bufferData, BufferUsage usage) + where T : struct + { + int size = Marshal.SizeOf(); +#pragma warning disable CS8500 + T* p = &bufferData; +#pragma warning restore CS8500 + Context.glBufferData( + (uint)bufferType, + (IntPtr)size, + (IntPtr)p, + (uint)usage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData(BufferType bufferType, T[] bufferArray, BufferUsage usage) + where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { + int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); + if (bufferArray == null) + { + return; + } +#pragma warning disable CS8500 + fixed (void* bufferPtr = bufferArray) +#pragma warning restore CS8500 + { + Context.glBufferData( + (uint)bufferType, + (IntPtr)size, + (IntPtr)bufferPtr, + (uint)usage); + } + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData(BufferType bufferType, ReadOnlySpan bufferArray, BufferUsage usage) + where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { + int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); + if (bufferArray == null) + { + return; + } +#pragma warning disable CS8500 + fixed (void* bufferPtr = bufferArray) +#pragma warning restore CS8500 + { + Context.glBufferData( + (uint)bufferType, + (IntPtr)size, + (IntPtr)bufferPtr, + (uint)usage); + } + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferData(BufferType bufferType, Span bufferArray, BufferUsage usage) + where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { + int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); + if (bufferArray == null) + { + return; + } + +#pragma warning disable CS8500 + fixed (void* bufferPtr = &bufferArray.GetPinnableReference()) +#pragma warning restore CS8500 + { + Context.glBufferData( + (uint)bufferType, + (IntPtr)size, + (IntPtr)bufferPtr, + (uint)usage); + } + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferVectorData(BufferType bufferType, ReadOnlySpan bufferArray, BufferUsage usage) + where T : struct, IVector + { + int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); + if (bufferArray == null) + { + return; + } +#pragma warning disable CS8500 + fixed (void* bufferPtr = &bufferArray.GetPinnableReference()) +#pragma warning restore CS8500 + { + Context.glBufferData( + (uint)bufferType, + (IntPtr)size, + (IntPtr)bufferPtr, + (uint)usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetBufferVectorData(BufferType bufferType, T[] bufferArray, BufferUsage usage) + where T : struct, IVector + { + int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); + if (bufferArray == null) + { + return; + } +#pragma warning disable CS8500 + fixed (void* bufferPtr = bufferArray) +#pragma warning restore CS8500 + { + Context.glBufferData( + (uint)bufferType, + (IntPtr)size, + (IntPtr)bufferPtr, + (uint)usage); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe void SetRenderBufferStorage(RenderBufferInternalFormat internalFormat, (int width, int height) size) + { + Context.glRenderbufferStorage( + GLconst.RENDERBUFFER, (uint)internalFormat, size.width, size.height + ); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void SetVertexAttribute(uint index, int size, TypeCode t, bool normalized, uint stride, int pointer) + { + uint type = InternalIO.GLtype[t]; + Context.glVertexAttribPointer(index, size, type, normalized ? 1 : 0, stride, (void*)pointer); + Context.glEnableVertexAttribArray(index); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureImage2d(Texture2DTarget target, int level, uint internalformat, uint width, uint height, + uint format, PixelChannelLayout type, T[] pixels) where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { +#pragma warning disable CS8500 + fixed (T* tptr = ((pixels == null) || (pixels.Length == 0)) ? pixels : null) + { + Context.glTexImage2D( + (uint)target, level, internalformat, width, height, 0, format, (uint)type, tptr); + } +#pragma warning restore CS8500 + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureImage2d(Texture2DTarget target, int level, uint internalformat, uint width, uint height, + uint format, PixelChannelLayout type, Span pixelSpan) where T : struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible +#endif + { +#pragma warning disable CS8500 + fixed (T* tptr = pixelSpan) + { + Context.glTexImage2D( + (uint)target, level, internalformat, width, height, 0, format, (uint)type, tptr); + } +#pragma warning restore CS8500 + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void TextureParameter(int target, uint pname, int param) + { + Context.glTexParameteri((uint)target, pname, param); + } + + public static bool TryGetFunctionPackage(IntPtr handle, out GlFunction functionPackage) + { + return contextToGLMap.TryGetValue(handle, out functionPackage); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void UseProgram(GlHandle program) + { + Context.glUseProgram(program.Value); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void VertexAttributeDivisor(uint layoutIndex, uint divisor) + { + Context.glVertexAttribDivisor(layoutIndex, divisor); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Viewport(int x, int y, uint width, uint height) + { + Context.glViewport(x, y, width, height); + } + + + public void WaitAccomplishment() + { + Context.glFinish(); + } + + internal static GlFunction BuildGlFunctionPackage(IntPtr handle) + { + GlFunction pack; + if (contextToGLMap.TryGetValue(handle, out pack)) + { + return pack; + } + pack = new GlFunction { _context = (GLcontext*)handle }; + contextToGLMap.Add(handle, pack); + return pack; + } + + ~GlFunction() + { + contextToGLMap.Remove(ContextHandle); + } + + } +} + diff --git a/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs b/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs new file mode 100644 index 00000000..5297b40e --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs @@ -0,0 +1,145 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderStream.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Logic; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + + public abstract partial class glRenderStream : RenderStream + { + private GlFunction _context; + + internal protected GlFunction GL + { + get { return _context; } + } + + /// + /// Init an OpenGl viewPortDisplay if current form has not been binded to any viewPortDisplay. + /// and set the viewPortDisplay binded to current form as current OpenGL viewPortDisplay. + /// + /// + /// Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + /// + public unsafe void MakeAsCurrentContext() + { + if (ContextHandle == default) + { + ContextHandle = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(GLcontext))); + GLcontext* contextID = (GLcontext*)ContextHandle; + contextID->glGetString = (delegate*)IntPtr.Zero; + } + if (GL == null) + { + _context = GlFunction.BuildGlFunctionPackage(ContextHandle); + } + if (GlFunction.CurrentGL != GL) + { + GlFunction.CurrentGL = GL; + InternalIO.glfwMakeContextCurrent(CanvasHandle); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight) + { + InternalIO.glfwSetWindowSizeLimits(this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal override sealed void Draw() + { + MakeAsCurrentContext(); + Main(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal override sealed void PlatformSpecifiedInit() + { + MakeAsCurrentContext(); + glManager.LoadOpenGLApiTo(Port.GraphicHandle); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal override sealed void Terminate() + { + CustomizeDeinit(); + } + + protected override sealed Uniform NativeCameraUniform(ShaderProgram source, string name) + { + NativeCamera.GainAllUniforms(source, name); + return NativeCamera.convertedUniform; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected override sealed void NativeCameraViewRange(Radius fieldOfRange, vec2d offset, (float frontDepth, float backDepth) viewDepth) + { + NativeCamera.SetViewRange(fieldOfRange, this.Size, offset, viewDepth); + } + + protected override sealed void NativeCameraViewTarget(vec3d position, vec3d direction, vec3d up) + { + NativeCamera.SetViewDirection(position, direction, up); + } + + #region Key Control + + protected KeyStatus CheckKey(KeyboardKey key) + { + return InternalIO.glfwGetKey(this.CanvasHandle, (int)key); + } + + protected KeyStatus CheckKey(Mouse key) + { + return InternalIO.glfwGetKey(this.CanvasHandle, (int)key); + } + + protected KeyStatus CheckKey(Joystick key) + { + return InternalIO.glfwGetKey(this.CanvasHandle, (int)key); + } + + #endregion + + + } +} diff --git a/源代码/StgSharp/Graphics/Pixels.cs b/源代码/StgSharp/Graphics/Pixels.cs new file mode 100644 index 00000000..3ab94e02 --- /dev/null +++ b/源代码/StgSharp/Graphics/Pixels.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public interface IPixel + { + internal int Size { get; } + + public float Red { get; set; } + public float Green { get; set; } + public float Blue { get; set; } + public float Alpha { get; set; } + + + } + + [StructLayout(LayoutKind.Explicit,Size = 32)] + public unsafe struct Pixel32 + { + [FieldOffset(0)]private unsafe fixed byte data[4]; + + internal int Size => 4; + } + + + +} diff --git a/源代码/StgSharp/Graphics/PlainGeometryMesh.cs b/源代码/StgSharp/Graphics/PlainGeometryMesh.cs index 3842e75c..c8b52c02 100644 --- a/源代码/StgSharp/Graphics/PlainGeometryMesh.cs +++ b/源代码/StgSharp/Graphics/PlainGeometryMesh.cs @@ -3,7 +3,9 @@ using StgSharp.Math; using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Runtime.InteropServices; using System.Text; namespace StgSharp.Graphics @@ -11,11 +13,11 @@ namespace StgSharp.Graphics public class PlainGeometryMesh { private PlainGeometry _shape; - private Image _texture; - private vec4d[] textureCoord; + private TextureProvider _texture; + //private Image _texture; public PlainGeometryMesh( - PlainGeometry shape, Image texture, vec4d[] texCoord + PlainGeometry shape, Image texture, vec2d[] texCoord ) { if (shape==null) @@ -27,19 +29,25 @@ namespace StgSharp.Graphics throw new ArgumentNullException(nameof(texCoord)); } - _shape = shape; - _texture = texture; if (shape.VertexCount > texCoord.Length) { throw new ArgumentException(paramName: nameof(texCoord), message: "Amount of texture coordination is too less"); } - textureCoord = texCoord; - return; + _texture = new TextureProvider(texture,texCoord); + } + + public PlainGeometryMesh([NotNull]PlainGeometry shape, [NotNull]TextureProvider texture) + { + if (shape.VertexCount > texture.TextureCoordinate.Length) + { + throw new ArgumentException(paramName: nameof(texture), message: "Amount of texture coordination is too less"); + } + _shape = shape; } public PlainGeometryMesh Resize(PlainGeometry newShape) { - return new PlainGeometryMesh(newShape, _texture, textureCoord); + return new PlainGeometryMesh(newShape, _texture); } public ReadOnlySpan MeshIndices => _shape.VertexIndices; @@ -48,10 +56,10 @@ namespace StgSharp.Graphics public Image TextureImage { - get => _texture; - internal set => _texture = value; + get => _texture.ProvideImage(); + internal set => _texture.ReadImage( value); } - public vec4d[] TextureCoord => textureCoord; + public ReadOnlySpan TextureCoord => MemoryMarshal.Cast( _texture.TextureCoordinate); } } diff --git a/源代码/StgSharp/Graphics/RenderStream.cs b/源代码/StgSharp/Graphics/RenderStream.cs index 0f689ee8..0a54cd93 100644 --- a/源代码/StgSharp/Graphics/RenderStream.cs +++ b/源代码/StgSharp/Graphics/RenderStream.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Logic; using StgSharp.Math; @@ -43,30 +43,18 @@ using System.Threading.Tasks; namespace StgSharp.Graphics { - public abstract class RenderStream : IConvertableToBlueprintNode + public abstract class RenderStream { private protected (int x, int y, int z) _coordStretch; private Camera nativeCamera; - private ViewPort primeArgs; + private protected ViewPort primeArgs; internal TimeSpanProvider timeProvider; - public RenderStream(ViewPort v, (int, int, int) unitCubeSize) - { - if (v == null) - { - throw new ArgumentNullException(nameof(v)); - } - primeArgs = v; - - _coordStretch = unitCubeSize; - nativeCamera = new Camera(); - } - public (int width, int height) Size { get => (Width, Height); @@ -78,12 +66,6 @@ namespace StgSharp.Graphics } } - - public string[] InputInterfacesName => InputPortsName; - - public string[] OutputInterfacesName => OutputPortsName; - - public int Height { get => primeArgs.Height; @@ -102,6 +84,11 @@ namespace StgSharp.Graphics internal set => primeArgs.Monitor = value; } + public abstract bool IsContextSharable + { + get; + } + public string Name { get => primeArgs.Name; @@ -131,10 +118,13 @@ namespace StgSharp.Graphics get => timeProvider.CurrentSpan; } - protected abstract string[] InputPortsName { get; } - protected abstract string[] OutputPortsName { get; } protected float TimePassed + { + get => timeProvider.CurrentSecond; + } + + protected float FramePassed { get => timeProvider.CurrentSpan; } @@ -154,7 +144,7 @@ namespace StgSharp.Graphics [MethodImpl(MethodImplOptions.AggressiveInlining)] public abstract void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight); - public static TTarget ShareContextWith(TSource source) + public static TTarget ShareContextFrom(TSource source) where TSource : RenderStream where TTarget : RenderStream { @@ -168,15 +158,10 @@ namespace StgSharp.Graphics ); } target.timeProvider = source.timeProvider; - target.InternalInit(); + target.PlatformSpecifiedInit(); return target; } - public void ExecuteMain(in Dictionary input, in Dictionary output) - { - InternalDraw(in input, in output); - } - internal protected static void PollEvents() { InternalIO.glfwPollEvents(); @@ -191,7 +176,7 @@ namespace StgSharp.Graphics protected abstract void NativeCameraViewRange(Radius fieldOfRange, vec2d offset, (float frontDepth, float backDepth) viewDepth); protected abstract void NativeCameraViewTarget(vec3d position, vec3d direction, vec3d up); /// - /// Get (T is ) uniform from a shader. + /// Get (TView is ) uniform from a shader. /// This uniform will be used as projection matrix of this camera. /// Additionally, for multi-shader rendering, each shader requires a uniform, /// so do not ignore return value of this method. @@ -199,26 +184,38 @@ namespace StgSharp.Graphics /// Shader using this camera /// ContextName of projection camera named in shader /// - /// (T is ) representing + /// (TView is ) representing /// projection matrix in shader program. /// protected abstract Uniform NativeCameraUniform(ShaderProgram source, string name); #endregion #region internal operation - internal abstract void InternalDraw( - in Dictionary input, - in Dictionary output); - internal abstract void InternalInit(); - internal abstract void InternalTerminate(); + internal abstract void Draw(); + + public void Init(ViewPort v, (int, int, int) unitCubeSize) + { + if (v == null) + { + throw new ArgumentNullException(nameof(v)); + } + primeArgs = v; + + _coordStretch = unitCubeSize; + nativeCamera = new Camera(); + PlatformSpecifiedInit(); + CustomizeInit(); + } + + internal abstract void PlatformSpecifiedInit(); + + internal abstract void Terminate(); #endregion #region public operation - protected abstract void Deinit(); - protected abstract void Init(); - protected abstract void Main( - in Dictionary input, - in Dictionary output); + protected abstract void CustomizeDeinit(); + protected abstract void CustomizeInit(); + protected abstract void Main(); #endregion diff --git a/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs b/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs index 9d0c3e59..86e8fd0d 100644 --- a/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs +++ b/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs @@ -29,7 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Math; using System; @@ -51,7 +51,7 @@ namespace StgSharp.Graphics.ShaderEdit { ShaderParameter p = new ShaderParameter(name,ShaderParameter.TypeMarshal()); uniformDefine.Add(index,p); - //return new Uniform(); + //return new Uniform(); throw new NotImplementedException(); } diff --git a/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs b/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs index 1f210006..dbecfbbb 100644 --- a/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs +++ b/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs @@ -1,4 +1,4 @@ -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using System; using System.Collections.Generic; @@ -16,11 +16,11 @@ namespace StgSharp.Graphics.ShaderEdit public class ShaderStruct { - internal Dictionary uniformPair; + internal Dictionary uniformPair; - public ShaderStruct(params (glSHandle, ShaderStructMember)[] uniformPairs) + public ShaderStruct(params (GlHandle, ShaderStructMember)[] uniformPairs) { - uniformPair = new Dictionary(); + uniformPair = new Dictionary(); if (uniformPairs.Length == 0) { return; @@ -38,10 +38,10 @@ namespace StgSharp.Graphics.ShaderEdit public unsafe void SetAllUniforms() { - GLcontext* gl = (GLcontext*) glFunc.CurrentContextHandle; + GLcontext* gl = (GLcontext*)OpenGL.GlFunction.CurrentGL.ContextHandle; foreach (var uniform in uniformPair) { - int id = uniform.Key.Value; + int id = uniform.Key.SignedValue; ShaderStructMember s = uniform.Value; switch (s.type) { diff --git a/源代码/StgSharp/Graphics/TextureProvider.cs b/源代码/StgSharp/Graphics/TextureProvider.cs new file mode 100644 index 00000000..7acd4544 --- /dev/null +++ b/源代码/StgSharp/Graphics/TextureProvider.cs @@ -0,0 +1,42 @@ +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public class TextureProvider : IImageProvider + { + private Image _tex; + private vec2d[] _texCoord; + + public Span TextureCoordinate + { + get => new Span(_texCoord); + } + + public Image ProvideImage() + { + return _tex; + } + + public TextureProvider(Image image, vec2d[] coord) + { + _tex = image; + _texCoord = coord; + } + + public ref vec2d this[int index] + { + get => ref _texCoord[index]; + } + + public void ReadImage(IImageProvider provider) + { + _tex = provider.ProvideImage(); + } + + } +} diff --git a/源代码/StgSharp/Graphics/View/View.cs b/源代码/StgSharp/Graphics/View/View.cs index 72180305..16f4ca7c 100644 --- a/源代码/StgSharp/Graphics/View/View.cs +++ b/源代码/StgSharp/Graphics/View/View.cs @@ -31,6 +31,8 @@ using StgSharp.Logic; using StgSharp.Math; +using StgSharpDebug.Logic; + using System; using System.Collections.Generic; using System.Diagnostics; @@ -39,37 +41,66 @@ using System.Numerics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Security.Cryptography; using System.Text; using System.Threading; namespace StgSharp.Graphics { /// - /// + /// View is the base type for all view types, providing context binding and control element binding. + /// A complete view should contain one complete , , and , + /// which provide layout descriptions of control elements, user responses, and rendering implementations in the view. + /// Data between instances of , , and is shared through . /// - public unsafe partial class View + + public abstract unsafe partial class View { + private delegate bool GetDataBindingEntryDelegate(string name, out DataBindingEntry entry); private (int x, int y, int z) unitCubeSize; + private TimeSpanProvider time; - private ViewPort context; + private GetDataBindingEntryDelegate getDataBindingEntry; - private ViewPortDesigner design; + private ViewPort context; + private ViewDesigner _design; + private ViewRender _render; + private ViewResponder _responder; - public View(ViewPort vp, ViewPortDesigner design) + public View() + { + + } + + public View(ViewPort vp) { context = vp; unitCubeSize = (1, 1, 1); - localLogic = new Logic.Blueprint(); - this.design = design; SelfName = string.Empty; } - public View(ViewPort vp, ViewPortDesigner design, (int, int, int) cubeSize) + public View(ViewPort vp, (int, int, int) cubeSize) { context = vp; unitCubeSize = cubeSize; - localLogic = new Logic.Blueprint(); + SelfName = string.Empty; + } + + public DataBindingEntry this[string name] + { + get + { + if (TryGetObjectReference(name, out DataBindingEntry entry)) + { + return entry; + } + if (getDataBindingEntry(name, out entry)) + { + return entry; + } + throw new KeyNotFoundException(); + } } public (int x, int y, int z) UnitCubeSize @@ -82,13 +113,13 @@ namespace StgSharp.Graphics public int Height { get => context.Height; - internal set { context.Height = value; } + private set { context.Height = value; } } public int Width { get => context.Width; - internal set { context.Width = value; } + private set { context.Width = value; } } public IntPtr Monitor => context.Monitor; @@ -99,11 +130,73 @@ namespace StgSharp.Graphics public string SelfName { get; set; } + public ViewDesigner Designer + { + get => _design; + protected set => _design = value; + } + public ViewPort Port { get => context; } + public ViewRender Render + { + get => _render; + protected set => _render = value; + } + + public ViewResponder Responder + { + get => _responder; + protected set => _responder = value; + } + + /// + /// Get the status of a certain key on the keyboard. + /// + /// + /// representing if a key is pressed or released. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public KeyStatus GetKeyStatus(KeyboardKey key) + { + return InternalIO.glfwGetKey(context.ViewPortID, (int)key); + } + + public abstract bool TryGetObjectReference(string name, out DataBindingEntry entry); + + private int usedFrame = 0; + + public void Use() + { + if (usedFrame == 0) + { + ValidateInitialization(); + } + } + + internal TimeSpanProvider TimeProvider + { + get => time; + } + + public bool ValidateInitialization() + { + return _design != null && _render != null && getDataBindingEntry != null && _responder != null; + } + + internal protected abstract void Show(); + + public void InternalInitialize(ViewModelBase viewModelBinding) + { + getDataBindingEntry = viewModelBinding.TryGetObjectReference; + context = viewModelBinding.ViewPortBinding; + time = viewModelBinding.frameTimeProvider; + } + + public abstract void CustomizedInitialize(ViewModelBase viewModelBinding); + } } \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/View/ViewRender.cs b/源代码/StgSharp/Graphics/View/ViewRender.cs new file mode 100644 index 00000000..93de5136 --- /dev/null +++ b/源代码/StgSharp/Graphics/View/ViewRender.cs @@ -0,0 +1,95 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="FormThreading.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; +using StgSharp.Logic; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Security.Cryptography; + +namespace StgSharp.Graphics +{ + + public abstract class ViewRender + where TView:View + { + private TView _binding; + protected ViewModelBase ModelBinding { get; set; } + private Dictionary _render; + + public TView Binding => _binding; + + protected ViewDesigner Design => _binding.Designer as ViewDesigner; + + protected ViewResponder Responder => _binding.Responder as ViewResponder; + + protected Dictionary Render + { + get => _render; + } + + protected ViewPort ContextBinding; + + public T BuildNewRenderStream(ViewPort arg, (int x, int y, int z) unitCubeSize) where T : RenderStream,new() + { + T ret = new T(); + ret.Init(arg, unitCubeSize); + ret.timeProvider = this.Binding.TimeProvider; + return ret; + } + + public RenderStream this[string renderName] + { + get => _render.TryGetValue(renderName, out RenderStream stream) ? stream : null; + internal set + { + if (_render.ContainsKey(renderName)) + { + _render[renderName] = value; + } + else + { + _render.Add(renderName, value); + } + } + } + + public abstract void CustomizedInitialize(); + + public abstract bool ValidateInitializing(); + + } +} diff --git a/源代码/StgSharp/Logic/TimeFunction.cs b/源代码/StgSharp/Logic/TimeFunction.cs index f1e9f195..ef4343bd 100644 --- a/源代码/StgSharp/Logic/TimeFunction.cs +++ b/源代码/StgSharp/Logic/TimeFunction.cs @@ -36,7 +36,6 @@ namespace StgSharp { public class TimeFunction { - private float _beginning, _ending; private Func _timeRelatedCalculation; private TimeSpanProvider _timeProvider; @@ -106,6 +105,12 @@ namespace StgSharp return new TimeFunction(_timeProvider, func, range); } + public virtual TimeFunction Reverse() + { + float range = _ending - _beginning; + return new TimeFunction(_timeProvider, p => _timeRelatedCalculation(range - p) ,range); + } + public void Reset() { float range = _ending - _beginning; diff --git a/源代码/StgSharp/Logic/ViewModel/DataBinding.cs b/源代码/StgSharp/Logic/ViewModel/DataBinding.cs new file mode 100644 index 00000000..685912fa --- /dev/null +++ b/源代码/StgSharp/Logic/ViewModel/DataBinding.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharpDebug.Logic +{ +#nullable enable + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate ref object BindingDataGetter(); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void BindingDataSetter(ref object value); + + public unsafe struct DataBindingEntry + { + private IntPtr getterPtr, setterPtr; + + public DataBindingEntry( + [NotNull] BindingDataGetter gettingCallback, + [NotNull] BindingDataSetter settingCallback) + { + getterPtr = Marshal.GetFunctionPointerForDelegate(gettingCallback); + setterPtr = Marshal.GetFunctionPointerForDelegate(settingCallback); + } + + public ref object GetValue() + { + return ref ((delegate* unmanaged[Cdecl])getterPtr)(); + } + + public void SetData(ref object value) + { + ((delegate* unmanaged[Cdecl])setterPtr)(ref value); + } + + public static DataBindingEntry NullBinding + { + get => new DataBindingEntry(); + } + + public bool ExactEqual(DataBindingEntry other) + { + return getterPtr == other.getterPtr && setterPtr == other.setterPtr; + } + } + +#nullable restore +} diff --git a/源代码/StgSharp/Logic/ViewModel/ShowViewPort.cs b/源代码/StgSharp/Logic/ViewModel/ShowViewPort.cs index 728d2ee3..9879964c 100644 --- a/源代码/StgSharp/Logic/ViewModel/ShowViewPort.cs +++ b/源代码/StgSharp/Logic/ViewModel/ShowViewPort.cs @@ -9,40 +9,35 @@ namespace StgSharp.Logic { public abstract partial class ViewModelBase { - public void ShowViewPort() - { + private View _nextView, _currentView; + protected View CurrentView + { + get => _currentView; + set => _nextView = value; } - private Blueprint renderLogic; - - /// - /// Render logic for every frame with no relation to . - /// - public Blueprint GeneralRenderLogic + protected void UseViewInNextFrame(string name) { - get => renderLogic; - set => renderLogic = value; + if (allView.TryGetValue(name, out View v)) + { + throw new KeyNotFoundException($"Cannot find View named {name} " + + $"in current View Model of {this.GetType().FullName}"); + } + CurrentView = v; } /// - /// Init this form and render it on screen, and respond with operation + /// CustomizeInit this form and render it on screen, and respond with operation /// public unsafe void Show() { - BuildGlobalKeyControl(); + CustomizeInitialize(); + //BuildGlobalKeyControl(); while(0 == InternalIO.glfwWindowShouldClose(this.viewPortDisplay.ViewPortID)) { viewPortDisplay.FlushSize(); - foreach (var item in this._globalKeyAction) - { - if (InternalIO.glfwGetKey(this.viewPortDisplay.ViewPortID, (int)item.Key.TargetKeyOrButtonID) - == item.Key.TriggeredStatus) - { - item.Value(); - } - } - BlueprintRunner.Run(renderLogic, ()=>ShouldClose); + CurrentView.Use(); RenderStream.PollEvents(); frameTimeProvider.WaitNextSpan(); Interlocked.Add(ref _frameCount, 1); @@ -53,36 +48,10 @@ namespace StgSharp.Logic { if(0 == InternalIO.glfwWindowShouldClose(this.viewPortDisplay.ViewPortID)) { - frameTimeProvider.WaitNextSpan(); - Interlocked.Add(ref _frameCount, 1); - viewPortDisplay.FlushSize(); - foreach (var item in this._globalKeyAction) - { - if (InternalIO.glfwGetKey(this.viewPortDisplay.ViewPortID, (int)item.Key.TargetKeyOrButtonID) - == item.Key.TriggeredStatus) - { - item.Value(); - } - } - BlueprintRunner.Run(renderLogic, () => ShouldClose); + CurrentView.Use(); RenderStream.PollEvents(); } } - public T BuildNewRenderStream(View arg, (int x, int y, int z) unitCubeSize) where T : RenderStream - { - if (arg.ContextName == this.Name) - { - - } - T? ret = Activator.CreateInstance(typeof(T), arg) as T; - if (ret == null) - { - throw new InvalidOperationException("Failed in building a new RenderStream when calling AsMainStreamOf"); - } - ret!.InternalInit(); - ret.timeProvider = this.frameTimeProvider; - return ret; - } } } diff --git a/源代码/StgSharp/Logic/ViewModel/ViewManage.cs b/源代码/StgSharp/Logic/ViewModel/ViewManage.cs index 208ae642..250eced3 100644 --- a/源代码/StgSharp/Logic/ViewModel/ViewManage.cs +++ b/源代码/StgSharp/Logic/ViewModel/ViewManage.cs @@ -1,31 +1,40 @@ using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using System; using System.Collections.Generic; +using System.ComponentModel.Design; using System.Text; namespace StgSharp.Logic { public partial class ViewModelBase { - private List allView; + private Dictionary allView; - public View BuildNewView( - ViewPortDesigner designer, (int x, int y, int z) unitCubeSize - ) + public T BuildNewView(string name,(int x, int y, int z) unitCubeSize) + where T : View,new() { - View ret = new View(this.viewPortDisplay, designer,unitCubeSize); - allView.Add(ret); + var ret = new T(); + ret.SelfName = name; + ret.InternalInitialize(this); + allView.Add(name, ret); return ret; } public T BuildRenderStream(View view) where T : RenderStream { - T ret = Activator.CreateInstance(typeof(T), view.Port, view.UnitCubeSize) as T ?? - throw new InvalidOperationException("Cannot build new render stream."); +#nullable enable + T? ret = Activator.CreateInstance(typeof(T), view.Port, view.UnitCubeSize) as T; +#nullable restore + if (ret == null) + { + throw new InvalidOperationException( + $"Failed in creating a new {typeof(T).Name} instance when calling ShareContextWith." + ); + } ret.timeProvider = this.frameTimeProvider; - ret.InternalInit(); + ret.PlatformSpecifiedInit(); return ret; } } diff --git a/源代码/StgSharp/Logic/ViewModel/ViewModel.cs b/源代码/StgSharp/Logic/ViewModel/ViewModel.cs index b61318e0..1cd49aed 100644 --- a/源代码/StgSharp/Logic/ViewModel/ViewModel.cs +++ b/源代码/StgSharp/Logic/ViewModel/ViewModel.cs @@ -30,13 +30,16 @@ //----------------------------------------------------------------------- using StgSharp.Controlling.UsrActivity; using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Math; +using StgSharpDebug.Logic; + using System; using System.Collections.Generic; using System.Diagnostics; using System.Numerics; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; @@ -64,7 +67,7 @@ namespace StgSharp.Logic size: (800, 600), monitor: IntPtr.Zero ); - allView = new List(); + allView = new(); fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); _frameSpeed = 0; _frameCount = 0; @@ -77,13 +80,35 @@ namespace StgSharp.Logic () => { }; - _globalKeyAction = new Dictionary(); + + } + + protected ViewModelBase(float frameLength) + { + viewPortDisplay = new ViewPort( + name: "Hello, Stg#!", + size: (800, 600), + monitor: IntPtr.Zero + ); + allView = new(); + fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); + _frameSpeed = 0; + _frameCount = 0; + fpsCountProvider.SpanRefreshCallback = CountFps; + long _frameLength = (FrameSpeed > 0) ? ((long)(1000 * frameLength)) : 0; + frameTimeProvider = new TimeSpanProvider( + _frameLength, TimeSpanProvider.DefaultProvider + ); + frameTimeProvider.SpanRefreshCallback = + () => + { + }; } public ViewModelBase(ViewPort vbinding, int framespeed) { viewPortDisplay = vbinding; - allView = new List(); + allView = new(); fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); _frameSpeed = 0; _frameCount = 0; @@ -96,12 +121,11 @@ namespace StgSharp.Logic () => { }; - _globalKeyAction = new Dictionary(); viewPortDisplay.FrameSizeCallback = (handle, width, height) => { InternalIO.glfwMakeContextCurrent(viewPortDisplay.ViewPortID); - glFunc.Viewport(0, 0, width, height); + GlFunction.CurrentGL.Viewport(0, 0, width, height); PrivateShow(); }; viewPortDisplay.FramePostionCallback = (handle, xpos, ypos) @@ -111,14 +135,41 @@ namespace StgSharp.Logic }; } - private void CountFps() + public ViewModelBase(ViewPort vbinding, float frameLength) { - /**/ - Console.Clear(); - Console.WriteLine(FrameSpeed); - /**/ - Interlocked.Exchange(ref _frameSpeed, _frameCount); - Interlocked.Exchange(ref _frameCount, 0); + viewPortDisplay = vbinding; + allView = new(); + fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); + _frameSpeed = 0; + _frameCount = 0; + fpsCountProvider.SpanRefreshCallback = CountFps; + long _frameLength = (frameLength > 0) ? ((long)(1000 * frameLength)) : 0; + frameTimeProvider = new TimeSpanProvider( + _frameLength, TimeSpanProvider.DefaultProvider + ); + frameTimeProvider.SpanRefreshCallback = + () => + { + }; + + viewPortDisplay.FrameSizeCallback = (handle, width, height) + => + { + InternalIO.glfwMakeContextCurrent(viewPortDisplay.ViewPortID); + GlFunction.CurrentGL.Viewport(0, 0, width, height); + PrivateShow(); + }; + viewPortDisplay.FramePostionCallback = (handle, xpos, ypos) + => + { + PrivateShow(); + }; + } + + public bool ShouldClose + { + get => InternalIO.glfwWindowShouldClose(viewPortDisplay.ViewPortID) != 0; + set => InternalIO.glfwSetWindowShouldClose(viewPortDisplay.ViewPortID, value ? 1 : 0); } public int CurrentFrameCount => frameTimeProvider.CurrentSpan; @@ -134,17 +185,37 @@ namespace StgSharp.Logic set { viewPortDisplay.Height = value; } } + /// + /// Width of this form, represent in + /// + public int Width + { + get => viewPortDisplay.Width; + set + { + viewPortDisplay.Width = value; + if (WindowID != IntPtr.Zero) + { + InternalIO.glfwSetWindowSize(viewPortDisplay.ViewPortID, Width, Height); + } + } + } + + public ViewPort ViewPortBinding + { + get => viewPortDisplay; + } + + public unsafe IntPtr WindowID + { + get => viewPortDisplay.ViewPortID; + } + public string Name { get => viewPortDisplay.Name; } - public bool ShouldClose - { - get => InternalIO.glfwWindowShouldClose(viewPortDisplay.ViewPortID) != 0; - set => InternalIO.glfwSetWindowShouldClose(viewPortDisplay.ViewPortID, value ? 1 : 0); - } - /// /// Width of this form, represent in /// @@ -162,28 +233,6 @@ namespace StgSharp.Logic } } - /// - /// Width of this form, represent in - /// - public int Width - { - get => viewPortDisplay.Width; - set - { - viewPortDisplay.Width = value; - if (WindowID != IntPtr.Zero) - { - InternalIO.glfwSetWindowSize(viewPortDisplay.ViewPortID, Width, Height); - } - } - } - - public unsafe IntPtr WindowID - { - get => viewPortDisplay.ViewPortID; - } - - #pragma warning disable CA1044 protected FrameBufferSizeHandler FrameSizeCallback { @@ -196,6 +245,14 @@ namespace StgSharp.Logic #pragma warning restore CA1044 + public abstract bool TryGetObjectReference(string name,out DataBindingEntry entry); + + public Action MethodLookup(string methodName) + { + MethodInfo method = GetType().GetMethod(methodName); + return (method != null) ? ((Action)Delegate.CreateDelegate(typeof(Action), this, method)) : null; + } + /// /// Resize the current form /// @@ -209,7 +266,6 @@ namespace StgSharp.Logic InternalIO.glfwSetWindowSize(this.viewPortDisplay.ViewPortID, (int)size.X, (int)size.Y); } - /// /// Set the size limit of current form /// @@ -244,33 +300,30 @@ namespace StgSharp.Logic InternalIO.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, maxHeight); } - #region Key Control - - protected KeyStatus CheckKey(KeyboardKey key) + private void CountFps() { - return InternalIO.glfwGetKey(this.WindowID, (int)key); + /**/ + Console.Clear(); + Console.WriteLine(FrameSpeed); + /**/ + Interlocked.Exchange(ref _frameSpeed, _frameCount); + Interlocked.Exchange(ref _frameCount, 0); } - protected KeyStatus CheckKey(Mouse key) + public DataBindingEntry this[string name] { - return InternalIO.glfwGetKey(this.WindowID, (int)key); + get + { + if (this.TryGetObjectReference(name, out DataBindingEntry entry)) + { + return entry; + } + throw new KeyNotFoundException(); + } } - protected KeyStatus CheckKey(Joystick key) - { - return InternalIO.glfwGetKey(this.WindowID, (int)key); - } + public abstract void CustomizeInitialize(); - #endregion - - protected abstract void BuildGlobalKeyControl(); - - private Dictionary _globalKeyAction; - - protected Dictionary GlobalKeyAction - { - get => _globalKeyAction; - } } } diff --git a/源代码/StgSharp/Math/Graphic/Camera.cs b/源代码/StgSharp/Math/Graphic/Camera.cs index 8164bbc7..a580ea51 100644 --- a/源代码/StgSharp/Math/Graphic/Camera.cs +++ b/源代码/StgSharp/Math/Graphic/Camera.cs @@ -29,7 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Graphics.ShaderEdit; using StgSharp.Math; @@ -116,7 +116,7 @@ namespace StgSharp.Graphics { if (uniformName.Length != 1) { - throw new ArgumentException(); + throw new ArgumentException("Camera needs only one uniform.", nameof(uniformName)); } convertedUniform = source.GetUniform(uniformName[0]); } @@ -143,7 +143,7 @@ namespace StgSharp.Graphics public unsafe void SetAllUniforms() { //Console.WriteLine(Projection * View); - glFunc.SetUniformValue(convertedUniform, Projection * View); + OpenGL.GlFunction.CurrentGL.SetUniformValue(convertedUniform, Projection * View); } public void SetViewDirection(vec3d position, vec3d target, vec3d up) diff --git a/源代码/StgSharp/Stg/CollisionTexture.cs b/源代码/StgSharp/Stg/CollisionTexture.cs index 087eb851..0fc2d0f0 100644 --- a/源代码/StgSharp/Stg/CollisionTexture.cs +++ b/源代码/StgSharp/Stg/CollisionTexture.cs @@ -31,7 +31,7 @@ using StgSharp.Data; using StgSharp.Geometries; using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Logic; using StgSharp.Math; @@ -45,23 +45,12 @@ using System.Threading.Tasks; namespace StgSharp.Stg { - public class CollisionTextureInput : BlueprintPipelineArgs + public interface IOneDimensionalCollisionTexture2D { - -#pragma warning disable CS8618 - public CollisionTextureInput() -#pragma warning restore CS8618 - { - } - - public new List Value - { - get; set; - } - + public void Init(Radius angleStride, string name); } - public class OneDimensionalCollisionTexture2D : glRenderStream + public sealed class OneDimensionalCollisionTexture2D_GL :glRenderStream, IOneDimensionalCollisionTexture2D { private const string inputName = "InstanceBufferList"; @@ -75,44 +64,22 @@ namespace StgSharp.Stg VertexBuffer vbo; ElementBuffer ebo; - public OneDimensionalCollisionTexture2D(ViewPort args) : base(args,(1,1,1)) + public OneDimensionalCollisionTexture2D_GL() { - throw new InvalidOperationException( - $"Collision TextureGL unit cannot share context with other render stream or set as mainstream of a form," + - $"and cannot be inited by {typeof(ViewPort).Name} as well." - ); + } -#pragma warning disable CS8618 - public OneDimensionalCollisionTexture2D(Radius angleStride, string name) : -#pragma warning restore CS8618 - base( new ViewPort() - { - Height = 1, - Width = (int)((new Radius(Scaler.Pi)) / angleStride), - Name = name, - },(1, 1, 1)) - { - InternalInit(); - } + public override bool IsContextSharable => false; - protected override string[] InputPortsName => - [ - inputName, - ]; - - protected override string[] OutputPortsName => - [ - outputName, - ]; +#pragma warning disable CS8618 - protected override void Deinit() + protected override void CustomizeDeinit() { throw new NotImplementedException(); } - protected override void Init() + protected override void CustomizeInit() { generatingShader = CreateShaderProgram(); @@ -133,51 +100,45 @@ namespace StgSharp.Stg fbo = CreateFrameBuffer(1); - RenderBuffer rbo = CreateRenderBuffer(1); - glFunc.SetRenderBufferStorage( + rbo = CreateRenderBuffer(1); + GL.SetRenderBufferStorage( RenderBufferInternalFormat.Depth24_Stencil8, this.Size); t = CreateTexture(1); t.Bind2D(0); - glFunc.TextureImage2d(Texture2DTarget.Texture2D, 0, (int)ImageChannel.WithAlphaChannel, - (uint)Width, (uint)Height, (int)ImageChannel.WithAlphaChannel, ImageChannelLayout.Byte, glHandle.ZeroHandle); + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, (int)ImageChannel.WithAlphaChannel, + (uint)Width, (uint)Height, (int)ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, Array.Empty()); t.Set2dWrapProperty(Wrap.Repeat, Wrap.Repeat); t.Set2dFilterProperty(Filter.Nearest, Filter.Nearest); - glFunc.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), + GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), Texture2DTarget.Texture2D, t[0], 0); - glFunc.CombineFrameBufferRenderBuffer(fbo[0], rbo[0]); + GL.CombineFrameBufferRenderBuffer(fbo[0], rbo[0]); textureOutput = new float[this.Width]; } TextureGL t; + RenderBuffer rbo; float[] textureOutput; - protected override void Main( - in Dictionary input, - in Dictionary output) + protected override void Main() + { + throw new NotSupportedException(); + } + + public void GenerateCollisionTexture(IEnumerable bufferEnumeration) { - if (input == null) - { - throw new InvalidOperationException($"Unknown operation lead to null ref of {nameof(input)}"); - } - if (input[inputName].Args is not CollisionTextureInput inpipeline || inpipeline.Value == null || inpipeline.Value.Count == 0) - { - throw new InvalidOperationException(); - } - List bufferList = inpipeline.Value; - fbo.Bind(0); - glFunc.ClearColor(0, 0, 0, 1); - glFunc.Clear(MaskBufferBit.DEPTH|MaskBufferBit.COLOR); + GL.ClearColor(0, 0, 0, 1); + GL.Clear(MaskBufferBit.DEPTH | MaskBufferBit.COLOR); generatingShader.Use(); vao.Bind(0); - foreach (IInstancingBuffer item in bufferList) + foreach (IInstancingBuffer item in bufferEnumeration) { IGeometry g = item.TypicalShape; @@ -187,26 +148,40 @@ namespace StgSharp.Stg } ebo.Bind(0); - ebo.SetValue(0,g.VertexIndices,BufferUsage.StreamDraw); + ebo.SetValue(0, g.VertexIndices, BufferUsage.StreamDraw); - vbo.WriteVectorData(0,item.CoordAndRotationSpan,BufferUsage.StreamDraw); - VertexArray.SetVertexAttribute(1,3,TypeCode.Single,false, 4 * sizeof(float), 0); - VertexArray.SetVertexAttribute(2,1, TypeCode.Single,false,4*sizeof(float), 3 * sizeof(float)); + vbo.WriteVectorData(0, item.CoordAndRotationSpan, BufferUsage.StreamDraw); + vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), 3 * sizeof(float)); vbo.WriteScalerData(2, item.ScalingSpan, BufferUsage.StreamDraw); - VertexArray.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); + vao.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); - vbo.WriteVectorData(1,g.VertexStream,BufferUsage.StreamDraw); - VertexArray.SetVertexAttribute(0,3,TypeCode.Single,false,4*sizeof(float),0); + vbo.WriteVectorData(1, g.VertexStream, BufferUsage.StreamDraw); + vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); - glFunc.DrawElementsInstanced(GeometryType.TRIANGLES,(uint)g.VertexIndices.Length / 3, - TypeCode.UInt32,IntPtr.Zero,(uint)item.ScalingSpan.Length); + GL.DrawElementsInstanced(GeometryType.TRIANGLES, (uint)g.VertexIndices.Length / 3, + TypeCode.UInt32, IntPtr.Zero, (uint)item.ScalingSpan.Length); } t.Bind2D(0); - glFunc.GetTextureImage(Texture2DTarget.Texture2D,0,ImageChannel.SingleColor,ImageChannelLayout.Float,ref textureOutput); + GL.GetTextureImage(Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, PixelChannelLayout.Float, textureOutput); VertexArray.BindNull(); } + public void Init(Radius angleStride, string name) + { + primeArgs = new ViewPort() + { + Height = 1, + Width = (int)((new Radius(Scaler.Pi)) / angleStride), + Name = name, + }; + + _coordStretch = (1, 1, 1); + + PlatformSpecifiedInit(); + CustomizeInit(); + } } } diff --git a/源代码/StgSharp/StgSharp.csproj b/源代码/StgSharp/StgSharp.csproj index 49e808d3..c8352fe2 100644 --- a/源代码/StgSharp/StgSharp.csproj +++ b/源代码/StgSharp/StgSharp.csproj @@ -3,7 +3,7 @@ netstandard2.1 True - preview + Preview True True AnyCPU;x64 @@ -98,13 +98,13 @@ - Windows + WINDOWS OSX - Linux + LINUX diff --git a/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs b/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs index b423da9b..55ee8578 100644 --- a/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs +++ b/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8f9f1c4012e0ba8723569f71754633060f4f0d85")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgSharpDebug/Demo/Program.cs b/源代码/StgSharpDebug/Demo/Program.cs new file mode 100644 index 00000000..fd10920f --- /dev/null +++ b/源代码/StgSharpDebug/Demo/Program.cs @@ -0,0 +1,46 @@ +//using StgSharp.Environment.Win32; +using StgSharp.Controlling.UsrActivity; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Logic; +using StgSharp.Math; + +using StgSharpDebug.Logic; + +using System; +using System.Runtime.CompilerServices; +using System.Xml.XPath; + +namespace StgSharp +{ + + internal static class Program + { + internal static unsafe void Main(string[] args) + { + try + { + //StgSharp.TryCreatWindow(); + + /**/ + StgSharp.Init(); + StgSharp.InitGL(4, 6); + StgSharp.GlobalSetting.VSyncActivated = false; + + + + + StgSharp.Terminate(); + /**/ + + } + catch (Exception ex) + { + Console.WriteLine(ex.Message + "\n" + ex.StackTrace); + InternalIO.InternalWriteLog( + ex.Message + "\n" + ex.StackTrace, + LogType.Error); + } + } + } +} \ No newline at end of file diff --git a/源代码/StgSharpDebug/Demo/RenderStream/Partical.cs b/源代码/StgSharpDebug/Demo/RenderStream/Partical.cs new file mode 100644 index 00000000..963be196 --- /dev/null +++ b/源代码/StgSharpDebug/Demo/RenderStream/Partical.cs @@ -0,0 +1,312 @@ +using StgSharp.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Logic; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class ParticleRenderStream : glRenderStream + { + + ElementBuffer ebo; + + FrameBuffer fbo; + Image i; + PlainInstancingBuffer buffer; + RenderBuffer rbo; + + ShaderProgram s; + + TextureGL t; + VertexArray vao; + VertexBuffer vbo; + + Uniform time; + + protected override void CustomizeDeinit() + { + + } + + internal static vec3d DefaultRotation(TimeSpanProvider provider, out float rotation) + { + rotation = provider.SpanLengthLowPrecession * 2 * Scaler.Pi; + float angle = provider.CurrentSecond * 2 * Scaler.Pi; + return new vec3d( + Scaler.Cos(rotation), + Scaler.Sin(rotation), + 0 + ) * provider.SpanLengthLowPrecession; + } + + ShaderProgram frameMainShader; + + protected override void CustomizeInit() + { + buffer = new PlainInstancingBuffer(); + for (int i = 0; i < 10; i++) + { + float ai = Scaler.Abs(i - 5.0f); + for (int t = 0; t < 10; t++) + { + float at = Scaler.Abs(t - 5.0f); + + ParticleOnPlain p = new ParticleOnPlain(buffer); + ((IInstancing)p).Coord = new vec3d( + (((-5) + i) * 0.2f) + 0.1f, (((-5) + t) * 0.2f) + 0.1f, 0); + ((IInstancing)p).Scale = + Scaler.MinOf(i, t) * 0.15f; + ((IInstancing)p).Motion = new GeometryMotion( + true, this.timeProvider, + DefaultRotation) + ; + } + } + + //SetSizeLimit(800, 800, 800, 800); + + s = CreateShaderProgram(); + frameMainShader = CreateShaderProgram(); + Shader pvs = CreateShaderSegment(ShaderType.Vertex, 2); + Shader pfs = CreateShaderSegment(ShaderType.Fragment, 2); + + pvs.Compile(0, Shader.FromCodeFile("Shader\\particle.vert")); + pvs.AttachTo(0, s); + pfs.Compile(0, Shader.FromCodeFile("Shader\\particle.frag")); + pfs.AttachTo(0, s); + s.Link(); + + pvs.Compile(1, Shader.FromCodeFile("Shader\\fbo.vert")); + pvs.AttachTo(1, frameMainShader); + pfs.Compile(1, Shader.FromCodeFile("Shader\\fbo.frag")); + pfs.AttachTo(1, frameMainShader); + frameMainShader.Link(); + + vbo = CreateVertexBuffer(3); + vao = CreateVertexArray(1); + ebo = CreateElementBuffer(1); + vbo.Bind(0); + + Rectangle rec = new Rectangle + ( + 0.05f, 0.05f, + 0.05f, -0.05f, + -0.05f, -0.05f, + -0.05f, 0.05f + ); + + vao.Bind(0); + vbo.WriteVectorData(0, rec.VertexStream, BufferUsage.StaticDraw); + ebo.SetValue(0, rec.VertexIndices, BufferUsage.StaticDraw); + vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + + vbo.WriteVectorData(1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw); + vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), 3 * sizeof(float)); + + GL.VertexAttributeDivisor(1, 1); + GL.VertexAttributeDivisor(2, 1); + + vbo.WriteScalerData(2, buffer.ScalingSpan, BufferUsage.StaticDraw); + vao.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); + + GL.VertexAttributeDivisor(3, 1); + + vbo.Unbind(); + GL.BindVertexArray(GlHandle.Zero); + + NativeCameraViewTarget + ( + (0, 0, -100), + (0, 0, 0), + (0, 1, 0) + ); + NativeCameraViewRange(new Degree(1.5f), Vec2d.Zero, (50, 50)); + NativeCameraUniform(s, "Camera"); + + s.Use(); + fbo = CreateFrameBuffer(1); + rbo = CreateRenderBuffer(1); + + fbo.Bind(0); + rbo.Bind(0); + GL.SetRenderBufferStorage( + RenderBufferInternalFormat.Depth24_Stencil8, this.Size); + + + t = CreateTexture(1); + t.Bind2D(0); + /**/ + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, (int)ImageChannel.WithAlphaChannel, + (uint)Width, (uint)Height, (int)ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, null); + /**/ + t.Set2dWrapProperty(Wrap.Repeat, Wrap.Repeat); + t.Set2dFilterProperty(Filter.Nearest, Filter.Nearest); + + + GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), + Texture2DTarget.Texture2D, t[0], 0); + + GL.CombineFrameBufferRenderBuffer(fbo[0], rbo[0]); + + int streamLength = this.Width * this.Height * 4; + byte[] imageStream = new byte[streamLength]; + i = Image.FromMemory(this.Size, ImageChannel.WithAlphaChannel, imageStream); + + time = s.GetUniform("time"); + + vec2d[] coordArray = { + (0f, 1f), + (1f, 1f), + (1f, 0f), + (0f, 0f) + }; + + buttonTextureProvider = new TextureProvider(i,coordArray); + + + f_vao.Bind(0); + + f_ebo.Bind(0); + f_ebo.SetValue(0, rec.VertexIndices, BufferUsage.StaticDraw); + + f_vbo.Bind(0); + f_vbo.WriteVectorData(0, rec.VertexStream, BufferUsage.StaticDraw); + f_vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + + f_vbo.Bind(1); + f_vbo.WriteVectorData(1, coordArray, BufferUsage.StaticDraw); + f_vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + + + t = CreateTexture(1); + t.Bind2D(0); + t.Set2dWrapProperty(Wrap.Repeat, Wrap.Repeat); + t.Set2dFilterProperty(Filter.Nearest, Filter.Nearest); + + t.ActivateAs(TextureUnit.Unit0); + + texUniform = frameMainShader.GetUniform("tex"); + GL.SetUniformValue(texUniform, 1); + } + + VertexBuffer f_vbo; + VertexArray f_vao; + ElementBuffer f_ebo; + Uniform texUniform; + + public void RenderButton(ButtonStatus status, float statusBegin, in TextureProvider provider) + { + provider.ReadImage(i); + } + + protected override void Main() + { + //GL.ClearError(); + //Console.Clear(); + //Console.WriteLine($"{Width} {Height}"); + buffer.UpdateAllParticles(); + + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + + fbo.Bind(0); // Console.Write($"{GL.GetError()}\t"); + vao.Bind(0); // Console.Write($"{GL.GetError()}\t"); + t.Bind2D(0); // Console.Write($"{GL.GetError()}\t"); + /**/ + + GL.TextureImage2d(Texture2DTarget.Texture2D, 0, (int)ImageChannel.WithAlphaChannel, + (uint)Width, (uint)Height, (int)ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, new byte[1]); + /**/ + + //Console.Write($"{GL.GetError()}\t"); + + GL.ClearColor((0.6f + TimePassed) % 1.0f, 0.1f, 0.3f, 1); + GL.Clear(MaskBufferBit.COLOR | MaskBufferBit.DEPTH); + + //Console.Write($"{GL.GetError()}\t"); + + vbo.Bind(1); + vbo.WriteVectorData(1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw); + + + s.Use(); + NativeCamera.SetAllUniforms(); + GL.SetUniformValue(time, TimePassed); + + GL.DrawElementsInstanced( + GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, 100 + ); + //Console.WriteLine(TimePassed); + //Console.Write($"{GL.GetError()}\t"); + + GL.WaitAccomplishment(); + GL.BindVertexArray(GlHandle.Zero); + /**/ + //Console.Write($"{GL.GetError()}\t"); + + ImageHelper.Resize(i, this.Width, this.Height, ImageMovement.Discard); + + //GL.ClearError(); + + GL.GetTextureImage(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, i.PixelBuffer); + /* + for (int num = 0; num < i.PixelBuffer.Length; num+=10000) + { + Console.Write($"{i.PixelBuffer[num]}\t"); + } + /**/ + //Console.Write($"{GL.GetError()}\t"); + //Array.Fill(i.PixelBuffer, 24); + + GL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); + + //Console.Write($"{GL.GetError()}\t"); + /**/ + + /* + //BlueprintPipeline.SkipAll(output); + SwapBuffers(); + PollEvents(); + /**/ + } + + public void AnotherMain(IEnumerable items) + { + GL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); //Console.Write($"{GL.GetError()}\t"); + GL.ClearColor(0.4f, TimePassed % 1.0f, 0f, 1.0f); //Console.Write($"{GL.GetError()}\t"); + GL.Clear(MaskBufferBit.COLOR /**/| MaskBufferBit.DEPTH/**/); //Console.Write($"{GL.GetError()}\t"); + + vao.Bind(0); //Console.Write($"{GL.GetError()}\t"); + + foreach (PlainGeometryMesh mesh in items) + { + t.LoadTexture(0, mesh.TextureImage); + } + //Console.Write($"{GL.GetError()}\t"); + + s.Use(); //Console.Write($"{GL.GetError()}\t"); + + + GL.DrawElements(GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero); + //Console.Write($"{GL.GetError()}\t"); + + //GL.DrawElements(GeometryType.LINES, 6, TypeCode.UInt32, IntPtr.Zero); + //BlueprintPipeline.SkipAll(output); + + SwapBuffers(); + } + + TextureProvider buttonTextureProvider; + + public override bool IsContextSharable => true; + } +} diff --git a/源代码/StgSharpDebug/Demo/View/Control.cs b/源代码/StgSharpDebug/Demo/View/Control.cs new file mode 100644 index 00000000..35f4f88a --- /dev/null +++ b/源代码/StgSharpDebug/Demo/View/Control.cs @@ -0,0 +1,25 @@ +using StgSharp.Controlling.UsrActivity; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class Control : ViewResponder + { + + + public override void CustomizedInitialize(Func keyRegister) + { + + } + + public override bool ValidateInitializing() + { + throw new NotImplementedException(); + } + } +} diff --git a/源代码/StgSharpDebug/Demo/View/Design.cs b/源代码/StgSharpDebug/Demo/View/Design.cs new file mode 100644 index 00000000..1ec904e6 --- /dev/null +++ b/源代码/StgSharpDebug/Demo/View/Design.cs @@ -0,0 +1,36 @@ +using StgSharp.Graphics; +using StgSharp.Controlling; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using StgSharp.Controls; + +namespace StgSharp +{ + internal class Design : ViewDesigner + { + DemoButtonGroup group; + + public override sealed void CustomizedInitialize() + { + group = new DemoButtonGroup(); + } + + public override bool ValidateInitializing() + { + return true; + } + } + + public class DemoButtonGroup : KeyboardButtonGroup + { + public override sealed void Confirm() + { + return; + } + + } +} diff --git a/源代码/StgSharpDebug/Demo/View/Render.cs b/源代码/StgSharpDebug/Demo/View/Render.cs new file mode 100644 index 00000000..4e160eb4 --- /dev/null +++ b/源代码/StgSharpDebug/Demo/View/Render.cs @@ -0,0 +1,24 @@ +using StgSharp.Graphics; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class Render : ViewRender + { + + public override void CustomizedInitialize() + { + + } + + public override bool ValidateInitializing() + { + + } + } +} diff --git a/源代码/StgSharpDebug/Demo/View/ViewMain.cs b/源代码/StgSharpDebug/Demo/View/ViewMain.cs new file mode 100644 index 00000000..01c0dc4f --- /dev/null +++ b/源代码/StgSharpDebug/Demo/View/ViewMain.cs @@ -0,0 +1,40 @@ +using StgSharp.Graphics; +using StgSharp.Logic; + +using StgSharpDebug.Logic; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class ViewMain : View + { + public DemoButtonGroup DemoGroup + { + get; set; + } + + public override void CustomizedInitialize(ViewModelBase viewModelBinding) + { + Designer = new Design(); + Responder = new Control(); + Render = new Render(); + + DemoGroup = new DemoButtonGroup(); + } + + public override bool TryGetObjectReference(string name, out DataBindingEntry entry) + { + throw new NotImplementedException(); + } + + internal protected override void Show() + { + throw new NotImplementedException(); + } + } +} diff --git a/源代码/StgSharpDebug/Demo/ViewModelMain.cs b/源代码/StgSharpDebug/Demo/ViewModelMain.cs new file mode 100644 index 00000000..16b6b930 --- /dev/null +++ b/源代码/StgSharpDebug/Demo/ViewModelMain.cs @@ -0,0 +1,48 @@ +using StgSharp.Graphics; +using StgSharp.Logic; + +using StgSharpDebug.Logic; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class ViewModelMain : ViewModelBase + { + public ViewModelMain(ViewPort vp):base(vp,60) + { + dataBindingEntryIndexmap = new Dictionary(); + } + + Dictionary dataBindingEntryIndexmap; + + public override bool TryGetObjectReference(string name, out DataBindingEntry entry) + { + if (dataBindingEntryIndexmap.TryGetValue(name, out entry)) + { + return true; + } + entry = name switch + { + + _ => DataBindingEntry.NullBinding, + }; + + if (entry.ExactEqual(DataBindingEntry.NullBinding)) + { + return false; + } + dataBindingEntryIndexmap.Add(name, entry); + return true; + } + + public override void CustomizeInitialize() + { + + } + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/源代码/StgSharpDebug/Shader/particle.frag b/源代码/StgSharpDebug/Shader/particle.frag index 1e9dacb2..d2eb95fd 100644 --- a/源代码/StgSharpDebug/Shader/particle.frag +++ b/源代码/StgSharpDebug/Shader/particle.frag @@ -1,10 +1,12 @@ #version 460 core +uniform float time; + out vec3 fragColor; void main() { - fragColor = vec3( 0.5f,0.336f,0.9961f ); + fragColor = vec3( 0.5f,0.336f,mod( (0.9961f + time),1.0f) ); } \ No newline at end of file diff --git a/源代码/StgSharpDebug/StgSharpDebug.csproj b/源代码/StgSharpDebug/StgSharpDebug.csproj index 16f0f030..7d6d4e93 100644 --- a/源代码/StgSharpDebug/StgSharpDebug.csproj +++ b/源代码/StgSharpDebug/StgSharpDebug.csproj @@ -22,43 +22,43 @@ - False + True - False + True - False + True - False + True - False + True - False + True - False + True - False + True - False + True - False + True @@ -77,6 +77,9 @@ Linux + + + @@ -86,6 +89,7 @@ + diff --git a/源代码/StgSharpDebug/Test/MainRenderStream.cs b/源代码/StgSharpDebug/Test/MainRenderStream.cs index 38fdba7f..a8fcedd9 100644 --- a/源代码/StgSharpDebug/Test/MainRenderStream.cs +++ b/源代码/StgSharpDebug/Test/MainRenderStream.cs @@ -31,7 +31,7 @@ using StgSharp; using StgSharp.Geometries; using StgSharp.Graphics; -using StgSharp.Graphics.GL; +using StgSharp.Graphics.OpenGL; using StgSharp.Logic; using StgSharp.Math; @@ -43,7 +43,7 @@ using System.Threading.Tasks; namespace StgSharp { - + public class MainRenderStream : glRenderStream { @@ -65,7 +65,7 @@ namespace StgSharp protected override string[] OutputPortsName => ["output_1"]; - protected override void Deinit() + protected override void CustomizeDeinit() { /**/ vao.Dispose(); @@ -74,7 +74,7 @@ namespace StgSharp /**/ } - protected override sealed void Init() + protected override sealed void CustomizeInit() { //SetSizeLimit(800, 800, 800, 800); @@ -130,10 +130,10 @@ namespace StgSharp ebo.SetValue(0, rec.VertexIndices, BufferUsage.StaticDraw); vbo.WriteVectorData(0, rec.VertexStream, BufferUsage.StaticDraw); - VertexArray.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); vbo.WriteScalerData(1, texCoord, BufferUsage.StaticDraw); - VertexArray.SetVertexAttribute(2, 2, TypeCode.Single, false, 2 * sizeof(float), 0); + vao.SetVertexAttribute(2, 2, TypeCode.Single, false, 2 * sizeof(float), 0); /**/ vbo.Unbind(); @@ -153,9 +153,9 @@ namespace StgSharp /**/ color = shader.GetUniform("color"); ourTexture = shader.GetUniform("ourTexture"); - glFunc.SetUniformValue(ourTexture, 0); + GL.SetUniformValue(ourTexture, 0); ourTexture2 = shader.GetUniform("ourTexture2"); - glFunc.SetUniformValue(ourTexture2, 1); + GL.SetUniformValue(ourTexture2, 1); /**/ NativeCameraViewTarget( @@ -167,9 +167,9 @@ namespace StgSharp NativeCameraUniform(shader, "camera"); - TextureGL.Activate(TextureUnit.Unit0); + texture.ActivateAs(TextureUnit.Unit0); texture.Bind2D(0); - TextureGL.Activate(TextureUnit.Unit1); + texture.ActivateAs(TextureUnit.Unit1); texture.Bind2D(1); } @@ -179,9 +179,9 @@ namespace StgSharp in Dictionary output ) { - glFunc.ClearColor(0.333f, 0.555f, 0.555f, 1.0f); + GL.ClearColor(0.333f, 0.555f, 0.555f, 1.0f); //Console.WriteLine(1); - glFunc.Clear(MaskBufferBit.COLOR /**/| MaskBufferBit.DEPTH /**/ ); + GL.Clear(MaskBufferBit.COLOR /**/| MaskBufferBit.DEPTH /**/ ); /**/ vao.Bind(0); @@ -194,7 +194,7 @@ namespace StgSharp float time = /* CurrentFrameCount, / /**/ 0.003f; - glFunc.SetUniformValue(color, + GL.SetUniformValue(color, 0.5f + MathF.Cos(time), 0.5f + MathF.Sin((time * 0.66667f) + ((2 * Scaler.Pi) / 3)), 0.5f + MathF.Sin((time * 0.33333f) + (Scaler.Pi / 3)), @@ -206,7 +206,7 @@ namespace StgSharp //Console.WriteLine(NativeCamera.Projection); - glFunc.DrawElements(GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero); + GL.DrawElements(GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero); VertexArray.BindNull(); /**/ @@ -255,4 +255,5 @@ namespace StgSharp } /**/ } + } diff --git a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs index a94cea65..0634eea6 100644 --- a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs +++ b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8f9f1c4012e0ba8723569f71754633060f4f0d85")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json index 8be53f9f..6fae4210 100644 --- a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json +++ b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/8f9f1c4012e0ba8723569f71754633060f4f0d85/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/924fe6eef7b6b9441b297f211c82b4684f23d002/*"}} \ No newline at end of file diff --git a/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs b/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs index fa17a9e5..fa9f613c 100644 --- a/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs +++ b/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+66efce19fcb461782c49255dc5500144f8c267e6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt b/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt index 3d92ea53..4c63d0fc 100644 --- a/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt +++ b/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt @@ -1,8 +1,6 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\StgSharpDebug.exe D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\awesomeface.png -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\fragment.frag D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\Image1.png -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\vertex.vert D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\StgSharpDebug.deps.json D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\StgSharpDebug.runtimeconfig.json D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\StgSharpDebug.dll @@ -17,3 +15,9 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Release\net6.0\StgSharpDebug.xml D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Release\net6.0\StgSharpDebug.pdb D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Release\net6.0\StgSharpDebug.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\fbo.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\fbo.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\main.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\main.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\particle.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Release\net6.0\Shader\particle.vert diff --git a/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.sourcelink.json b/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.sourcelink.json index 7c8c8b8e..6fae4210 100644 --- a/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.sourcelink.json +++ b/源代码/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/66efce19fcb461782c49255dc5500144f8c267e6/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/924fe6eef7b6b9441b297f211c82b4684f23d002/*"}} \ No newline at end of file diff --git a/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs b/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs index 54bcc23e..17aaf164 100644 --- a/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs +++ b/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8f9f1c4012e0ba8723569f71754633060f4f0d85")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgsharpEnvDebug/obj/Release/net6.0/StgsharpEnvDebug.AssemblyInfo.cs b/源代码/StgsharpEnvDebug/obj/Release/net6.0/StgsharpEnvDebug.AssemblyInfo.cs index 373e1ab5..90bd942f 100644 --- a/源代码/StgsharpEnvDebug/obj/Release/net6.0/StgsharpEnvDebug.AssemblyInfo.cs +++ b/源代码/StgsharpEnvDebug/obj/Release/net6.0/StgsharpEnvDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+66efce19fcb461782c49255dc5500144f8c267e6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] [assembly: System.Reflection.AssemblyProductAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]