diff --git a/内核源代码/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin b/内核源代码/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin index f3f84e26..3528c3da 100644 Binary files a/内核源代码/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin and b/内核源代码/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin differ diff --git a/内核源代码/.vs/ProjectEvaluation/stgsharp.projects.v9.bin b/内核源代码/.vs/ProjectEvaluation/stgsharp.projects.v9.bin index a3d63237..04b2538e 100644 Binary files a/内核源代码/.vs/ProjectEvaluation/stgsharp.projects.v9.bin and b/内核源代码/.vs/ProjectEvaluation/stgsharp.projects.v9.bin differ diff --git a/内核源代码/.vs/ProjectEvaluation/stgsharp.strings.v9.bin b/内核源代码/.vs/ProjectEvaluation/stgsharp.strings.v9.bin index 1cbcce60..9d94ac8e 100644 Binary files a/内核源代码/.vs/ProjectEvaluation/stgsharp.strings.v9.bin and b/内核源代码/.vs/ProjectEvaluation/stgsharp.strings.v9.bin differ diff --git a/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin b/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin index c7bf1772..f6b9127e 100644 Binary files a/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin and b/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin differ diff --git a/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin b/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin index 4c288fa2..52ce0d59 100644 Binary files a/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin and b/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin differ diff --git a/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin b/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin index b85cb7da..57d893a9 100644 Binary files a/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin and b/内核源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin differ diff --git a/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db new file mode 100644 index 00000000..5642632e Binary files /dev/null and b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db new file mode 100644 index 00000000..fb7bb0f5 Binary files /dev/null and b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db differ diff --git a/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm new file mode 100644 index 00000000..2eb24f9d Binary files /dev/null and b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm differ diff --git a/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal new file mode 100644 index 00000000..2fcc9971 Binary files /dev/null and b/内核源代码/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal differ diff --git a/内核源代码/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 b/内核源代码/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 index de29a49a..4db37a43 100644 Binary files a/内核源代码/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 and b/内核源代码/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/08c7e83f-f953-4d1f-b1f0-2cc2f63a4f86.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/08c7e83f-f953-4d1f-b1f0-2cc2f63a4f86.vsidx new file mode 100644 index 00000000..44b48b3c Binary files /dev/null and b/内核源代码/.vs/StgSharp/FileContentIndex/08c7e83f-f953-4d1f-b1f0-2cc2f63a4f86.vsidx differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/25fbfe01-64be-4fcf-ace0-636275168236.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/25fbfe01-64be-4fcf-ace0-636275168236.vsidx deleted file mode 100644 index 282b90dc..00000000 Binary files a/内核源代码/.vs/StgSharp/FileContentIndex/25fbfe01-64be-4fcf-ace0-636275168236.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/5e286df3-ce59-401f-bc25-c646e6caa682.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/5e286df3-ce59-401f-bc25-c646e6caa682.vsidx deleted file mode 100644 index 30a8398f..00000000 Binary files a/内核源代码/.vs/StgSharp/FileContentIndex/5e286df3-ce59-401f-bc25-c646e6caa682.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/a2a6e272-c09e-4ab6-b9cd-e5bc799ca3aa.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/a2a6e272-c09e-4ab6-b9cd-e5bc799ca3aa.vsidx new file mode 100644 index 00000000..b625ab59 Binary files /dev/null and b/内核源代码/.vs/StgSharp/FileContentIndex/a2a6e272-c09e-4ab6-b9cd-e5bc799ca3aa.vsidx differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/b2af4b15-2005-45b7-bc0b-2544eeb4c802.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/b2af4b15-2005-45b7-bc0b-2544eeb4c802.vsidx new file mode 100644 index 00000000..6a8e8faa Binary files /dev/null and b/内核源代码/.vs/StgSharp/FileContentIndex/b2af4b15-2005-45b7-bc0b-2544eeb4c802.vsidx differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/d86c618f-5e44-46d9-b6ab-fcb2f061a544.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/d86c618f-5e44-46d9-b6ab-fcb2f061a544.vsidx new file mode 100644 index 00000000..35c13ae3 Binary files /dev/null and b/内核源代码/.vs/StgSharp/FileContentIndex/d86c618f-5e44-46d9-b6ab-fcb2f061a544.vsidx differ diff --git a/内核源代码/.vs/StgSharp/FileContentIndex/f29e382a-2eb4-4f7e-9bd4-3da0e3848780.vsidx b/内核源代码/.vs/StgSharp/FileContentIndex/f29e382a-2eb4-4f7e-9bd4-3da0e3848780.vsidx new file mode 100644 index 00000000..e42cba08 Binary files /dev/null and b/内核源代码/.vs/StgSharp/FileContentIndex/f29e382a-2eb4-4f7e-9bd4-3da0e3848780.vsidx differ diff --git a/内核源代码/.vs/StgSharp/v17/.futdcache.v2 b/内核源代码/.vs/StgSharp/v17/.futdcache.v2 index 4158a3fc..894d8fbf 100644 Binary files a/内核源代码/.vs/StgSharp/v17/.futdcache.v2 and b/内核源代码/.vs/StgSharp/v17/.futdcache.v2 differ diff --git a/内核源代码/.vs/StgSharp/v17/.suo b/内核源代码/.vs/StgSharp/v17/.suo index dbe230ab..053638b1 100644 Binary files a/内核源代码/.vs/StgSharp/v17/.suo and b/内核源代码/.vs/StgSharp/v17/.suo differ diff --git a/内核源代码/.vs/StgSharp/v17/DocumentLayout.backup.json b/内核源代码/.vs/StgSharp/v17/DocumentLayout.backup.json new file mode 100644 index 00000000..8245954a --- /dev/null +++ b/内核源代码/.vs/StgSharp/v17/DocumentLayout.backup.json @@ -0,0 +1,35 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Rectangle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-10-06T17:55:17.338Z" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/内核源代码/.vs/StgSharp/v17/DocumentLayout.json b/内核源代码/.vs/StgSharp/v17/DocumentLayout.json index c79a23af..0ca412c0 100644 --- a/内核源代码/.vs/StgSharp/v17/DocumentLayout.json +++ b/内核源代码/.vs/StgSharp/v17/DocumentLayout.json @@ -3,8 +3,32 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{5EEA27B3-8FB1-42A0-B710-228923C529C0}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5EEA27B3-8FB1-42A0-B710-228923C529C0}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\element\\expconst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -14,24 +38,96 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 4, "Children": [ { - "$type": "Bookmark", - "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + "$type": "Document", + "DocumentIndex": 1, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "ViewState": "AgIAADIAAAAAAAAAAAAUwEAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:33:29.273Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ExpSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpSchema.cs", + "ViewState": "AgIAALcAAAAAAAAAAAAkwMcAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:28:02.148Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "ExpElementInstanceBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "ViewState": "AgIAAC4AAAAAAAAAAIA5wDcAAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:27:26.12Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpToken.cs", + "ViewState": "AgIAADwAAAAAAAAAAAAAAEAAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:26:18.196Z", + "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 0, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAwwCUAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:25:22.494Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ViewState": "AgIAADkAAAAAAAAAAAAkwEkAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:24:24.946Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, "Title": "Rectangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", - "ViewState": "AgIAABkAAAAAAAAAAADwvzcAAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-10-06T17:55:17.338Z", - "EditorCaption": "" + "WhenOpened": "2024-10-06T17:55:17.338Z" } ] } diff --git a/内核源代码/.vs/StgSharp/v17/Solution.VC.db b/内核源代码/.vs/StgSharp/v17/Solution.VC.db index cfa49738..e1f6a685 100644 Binary files a/内核源代码/.vs/StgSharp/v17/Solution.VC.db and b/内核源代码/.vs/StgSharp/v17/Solution.VC.db differ diff --git a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db index 5bccee4c..95ae7c46 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db and b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db index 64dbad60..5a8b8928 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db and b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db differ diff --git a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm index f23fa901..b7830f2e 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm and b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm differ diff --git a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal index 304fcd27..b9001ec4 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal and b/内核源代码/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal differ diff --git a/内核源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 b/内核源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 index bc07a8bc..4508b5f0 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 and b/内核源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/18320af7-5f66-4ccc-a515-505f73737605.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/18320af7-5f66-4ccc-a515-505f73737605.vsidx new file mode 100644 index 00000000..f348a770 Binary files /dev/null and b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/18320af7-5f66-4ccc-a515-505f73737605.vsidx differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/4671fd0b-8c96-4713-98ff-e808a25fdb2a.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/4671fd0b-8c96-4713-98ff-e808a25fdb2a.vsidx new file mode 100644 index 00000000..8ba60ca8 Binary files /dev/null and b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/4671fd0b-8c96-4713-98ff-e808a25fdb2a.vsidx differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/54e958d5-c565-4cd4-8989-684bde11af18.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/54e958d5-c565-4cd4-8989-684bde11af18.vsidx new file mode 100644 index 00000000..7181aa4f Binary files /dev/null and b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/54e958d5-c565-4cd4-8989-684bde11af18.vsidx differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/7c553b0b-aa30-44d4-938f-bdb61a50e5f0.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/7c553b0b-aa30-44d4-938f-bdb61a50e5f0.vsidx deleted file mode 100644 index 1237b855..00000000 Binary files a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/7c553b0b-aa30-44d4-938f-bdb61a50e5f0.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/9b973e85-d20d-43cf-8d8e-f5710021940d.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/9b973e85-d20d-43cf-8d8e-f5710021940d.vsidx new file mode 100644 index 00000000..f7447618 Binary files /dev/null and b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/9b973e85-d20d-43cf-8d8e-f5710021940d.vsidx differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/b730c963-af99-40a5-8ac1-aa7ee748bd1f.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/b730c963-af99-40a5-8ac1-aa7ee748bd1f.vsidx deleted file mode 100644 index f4a996b4..00000000 Binary files a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/b730c963-af99-40a5-8ac1-aa7ee748bd1f.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/bebd8272-f1da-43d8-967b-447da0be7335.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/bebd8272-f1da-43d8-967b-447da0be7335.vsidx deleted file mode 100644 index 438bea91..00000000 Binary files a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/bebd8272-f1da-43d8-967b-447da0be7335.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/cbeffca0-afbc-4e9b-af9d-c8f6074ffa24.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/cbeffca0-afbc-4e9b-af9d-c8f6074ffa24.vsidx new file mode 100644 index 00000000..e95c03f2 Binary files /dev/null and b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/cbeffca0-afbc-4e9b-af9d-c8f6074ffa24.vsidx differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/ce0faf02-9cf7-4b0c-94e9-2b71ec774fc1.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/ce0faf02-9cf7-4b0c-94e9-2b71ec774fc1.vsidx deleted file mode 100644 index 2e15b65a..00000000 Binary files a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/ce0faf02-9cf7-4b0c-94e9-2b71ec774fc1.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/f230c4ac-7876-4a4b-8da7-04cd04fd6aef.vsidx b/内核源代码/.vs/StgSharpDevelop/FileContentIndex/f230c4ac-7876-4a4b-8da7-04cd04fd6aef.vsidx deleted file mode 100644 index 71279933..00000000 Binary files a/内核源代码/.vs/StgSharpDevelop/FileContentIndex/f230c4ac-7876-4a4b-8da7-04cd04fd6aef.vsidx and /dev/null differ diff --git a/内核源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 b/内核源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 index b3b43bae..06409d85 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 dfced524..63102971 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/v17/.suo and b/内核源代码/.vs/StgSharpDevelop/v17/.suo differ diff --git a/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json b/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json index 972ad024..4a469b0e 100644 --- a/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json +++ b/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json @@ -3,287 +3,283 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expexpressiontree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expexpressiontree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\buildin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\buildin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\exprepeat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\exprepeat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expliteraltoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expliteraltoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expiftoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expiftoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expelementbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expelementbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\buildin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\buildin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expswitchtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expswitchtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\global.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\stgsharp.common.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\stgsharp.common.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\builtintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\builtintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\keymultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\keymultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\istringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\istringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\step\\reader\\stepheadreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\step\\reader\\stepheadreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\environment\\dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\environment\\dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhalfnv.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhalfnv.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\step\\filestructure\\stepexpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\step\\filestructure\\stepexpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\sthsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\sthsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\sthsharp.model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\sthsharp.model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\logic\\plaingeometrycollisionsensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\logic\\plaingeometrycollisionsensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\faketype\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\faketype\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\stgsgharp.generator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\stgsgharp.generator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\sourcegenerator\\bpnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\sourcegenerator\\bpnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\mvvm\\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\\\u5185\u6838\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:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\stgsharp.commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\stgsharp.commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\stgsgharp.generator.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\stgsgharp.generator.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\stgsharp.common.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\stgsharp.common.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vbo.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\\\u5185\u6838\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.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\controlling\\keyenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\controlling\\keyenum.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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\math\\linear\\matrix42.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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\stgsharp.script.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\stgsharp.script.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{10B5819F-2A62-41B6-980A-EB9E76A0E95C}|StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.terminaldialogue\\stgsharp.terminaldialogue.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{10B5819F-2A62-41B6-980A-EB9E76A0E95C}|StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj|solutionrelative:stgsharp.terminaldialogue\\stgsharp.terminaldialogue.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\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\\\u5185\u6838\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.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.model\\stgsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|solutionrelative:stgsharp.model\\stgsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\vulkan\\vkenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\vulkan\\vkenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\imageinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\imageinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\publictype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\publictype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\internalresource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\internalresource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\abstractsyntaxtree.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\ExpIfToken.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -304,6 +300,196 @@ { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpEntity.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\glfw.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\ClangLoad\\gl.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHalfNV.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\StructDefine.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\InternalIO.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glContext.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glConst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glEnum.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Entities\\IEntity.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\PlainGeometryCollisionSensor.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\Counter.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Collections\\CachePool.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.Commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\StgSharp.Commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewModel\\ViewModel.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\TextureProvider.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\CPUanimation\\ImageHelper.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHandle.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Image.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Controlling\\KeyEnum.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Vector.Orthogonalize.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glFunction.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Platform.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Dialogue.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Pixels.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\RenderStream.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Define\\BufferObjectBase.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Global.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewPort.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\framework.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Matrix42.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glApiManager.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\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\Reader\\StepHeadReader.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\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\SthSharp.Model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\FileStructure\\StepExpression.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\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\SthSharp.Model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpExpressionTree.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpToken.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpConst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpInit.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinType.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinConst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" } ], "DocumentGroupContainers": [ @@ -313,239 +499,965 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 7, + "SelectedChildIndex": 60, "Children": [ { "$type": "Document", - "DocumentIndex": 1, - "Title": "ExpCollectionInstance.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAcwEUAAABXAAAAAAAAAA==", + "DocumentIndex": 16, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAACUAAAAAAAAAAAAqwKMAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T14:21:51.86Z", + "WhenOpened": "2025-02-02T14:45:18.593Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 9, - "Title": "ExpCollection.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs \u2B24", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs \u2B24", - "ViewState": "AgIAACEAAAAAAAAAAAAiwDgAAAAAAAAAAAAAAA==", + "DocumentIndex": 19, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAACIAAAAAAAAAAIA0wDEAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T07:53:22.862Z", + "WhenOpened": "2025-02-02T14:44:58.989Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 3, - "Title": "ExpType.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "ViewState": "AgIAACEAAAAAAAAAAAAqwCcAAAAAAAAAAAAAAA==", + "DocumentIndex": 17, + "Title": "Global.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Global.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Global.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Global.cs", + "RelativeToolTip": "StgSharp.Common\\Global.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAmAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T07:37:04.155Z", + "WhenOpened": "2025-02-02T14:38:49.858Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 4, - "Title": "ExpRule.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpRule.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpRule.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpRule.cs \u2B24", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpRule.cs \u2B24", - "ViewState": "AgIAABoAAAAAAAAAAAAswCkAAABFAAAAAAAAAA==", + "DocumentIndex": 20, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAAFsAAAAAAAAAAIA0wGoAAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T07:36:49.736Z", + "WhenOpened": "2025-02-02T14:38:41.321Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 5, - "Title": "ExpFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAswCsAAABJAAAAAAAAAA==", + "DocumentIndex": 18, + "Title": "M128.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAiwC4AAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T05:09:34.68Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "ExpEntity.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "ViewState": "AgIAADEAAAAAAAAAAABDwCwAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T03:11:58.736Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "ExpConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "ViewState": "AgIAABYAAAAAAAAAAAA1wCYAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T03:09:00.909Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "ExpExpressionTree.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "ViewState": "AgIAABEAAAAAAAAAAAAgwCQAAAAuAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-26T04:03:40.189Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 10, - "Title": "AbstractSyntaxTree.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\AbstractSyntaxTree.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\AbstractSyntaxTree.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\AbstractSyntaxTree.cs", - "RelativeToolTip": "StgSharp.Modeling\\AbstractSyntaxTree.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAABGAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T14:58:39.546Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 11, - "Title": "IExpressionToken.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IExpressionToken.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\IExpressionToken.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IExpressionToken.cs", - "RelativeToolTip": "StgSharp.Modeling\\IExpressionToken.cs", - "ViewState": "AgIAAAIAAAAAAAAAAAA3wA8AAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T05:42:59.694Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "ExpToken.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpToken.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpToken.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpToken.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpToken.cs", - "ViewState": "AgIAADcAAAAAAAAAAIA5wDsAAAAaAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T05:42:41.444Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 71, - "Title": "ExpCollection.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpCollection.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpCollection.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAnAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T05:41:19.849Z" - }, - { - "$type": "Document", - "DocumentIndex": 72, - "Title": "ExpRule.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpRule.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpRule.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T12:33:08.481Z" - }, - { - "$type": "Document", - "DocumentIndex": 73, - "Title": "ExpFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpFunction.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T11:30:53.865Z" - }, - { - "$type": "Document", - "DocumentIndex": 74, - "Title": "ExpType.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpType.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpType.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T10:20:07.164Z" - }, - { - "$type": "Document", - "DocumentIndex": 15, - "Title": "Exceptions.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Exceptions.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Exceptions.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Exceptions.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Exceptions.cs", - "ViewState": "AgIAADAAAAAAAAAAAAA3wEEAAACFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T06:23:41.639Z", + "WhenOpened": "2025-02-02T14:38:06.028Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 22, + "Title": "ColumnSet3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwCoAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T14:37:46.284Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 30, + "Title": "IStringHashMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T09:10:55.793Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpType.cs \u2B24", + "ViewState": "AgIAABkAAAAAAAAAAIA4wCYAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:31.522Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpRule.cs \u2B24", + "ViewState": "AgIAACMAAAAAAAAAAAAEwC4AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:26.812Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpFunction.cs \u2B24", + "ViewState": "AgIAACEAAAAAAAAAAAArwC0AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:44.132Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "ExpCollectionInstance.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs \u2B24", + "ViewState": "AgIAAB4AAAAAAAAAAIA4wCwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:18.867Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ExpSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchema.cs", + "ViewState": "AgIAAE0AAAAAAAAAAAAowFgAAABMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:08:05.896Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 35, + "Title": "StgSharp.Common", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeDocumentMoniker": "StgSharp.Common\\StgSharp.Common.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeToolTip": "StgSharp.Common\\StgSharp.Common.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-02T04:58:01.889Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 121, + "Title": "smmintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ViewState": "AgIAAL0AAAAAAAAAAAAmwMgAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:10.906Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 122, + "Title": "intrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ViewState": "AgIAAJMCAAAAAAAAAAAmwJ4CAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:07.411Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 39, + "Title": "stb_image.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeDocumentMoniker": "StgSharp.C\\stb_image.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeToolTip": "StgSharp.C\\stb_image.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:31:27.068Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "mat2.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat2.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeToolTip": "StgSharp.C\\mat2.c", + "ViewState": "AgIAABAAAAAAAAAAAAAUwB4AAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T12:00:34.568Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 42, + "Title": "mat4.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat4.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeToolTip": "StgSharp.C\\mat4.c", + "ViewState": "AgIAAD8AAAAAAAAAAAAowAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:51.767Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "mat3.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat3.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeToolTip": "StgSharp.C\\mat3.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:49.386Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "StgSharp.Script", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeDocumentMoniker": "StgSharp.Script\\StgSharp.Script.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeToolTip": "StgSharp.Script\\StgSharp.Script.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T10:50:18.055Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 50, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\RenderStream.cs", + "ViewState": "AgIAAKkAAAAAAAAAAIA0wNQAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T10:08:45.143Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\View\\ViewMain.cs", + "ViewState": "AgIAADIAAAAAAAAAAIA2wD8AAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T09:52:43.909Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 36, + "Title": "StgSharpDebug.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAA1AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T05:19:07.003Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 40, + "Title": "NewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\NewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeToolTip": "StgSharpDebug\\View\\NewRender.cs", + "ViewState": "AgIAACEAAAAAAAAAAIA0wC4AAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T05:16:41.098Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 52, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\InternalIO.cs", + "ViewState": "AgIAACsAAAAAAAAAAAAcwDQAAAAWAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T05:09:10.563Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 54, + "Title": "StgSharp.Model.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\StgSharp.Model.csproj", + "RelativeDocumentMoniker": "StgSharp.Model\\StgSharp.Model.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\StgSharp.Model.csproj", + "RelativeToolTip": "StgSharp.Model\\StgSharp.Model.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T04:53:57.734Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "StgSharp.Common.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeDocumentMoniker": "StgSharp.Common\\StgSharp.Common.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeToolTip": "StgSharp.Common\\StgSharp.Common.csproj", + "ViewState": "AgIAADcAAAAAAAAAAAA1wEgAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T04:53:22.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 38, + "Title": "intrinsic.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeDocumentMoniker": "StgSharp.C\\intrinsic.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeToolTip": "StgSharp.C\\intrinsic.c", + "ViewState": "AgIAAD8AAAAAAAAAAAAswFQAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T04:44:14.087Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "Lable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\Lable.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\Lable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\Lable.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\Lable.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAgwDgAAAArAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:24:59.826Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "IntrinsicContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAcwDMAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:22:49.291Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 55, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "ViewState": "AgIAAOoSAAAAAAAAAAA5wPkSAAA9AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:20:23.873Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 56, + "Title": "vkEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAADEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:16:05.735Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 57, + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "ViewState": "AgIAAEgAAAAAAAAAAAA1wIEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:25:21.859Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 60, + "Title": "gl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ViewState": "AgIAADUAAAAAAAAAAAAxwEgAAABBAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:20:57.08Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 58, + "Title": "ImageInfo.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ImageInfo.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\ImageInfo.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ImageInfo.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\ImageInfo.cs", + "ViewState": "AgIAAEsAAAAAAAAAAAAuwF0AAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:20:17.135Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 59, + "Title": "publicType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\publicType.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\publicType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\publicType.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\publicType.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wDIAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:19:35.334Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 61, + "Title": "InternalResource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalResource.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\InternalResource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalResource.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\InternalResource.cs", + "ViewState": "AgIAABkAAAAAAAAAAAA5wCcAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:18:37.837Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "StgSharpC.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeDocumentMoniker": "StgSharp.C\\StgSharpC.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeToolTip": "StgSharp.C\\StgSharpC.h", + "ViewState": "AgIAABUAAAAAAAAAAIA2wCUAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:22:45.65Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "ssc_intrinsic.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeDocumentMoniker": "StgSharp.C\\ssc_intrinsic.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeToolTip": "StgSharp.C\\ssc_intrinsic.h", + "ViewState": "AgIAABkAAAAAAAAAAAA5wCAAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:13:17.69Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "hash.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeDocumentMoniker": "StgSharp.C\\hash.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeToolTip": "StgSharp.C\\hash.c", + "ViewState": "AgIAACQAAAAAAAAAAAAMwDEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T02:12:53.091Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "KeyMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "ViewState": "AgIAAEIAAAAAAAAAAAAowEcAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T01:26:33.462Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 63, + "Title": "Shader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "ViewState": "AgIAAGYAAAAAAAAAAAAIwHoAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T14:51:26.007Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 64, + "Title": "ShaderGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "ViewState": "AgIAAD8AAAAAAAAAAAA6wE0AAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T14:23:42.591Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 62, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAAPIBAAAAAAAAAAAEwAgCAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T14:23:13.006Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ExpEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpEntity.cs \u2B24", + "ViewState": "AgIAAB8AAAAAAAAAAAArwCsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T03:23:40.771Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "ExpLiteralToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAAAwFQAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T13:29:07.592Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 66, + "Title": "AbstractSyntaxTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeToolTip": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ViewState": "AgIAADEAAAAAAAAAAAAqwEUAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:24:37.33Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "IExpressionToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IExpressionToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\IExpressionToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IExpressionToken.cs", + "RelativeToolTip": "StgSharp.Script\\IExpressionToken.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAqwCcAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:23:34.89Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ExpRepeat.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "ViewState": "AgIAAEMAAAAAAAAAAAAUwFUAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:19:24.455Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "ExpReader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpReader.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpReader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpReader.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpReader.cs", + "ViewState": "AgIAAC0AAAAAAAAAAAAuwAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T06:40:23.62Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "ExpSwitchToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs \u2B24", + "ViewState": "AgIAACYAAAAAAAAAAAAjwDMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T03:55:57.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "BuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wCYAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:58:12.25Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "ExpElementInstanceBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ViewState": "AgIAADkAAAAAAAAAAAAmwGUAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:52:10.549Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 65, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ViewState": "AgIAAEMAAAAAAAAAAIBAwDgAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:50:15.736Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "ExpSchemaSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAAywKwAAABPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:51:49.061Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpToken.cs", + "ViewState": "AgIAADMAAAAAAAAAAAAcwEMAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:49:36.742Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "ExpIfToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs \u2B24", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs \u2B24", + "ViewState": "AgIAABkAAAAAAAAAAAAkwAkAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:12.188Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "Exceptions.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Exceptions.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Exceptions.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Exceptions.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Exceptions.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAuwCwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:11.545Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAewEgAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:34:20.019Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "ExpLogic.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpLogic.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpLogic.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpLogic.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpLogic.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:26:02.08Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ExpCompile.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpCompile.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpCompile.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpCompile.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpCompile.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAAiwFsAAAA3AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:21:02.074Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 67, + "Title": "ExpIfToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:19:15.148Z" + }, + { + "$type": "Document", + "DocumentIndex": 114, + "Title": "ExpExpressionTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:41:21.842Z" + }, + { + "$type": "Document", + "DocumentIndex": 115, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:32:47.772Z" + }, + { + "$type": "Document", + "DocumentIndex": 116, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:50.179Z" + }, + { + "$type": "Document", + "DocumentIndex": 117, + "Title": "ExpInit.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpInit.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpInit.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:00.82Z" + }, + { + "$type": "Document", + "DocumentIndex": 118, + "Title": "BuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:06:29.505Z" + }, + { + "$type": "Document", + "DocumentIndex": 119, + "Title": "BuiltinConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:03:33.572Z" + }, + { + "$type": "Document", + "DocumentIndex": 49, + "Title": "StgSharp.TerminalDialogue.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "RelativeDocumentMoniker": "StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "RelativeToolTip": "StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "ViewState": "AgIAABEAAAAAAAAAAAAgwCQAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-01-29T08:02:17.589Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 120, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T07:24:26.837Z" + }, + { + "$type": "Document", + "DocumentIndex": 70, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-25T05:41:19.849Z" + }, + { + "$type": "Document", + "DocumentIndex": 71, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T12:33:08.481Z" + }, + { + "$type": "Document", + "DocumentIndex": 72, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T11:30:53.865Z" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T10:20:07.164Z" + }, + { + "$type": "Document", + "DocumentIndex": 110, "Title": "StepHeadReader.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", "RelativeToolTip": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAxwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-24T06:17:36.213Z" }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 75, "Title": "glfw.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\glfw.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", "RelativeToolTip": "StgSharp\\Internal\\glfw.cs", - "ViewState": "AgIAACMAAAAAAAAAAAAiwDAAAAAvAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-23T14:17:06.842Z" }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 68, "Title": "ExpConst.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs", "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpConst.cs", @@ -556,144 +1468,85 @@ }, { "$type": "Document", - "DocumentIndex": 12, - "Title": "IScriptSourceProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IScriptSourceProvider.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\IScriptSourceProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IScriptSourceProvider.cs", - "RelativeToolTip": "StgSharp.Modeling\\IScriptSourceProvider.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwAgAAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T11:22:33.535Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 13, - "Title": "ScriptSourceTransmitter.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "RelativeToolTip": "StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAA2wCEAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T11:21:54.656Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 31, + "DocumentIndex": 76, "Title": "gl.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\ClangLoad\\gl.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", "RelativeToolTip": "StgSharp\\Internal\\ClangLoad\\gl.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAkwDIAAAAzAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:59:46.372Z" }, { "$type": "Document", - "DocumentIndex": 32, + "DocumentIndex": 77, "Title": "glHalfNV.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", - "ViewState": "AgIAADIAAAAAAAAAAAA0wCgAAAAVAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:55:47.744Z" }, { "$type": "Document", - "DocumentIndex": 34, + "DocumentIndex": 78, "Title": "StructDefine.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\StructDefine.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", "RelativeToolTip": "StgSharp\\Internal\\StructDefine.cs", - "ViewState": "AgIAABcAAAAAAAAAAAA4wCEAAAAfAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:47:28.65Z" }, { "$type": "Document", - "DocumentIndex": 36, + "DocumentIndex": 79, "Title": "InternalIO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\InternalIO.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", "RelativeToolTip": "StgSharp\\Internal\\InternalIO.cs", - "ViewState": "AgIAAB4AAAAAAAAAAAAnwCsAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:26:14.827Z" }, { "$type": "Document", - "DocumentIndex": 28, + "DocumentIndex": 80, "Title": "glContext.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glContext.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glContext.cs", - "ViewState": "AgIAAIUBAAAAAAAAAAAkwJQBAABHAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:25:50.055Z" }, { "$type": "Document", - "DocumentIndex": 38, + "DocumentIndex": 81, "Title": "glConst.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glConst.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glConst.cs", - "ViewState": "AgIAABkAAAAAAAAAAAA5wCEAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:25:22.133Z" }, { "$type": "Document", - "DocumentIndex": 35, + "DocumentIndex": 82, "Title": "glEnum.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAmwM4AAAAgAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:24:52.368Z" }, { "$type": "Document", - "DocumentIndex": 8, - "Title": "ExpElementBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "ViewState": "AgIAACQAAAAAAAAAAADgvzIAAAAaAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T07:57:52.248Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 17, - "Title": "ExpSchema.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpSchema.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpSchema.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpSchema.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpSchema.cs", - "ViewState": "AgIAAA0BAAAAAAAAAAAkwFIBAAAtAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T07:56:10.6Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 41, - "Title": "SthSharp.Model", + "DocumentIndex": 111, + "Title": "SthSharp.Model.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", "RelativeDocumentMoniker": "SthSharp.Model\\SthSharp.Model.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", @@ -703,538 +1556,431 @@ }, { "$type": "Document", - "DocumentIndex": 39, + "DocumentIndex": 112, "Title": "StepExpression.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", "RelativeToolTip": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", - "ViewState": "AgIAACkAAAAAAAAAAIBCwHIAAAARAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T05:33:13.815Z" }, { "$type": "Document", - "DocumentIndex": 16, - "Title": "ExpReader.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpReader.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpReader.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpReader.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpReader.cs", - "ViewState": "AgIAAEEAAAAAAAAAAAAowFYAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T05:32:54.95Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 42, + "DocumentIndex": 83, "Title": "IEntity.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", "RelativeToolTip": "StgSharp\\Entities\\IEntity.cs", - "ViewState": "AgIAAD4AAAAAAAAAAAA9wE0AAABIAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T05:32:22.664Z" }, { "$type": "Document", - "DocumentIndex": 43, + "DocumentIndex": 84, "Title": "PlainGeometryCollisionSensor.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", "RelativeToolTip": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", - "ViewState": "AgIAADgAAAAAAAAAAAAqwDgAAAAwAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T05:02:23.12Z" }, { "$type": "Document", - "DocumentIndex": 44, + "DocumentIndex": 85, "Title": "Counter.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Counter.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", "RelativeToolTip": "StgSharp\\Logic\\Counter.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAxwEQAAAAyAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T04:53:50.632Z" }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 86, "Title": "CachePool.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", "RelativeDocumentMoniker": "StgSharp\\Collections\\CachePool.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", "RelativeToolTip": "StgSharp\\Collections\\CachePool.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAkwDYAAAAwAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T04:52:43.349Z" }, { "$type": "Document", - "DocumentIndex": 45, - "Title": "global.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\global.cs", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\global.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\global.cs", - "RelativeToolTip": "StgSgharp.Generator.Expression\\global.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T04:49:20.091Z" - }, - { - "$type": "Document", - "DocumentIndex": 46, - "Title": "PartialDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "RelativeToolTip": "StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAOAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T04:27:22.651Z" - }, - { - "$type": "Document", - "DocumentIndex": 48, - "Title": "BpNodeGenerator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "RelativeToolTip": "StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "ViewState": "AgIAAB8AAAAAAAAAAAAzwC4AAABIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T04:25:41.809Z" - }, - { - "$type": "Document", - "DocumentIndex": 75, + "DocumentIndex": 74, "Title": "ExpEntity.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpEntity.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpEntity.cs", - "ViewState": "AgIAADoAAAAAAAAAAAAYwEkAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T04:23:23.704Z" }, { "$type": "Document", - "DocumentIndex": 40, + "DocumentIndex": 113, "Title": "SthSharp.Model.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", "RelativeDocumentMoniker": "SthSharp.Model\\SthSharp.Model.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", "RelativeToolTip": "SthSharp.Model\\SthSharp.Model.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAcAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", "WhenOpened": "2025-01-22T03:50:15.426Z" }, { "$type": "Document", - "DocumentIndex": 50, + "DocumentIndex": 51, "Title": "StgSharpDebug", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:20:20.734Z" + "WhenOpened": "2025-01-22T03:20:20.734Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 51, + "DocumentIndex": 32, "Title": "ViewModelMain.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", "RelativeDocumentMoniker": "StgSharpDebug\\ViewModelMain.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", "RelativeToolTip": "StgSharpDebug\\ViewModelMain.cs", - "ViewState": "AgIAAA8AAAAAAAAAAIBTwDsAAAAQAAAAAAAAAA==", + "ViewState": "AgIAADkAAAAAAAAAAIBBwDEAAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T03:18:57.741Z" - }, - { - "$type": "Document", - "DocumentIndex": 14, - "Title": "StgSharp.Script.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\StgSharp.Script.csproj", - "RelativeDocumentMoniker": "StgSharp.Modeling\\StgSharp.Script.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\StgSharp.Script.csproj", - "RelativeToolTip": "StgSharp.Modeling\\StgSharp.Script.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAKAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:17:47.885Z", + "WhenOpened": "2025-01-22T03:18:57.741Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 53, - "Title": "StgSgharp.Generator", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeToolTip": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:16:36.641Z" - }, - { - "$type": "Document", - "DocumentIndex": 54, + "DocumentIndex": 69, "Title": "Microsoft.Common.CurrentVersion.targets", "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", - "ViewState": "AgIAAE8HAAAAAAAAAABKwGEHAAAEAAAAAAAAAA==", + "ViewState": "AgIAAEcHAAAAAAAAAEBwwGEHAAAEAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|", - "WhenOpened": "2025-01-22T03:07:54.535Z" + "WhenOpened": "2025-01-22T03:07:54.535Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 47, - "Title": "StgSgharp.Generator.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeToolTip": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:06:50.242Z" - }, - { - "$type": "Document", - "DocumentIndex": 52, + "DocumentIndex": 87, "Title": "StgSharp.Commom.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.Commom.csproj", "RelativeDocumentMoniker": "StgSharp\\StgSharp.Commom.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.Commom.csproj", "RelativeToolTip": "StgSharp\\StgSharp.Commom.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", "WhenOpened": "2025-01-21T14:49:27.481Z" }, { "$type": "Document", - "DocumentIndex": 55, + "DocumentIndex": 53, "Title": "StgSharpTest", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeDocumentMoniker": "STgSharpTest\\StgSharpTest.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeToolTip": "STgSharpTest\\StgSharpTest.csproj", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-21T14:48:45.224Z" + "WhenOpened": "2025-01-21T14:48:45.224Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 45, "Title": "StgSharpTest.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeDocumentMoniker": "STgSharpTest\\StgSharpTest.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeToolTip": "STgSharpTest\\StgSharpTest.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAgAAAAAAAAAAAAxwB8AAAA7AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-21T14:48:36.279Z" + "WhenOpened": "2025-01-21T14:48:36.279Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 31, "Title": "UnitTest1.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", "RelativeDocumentMoniker": "STgSharpTest\\UnitTest1.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", "RelativeToolTip": "STgSharpTest\\UnitTest1.cs", - "ViewState": "AgIAADQAAAAAAAAAAAA4wEIAAAAIAAAAAAAAAA==", + "ViewState": "AgIAAEAAAAAAAAAAAIAwwEQAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-21T12:43:12.616Z" + "WhenOpened": "2025-01-21T12:43:12.616Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 88, "Title": "ViewModel.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", - "ViewState": "AgIAALEAAAAAAAAAAAAIwL8AAAApAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:42:22.888Z" }, { "$type": "Document", - "DocumentIndex": 58, + "DocumentIndex": 89, "Title": "TextureProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\TextureProvider.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", "RelativeToolTip": "StgSharp\\Graphics\\TextureProvider.cs", - "ViewState": "AgIAAEAAAAAAAAAAAAAowEgAAAAtAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:40:27.238Z" }, { "$type": "Document", - "DocumentIndex": 59, + "DocumentIndex": 90, "Title": "ImageHelper.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "ViewState": "AgIAAEEAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:40:10.936Z" }, { "$type": "Document", - "DocumentIndex": 33, + "DocumentIndex": 91, "Title": "glHandle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHandle.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:39:33.236Z" }, { "$type": "Document", - "DocumentIndex": 60, + "DocumentIndex": 92, "Title": "VBO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ViewState": "AgIAAIcAAAAAAAAAAAAnwJYAAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:33:21.083Z" }, { "$type": "Document", - "DocumentIndex": 61, + "DocumentIndex": 93, "Title": "EBO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ViewState": "AgIAAEAAAAAAAAAAAAAkwFAAAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:33:00.232Z" }, { "$type": "Document", - "DocumentIndex": 62, + "DocumentIndex": 94, "Title": "TextureGL.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ViewState": "AgIAAHkAAAAAAAAAAIBjwHsAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:32:46.745Z" }, { "$type": "Document", - "DocumentIndex": 63, + "DocumentIndex": 95, "Title": "Image.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", - "ViewState": "AgIAAJ0AAAAAAAAAAAAuwK8AAAA1AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:28:33.887Z" }, { "$type": "Document", - "DocumentIndex": 64, + "DocumentIndex": 96, "Title": "KeyEnum.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyEnum.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", "RelativeToolTip": "StgSharp\\Controlling\\KeyEnum.cs", - "ViewState": "AgIAAAcAAAAAAAAAAAAswLsAAAAYAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:28:09.467Z" }, { "$type": "Document", - "DocumentIndex": 65, + "DocumentIndex": 97, "Title": "Uniform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAEwFkAAAAnAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:43:39.963Z" }, { "$type": "Document", - "DocumentIndex": 66, + "DocumentIndex": 98, "Title": "Vector.Orthogonalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", - "ViewState": "AgIAAB4AAAAAAAAAAIAzwCgAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:35:59.396Z" }, { "$type": "Document", - "DocumentIndex": 37, + "DocumentIndex": 99, "Title": "glFunction.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAnwDEAAAAuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:34:56.352Z" }, { "$type": "Document", - "DocumentIndex": 67, + "DocumentIndex": 100, "Title": "Platform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeToolTip": "StgSharp\\Environment\\Platform.cs", - "ViewState": "AgIAAEsAAAAAAAAAAAAkwFsAAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:05:45.886Z" }, { "$type": "Document", - "DocumentIndex": 30, + "DocumentIndex": 101, "Title": "Dialogue.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Dialogue.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", "RelativeToolTip": "StgSharp\\Environment\\Dialogue.cs", - "ViewState": "AgIAAGwAAAAAAAAAAAAkwH0AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:04:56.665Z" }, { "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 102, "Title": "Pixels.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", - "ViewState": "AgIAADoAAAAAAAAAAAA2wEgAAAAFAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T06:23:16.042Z" }, { "$type": "Document", - "DocumentIndex": 57, + "DocumentIndex": 33, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Program.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", "RelativeToolTip": "StgSharpDebug\\Program.cs", - "ViewState": "AgIAABQAAAAAAAAAAAAkwCMAAAAUAAAAAAAAAA==", + "ViewState": "AgIAADcAAAAAAAAAAAAjwEYAAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-21T06:08:27.152Z" + "WhenOpened": "2025-01-21T06:08:27.152Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 56, + "DocumentIndex": 47, "Title": "Partical.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", "RelativeDocumentMoniker": "StgSharpDebug\\RenderStream\\Partical.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", "RelativeToolTip": "StgSharpDebug\\RenderStream\\Partical.cs", - "ViewState": "AgIAAAwBAAAAAAAAAAAqwB8BAAA7AAAAAAAAAA==", + "ViewState": "AgIAANgAAAAAAAAAAIAzwO0AAABGAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-21T04:59:25.115Z" + "WhenOpened": "2025-01-21T04:59:25.115Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 68, + "DocumentIndex": 103, "Title": "RenderStream.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeToolTip": "StgSharp\\Graphics\\RenderStream.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwKkAAAAIAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:22:43.965Z" }, { "$type": "Document", - "DocumentIndex": 69, + "DocumentIndex": 104, "Title": "BufferObjectBase.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwB4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:15:15.908Z" }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 105, "Title": "Global.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", "RelativeDocumentMoniker": "StgSharp\\Global.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", "RelativeToolTip": "StgSharp\\Global.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:14:27.337Z" }, { "$type": "Document", - "DocumentIndex": 49, + "DocumentIndex": 106, "Title": "ViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewPort.cs", - "ViewState": "AgIAACoAAAAAAAAAAAAxwB4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:12:28.029Z" }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 107, "Title": "framework.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAswGoAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T02:24:35.096Z" }, { "$type": "Document", - "DocumentIndex": 70, + "DocumentIndex": 108, "Title": "Matrix42.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix42.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix42.cs", - "ViewState": "AgIAABwAAAAAAAAAAAA2wCsAAAAhAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T02:24:24.915Z" }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 109, "Title": "glApiManager.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "ViewState": "AgIAAP0PAAAAAAAAAAAkwA0QAAA9AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T02:23:01.822Z" } diff --git a/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json b/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json index 9a2b80e5..6693d790 100644 --- a/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json +++ b/内核源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json @@ -3,287 +3,283 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\buildin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\buildin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expelementbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expelementbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expexpressiontree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expexpressiontree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\exprepeat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\exprepeat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\buildin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\buildin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expliteraltoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expliteraltoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expiftoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expiftoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\iexpressiontoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expswitchtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expswitchtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.modeling\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Modeling\\StgSharp.Script.csproj|solutionrelative:stgsharp.modeling\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\global.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\stgsharp.common.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\stgsharp.common.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\exceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\builtintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\builtintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\keymultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\keymultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\istringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\istringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\step\\reader\\stepheadreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\step\\reader\\stepheadreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\environment\\dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\environment\\dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhalfnv.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhalfnv.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\step\\filestructure\\stepexpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\step\\filestructure\\stepexpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\sthsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\sthsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\sthsharp.model\\sthsharp.model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|SthSharp.Model\\SthSharp.Model.csproj|solutionrelative:sthsharp.model\\sthsharp.model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\logic\\plaingeometrycollisionsensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\logic\\plaingeometrycollisionsensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\faketype\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\faketype\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\stgsgharp.generator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\stgsgharp.generator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\sourcegenerator\\bpnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\sourcegenerator\\bpnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\mvvm\\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\\\u5185\u6838\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:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\stgsharp.commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\stgsharp.commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsgharp.generator.expression\\stgsgharp.generator.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{9A678884-081A-4E28-8439-B08F4BC05791}|StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj|solutionrelative:stgsgharp.generator.expression\\stgsgharp.generator.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\stgsharp.common.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\stgsharp.common.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vbo.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\\\u5185\u6838\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.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\controlling\\keyenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\controlling\\keyenum.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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\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.Commom.csproj|solutionrelative:stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.Commom.csproj|solutionrelative:stgsharp\\math\\linear\\matrix42.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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\stgsharp.script.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\stgsharp.script.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{10B5819F-2A62-41B6-980A-EB9E76A0E95C}|StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.terminaldialogue\\stgsharp.terminaldialogue.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{10B5819F-2A62-41B6-980A-EB9E76A0E95C}|StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj|solutionrelative:stgsharp.terminaldialogue\\stgsharp.terminaldialogue.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\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\\\u5185\u6838\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.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\stgsharptest.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.model\\stgsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|solutionrelative:stgsharp.model\\stgsharp.model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\vulkan\\vkenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\vulkan\\vkenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\imageinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\imageinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\publictype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\publictype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\internalresource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\internalresource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\abstractsyntaxtree.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\ExpIfToken.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -304,6 +300,196 @@ { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpEntity.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\glfw.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\ClangLoad\\gl.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHalfNV.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\StructDefine.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\InternalIO.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glContext.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glConst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glEnum.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Entities\\IEntity.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\PlainGeometryCollisionSensor.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\Counter.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Collections\\CachePool.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.Commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\StgSharp.Commom.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewModel\\ViewModel.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\TextureProvider.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\CPUanimation\\ImageHelper.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHandle.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Image.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Controlling\\KeyEnum.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Vector.Orthogonalize.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glFunction.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Platform.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Dialogue.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Pixels.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\RenderStream.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Define\\BufferObjectBase.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Global.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewPort.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\framework.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Matrix42.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glApiManager.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\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\Reader\\StepHeadReader.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\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\SthSharp.Model.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\FileStructure\\StepExpression.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\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\SthSharp.Model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpExpressionTree.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpToken.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpConst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpInit.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinType.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinConst.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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" } ], "DocumentGroupContainers": [ @@ -313,239 +499,965 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 60, "Children": [ { "$type": "Document", - "DocumentIndex": 5, - "Title": "ExpCollectionInstance.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\buildin\\ExpCollectionInstance.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAcwEUAAABXAAAAAAAAAA==", + "DocumentIndex": 16, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAACUAAAAAAAAAAAAqwKMAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T14:21:51.86Z", + "WhenOpened": "2025-02-02T14:45:18.593Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 0, - "Title": "ExpCollection.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\buildin\\ExpCollection.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAqwCkAAAAwAAAAAAAAAA==", + "DocumentIndex": 19, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAACIAAAAAAAAAAIA0wDEAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T07:53:22.862Z", + "WhenOpened": "2025-02-02T14:44:58.989Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 7, - "Title": "ExpType.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpType.cs", - "ViewState": "AgIAACEAAAAAAAAAAAAqwCcAAAAAAAAAAAAAAA==", + "DocumentIndex": 17, + "Title": "Global.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Global.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Global.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Global.cs", + "RelativeToolTip": "StgSharp.Common\\Global.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAmAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T07:37:04.155Z", + "WhenOpened": "2025-02-02T14:38:49.858Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 8, - "Title": "ExpRule.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpRule.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpRule.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpRule.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpRule.cs", - "ViewState": "AgIAABoAAAAAAAAAAAAswCkAAABFAAAAAAAAAA==", + "DocumentIndex": 20, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAAFsAAAAAAAAAAIA0wGoAAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T07:36:49.736Z", + "WhenOpened": "2025-02-02T14:38:41.321Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, - "Title": "ExpFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpFunction.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAswCwAAAALAAAAAAAAAA==", + "DocumentIndex": 18, + "Title": "M128.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\M128.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAiwC4AAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T05:09:34.68Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "ExpEntity.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpEntity.cs", - "ViewState": "AgIAAC0AAAAAAAAAAAAywCoAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T03:11:58.736Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 9, - "Title": "ExpConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Element\\ExpConst.cs", - "ViewState": "AgIAABYAAAAAAAAAAAA1wCYAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-27T03:09:00.909Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "ExpExpressionTree.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpExpressionTree.cs", - "ViewState": "AgIAABEAAAAAAAAAAAAgwCQAAAAuAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-26T04:03:40.189Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 10, - "Title": "AbstractSyntaxTree.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\AbstractSyntaxTree.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\AbstractSyntaxTree.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\AbstractSyntaxTree.cs", - "RelativeToolTip": "StgSharp.Modeling\\AbstractSyntaxTree.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAABGAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T14:58:39.546Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 11, - "Title": "IExpressionToken.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IExpressionToken.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\IExpressionToken.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IExpressionToken.cs", - "RelativeToolTip": "StgSharp.Modeling\\IExpressionToken.cs", - "ViewState": "AgIAAAIAAAAAAAAAAAA3wA8AAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T05:42:59.694Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "ExpToken.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpToken.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpToken.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpToken.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpToken.cs", - "ViewState": "AgIAADcAAAAAAAAAAIA5wDsAAAAaAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T05:42:41.444Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 71, - "Title": "ExpCollection.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpCollection.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpCollection.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAnAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-25T05:41:19.849Z" - }, - { - "$type": "Document", - "DocumentIndex": 72, - "Title": "ExpRule.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpRule.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpRule.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T12:33:08.481Z" - }, - { - "$type": "Document", - "DocumentIndex": 73, - "Title": "ExpFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpFunction.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T11:30:53.865Z" - }, - { - "$type": "Document", - "DocumentIndex": 74, - "Title": "ExpType.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpType.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpType.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T10:20:07.164Z" - }, - { - "$type": "Document", - "DocumentIndex": 15, - "Title": "Exceptions.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Exceptions.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\Exceptions.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\Exceptions.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\Exceptions.cs", - "ViewState": "AgIAADAAAAAAAAAAAAA3wEEAAACFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-24T06:23:41.639Z", + "WhenOpened": "2025-02-02T14:38:06.028Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 22, + "Title": "ColumnSet3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\ColumnSet3.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwCoAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T14:37:46.284Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 30, + "Title": "IStringHashMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\IStringHashMultiplexer.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T09:10:55.793Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ViewState": "AgIAABkAAAAAAAAAAIA4wCYAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:31.522Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAEwC4AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:26.812Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ViewState": "AgIAACEAAAAAAAAAAAArwC0AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:44.132Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "ExpCollectionInstance.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ViewState": "AgIAAB4AAAAAAAAAAIA4wCwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:18.867Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ExpSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchema.cs", + "ViewState": "AgIAAE0AAAAAAAAAAAAowFgAAABMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:08:05.896Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 35, + "Title": "StgSharp.Common", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeDocumentMoniker": "StgSharp.Common\\StgSharp.Common.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeToolTip": "StgSharp.Common\\StgSharp.Common.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-02T04:58:01.889Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 121, + "Title": "smmintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ViewState": "AgIAAL0AAAAAAAAAAAAmwMgAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:10.906Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 122, + "Title": "intrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ViewState": "AgIAAJMCAAAAAAAAAAAmwJ4CAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:07.411Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 39, + "Title": "stb_image.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeDocumentMoniker": "StgSharp.C\\stb_image.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeToolTip": "StgSharp.C\\stb_image.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:31:27.068Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "mat2.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat2.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeToolTip": "StgSharp.C\\mat2.c", + "ViewState": "AgIAABAAAAAAAAAAAAAUwB4AAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T12:00:34.568Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 42, + "Title": "mat4.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat4.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeToolTip": "StgSharp.C\\mat4.c", + "ViewState": "AgIAAD8AAAAAAAAAAAAowAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:51.767Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "mat3.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat3.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeToolTip": "StgSharp.C\\mat3.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:49.386Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "StgSharp.Script", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeDocumentMoniker": "StgSharp.Script\\StgSharp.Script.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeToolTip": "StgSharp.Script\\StgSharp.Script.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T10:50:18.055Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 50, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\RenderStream.cs", + "ViewState": "AgIAAKkAAAAAAAAAAIA0wNQAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T10:08:45.143Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\View\\ViewMain.cs", + "ViewState": "AgIAADIAAAAAAAAAAIA2wD8AAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T09:52:43.909Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 36, + "Title": "StgSharpDebug.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAA1AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T05:19:07.003Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 40, + "Title": "NewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\NewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeToolTip": "StgSharpDebug\\View\\NewRender.cs", + "ViewState": "AgIAACEAAAAAAAAAAIA0wC4AAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T05:16:41.098Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 52, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\InternalIO.cs", + "ViewState": "AgIAACsAAAAAAAAAAAAcwDQAAAAWAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T05:09:10.563Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 54, + "Title": "StgSharp.Model.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\StgSharp.Model.csproj", + "RelativeDocumentMoniker": "StgSharp.Model\\StgSharp.Model.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\StgSharp.Model.csproj", + "RelativeToolTip": "StgSharp.Model\\StgSharp.Model.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T04:53:57.734Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "StgSharp.Common.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeDocumentMoniker": "StgSharp.Common\\StgSharp.Common.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\StgSharp.Common.csproj", + "RelativeToolTip": "StgSharp.Common\\StgSharp.Common.csproj", + "ViewState": "AgIAADcAAAAAAAAAAAA1wEgAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-01T04:53:22.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 38, + "Title": "intrinsic.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeDocumentMoniker": "StgSharp.C\\intrinsic.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeToolTip": "StgSharp.C\\intrinsic.c", + "ViewState": "AgIAAD8AAAAAAAAAAAAswFQAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T04:44:14.087Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "Lable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\Lable.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\Lable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\Lable.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\Lable.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAgwDgAAAArAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:24:59.826Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "IntrinsicContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAcwDMAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:22:49.291Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 55, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glConst.cs", + "ViewState": "AgIAAOoSAAAAAAAAAAA5wPkSAAA9AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:20:23.873Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 56, + "Title": "vkEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\Vulkan\\vkEnum.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAADEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T04:16:05.735Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 57, + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glEnum.cs", + "ViewState": "AgIAAEgAAAAAAAAAAAA1wIEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:25:21.859Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 60, + "Title": "gl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ViewState": "AgIAADUAAAAAAAAAAAAxwEgAAABBAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:20:57.08Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 58, + "Title": "ImageInfo.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ImageInfo.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\ImageInfo.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ImageInfo.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\ImageInfo.cs", + "ViewState": "AgIAAEsAAAAAAAAAAAAuwF0AAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:20:17.135Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 59, + "Title": "publicType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\publicType.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\publicType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\publicType.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\publicType.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wDIAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:19:35.334Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 61, + "Title": "InternalResource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalResource.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\InternalResource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalResource.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\InternalResource.cs", + "ViewState": "AgIAABkAAAAAAAAAAAA5wCcAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T03:18:37.837Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "StgSharpC.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeDocumentMoniker": "StgSharp.C\\StgSharpC.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeToolTip": "StgSharp.C\\StgSharpC.h", + "ViewState": "AgIAABUAAAAAAAAAAIA2wCUAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:22:45.65Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "ssc_intrinsic.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeDocumentMoniker": "StgSharp.C\\ssc_intrinsic.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeToolTip": "StgSharp.C\\ssc_intrinsic.h", + "ViewState": "AgIAABkAAAAAAAAAAAA5wCAAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:13:17.69Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "hash.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeDocumentMoniker": "StgSharp.C\\hash.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeToolTip": "StgSharp.C\\hash.c", + "ViewState": "AgIAACQAAAAAAAAAAAAMwDEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T02:12:53.091Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "KeyMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\KeyMultiplexer.cs", + "ViewState": "AgIAAEIAAAAAAAAAAAAowEcAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T01:26:33.462Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 63, + "Title": "Shader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", + "ViewState": "AgIAAGYAAAAAAAAAAAAIwHoAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T14:51:26.007Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 64, + "Title": "ShaderGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\ShaderEdit\\ShaderGenerator.cs", + "ViewState": "AgIAAD8AAAAAAAAAAAA6wE0AAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T14:23:42.591Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 62, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAAPIBAAAAAAAAAAAEwAgCAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T14:23:13.006Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ExpEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ViewState": "AgIAAB8AAAAAAAAAAAArwCsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T03:23:40.771Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "ExpLiteralToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpLiteralToken.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAAAwFQAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T13:29:07.592Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 66, + "Title": "AbstractSyntaxTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeToolTip": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ViewState": "AgIAADEAAAAAAAAAAAAqwEUAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:24:37.33Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "IExpressionToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IExpressionToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\IExpressionToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IExpressionToken.cs", + "RelativeToolTip": "StgSharp.Script\\IExpressionToken.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAqwCcAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:23:34.89Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ExpRepeat.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpRepeat.cs", + "ViewState": "AgIAAEMAAAAAAAAAAAAUwFUAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:19:24.455Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "ExpReader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpReader.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpReader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpReader.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpReader.cs", + "ViewState": "AgIAAC0AAAAAAAAAAAAuwAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T06:40:23.62Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "ExpSwitchToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpSwitchToken.cs", + "ViewState": "AgIAACYAAAAAAAAAAAAjwDMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T03:55:57.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "BuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\BuiltinType.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wCYAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:58:12.25Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "ExpElementInstanceBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ViewState": "AgIAADkAAAAAAAAAAAAmwGUAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:52:10.549Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 65, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ViewState": "AgIAAEMAAAAAAAAAAIBAwDgAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:50:15.736Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "ExpSchemaSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAAywKwAAABPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:51:49.061Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpToken.cs", + "ViewState": "AgIAADMAAAAAAAAAAAAcwEMAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:49:36.742Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "ExpIfToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpIfToken.cs", + "ViewState": "AgIAABkAAAAAAAAAAAAkwAkAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:12.188Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "Exceptions.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Exceptions.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Exceptions.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Exceptions.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Exceptions.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAuwCwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:11.545Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAewEgAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:34:20.019Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "ExpLogic.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpLogic.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpLogic.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpLogic.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpLogic.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:26:02.08Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ExpCompile.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpCompile.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpCompile.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpCompile.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpCompile.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAAiwF0AAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:21:02.074Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 67, + "Title": "ExpIfToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:19:15.148Z" + }, + { + "$type": "Document", + "DocumentIndex": 114, + "Title": "ExpExpressionTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:41:21.842Z" + }, + { + "$type": "Document", + "DocumentIndex": 115, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:32:47.772Z" + }, + { + "$type": "Document", + "DocumentIndex": 116, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:50.179Z" + }, + { + "$type": "Document", + "DocumentIndex": 117, + "Title": "ExpInit.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpInit.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpInit.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:00.82Z" + }, + { + "$type": "Document", + "DocumentIndex": 118, + "Title": "BuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:06:29.505Z" + }, + { + "$type": "Document", + "DocumentIndex": 119, + "Title": "BuiltinConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:03:33.572Z" + }, + { + "$type": "Document", + "DocumentIndex": 49, + "Title": "StgSharp.TerminalDialogue.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "RelativeDocumentMoniker": "StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "RelativeToolTip": "StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "ViewState": "AgIAABEAAAAAAAAAAAAgwCQAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-01-29T08:02:17.589Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 120, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T07:24:26.837Z" + }, + { + "$type": "Document", + "DocumentIndex": 70, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-25T05:41:19.849Z" + }, + { + "$type": "Document", + "DocumentIndex": 71, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T12:33:08.481Z" + }, + { + "$type": "Document", + "DocumentIndex": 72, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T11:30:53.865Z" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T10:20:07.164Z" + }, + { + "$type": "Document", + "DocumentIndex": 110, "Title": "StepHeadReader.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", "RelativeToolTip": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAxwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-24T06:17:36.213Z" }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 75, "Title": "glfw.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\glfw.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", "RelativeToolTip": "StgSharp\\Internal\\glfw.cs", - "ViewState": "AgIAACMAAAAAAAAAAAAiwDAAAAAvAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-23T14:17:06.842Z" }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 68, "Title": "ExpConst.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs", "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpConst.cs", @@ -556,144 +1468,85 @@ }, { "$type": "Document", - "DocumentIndex": 12, - "Title": "IScriptSourceProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IScriptSourceProvider.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\IScriptSourceProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\IScriptSourceProvider.cs", - "RelativeToolTip": "StgSharp.Modeling\\IScriptSourceProvider.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwAgAAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T11:22:33.535Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 13, - "Title": "ScriptSourceTransmitter.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "RelativeToolTip": "StgSharp.Modeling\\ScriptSourceTransmitter.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAA2wCEAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T11:21:54.656Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 31, + "DocumentIndex": 76, "Title": "gl.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\ClangLoad\\gl.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", "RelativeToolTip": "StgSharp\\Internal\\ClangLoad\\gl.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAkwDIAAAAzAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:59:46.372Z" }, { "$type": "Document", - "DocumentIndex": 32, + "DocumentIndex": 77, "Title": "glHalfNV.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", - "ViewState": "AgIAADIAAAAAAAAAAAA0wCgAAAAVAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:55:47.744Z" }, { "$type": "Document", - "DocumentIndex": 34, + "DocumentIndex": 78, "Title": "StructDefine.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\StructDefine.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", "RelativeToolTip": "StgSharp\\Internal\\StructDefine.cs", - "ViewState": "AgIAABcAAAAAAAAAAAA4wCEAAAAfAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:47:28.65Z" }, { "$type": "Document", - "DocumentIndex": 36, + "DocumentIndex": 79, "Title": "InternalIO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", "RelativeDocumentMoniker": "StgSharp\\Internal\\InternalIO.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", "RelativeToolTip": "StgSharp\\Internal\\InternalIO.cs", - "ViewState": "AgIAAB4AAAAAAAAAAAAnwCsAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:26:14.827Z" }, { "$type": "Document", - "DocumentIndex": 28, + "DocumentIndex": 80, "Title": "glContext.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glContext.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glContext.cs", - "ViewState": "AgIAAIUBAAAAAAAAAAAkwJQBAABHAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:25:50.055Z" }, { "$type": "Document", - "DocumentIndex": 38, + "DocumentIndex": 81, "Title": "glConst.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glConst.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glConst.cs", - "ViewState": "AgIAABkAAAAAAAAAAAA5wCEAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:25:22.133Z" }, { "$type": "Document", - "DocumentIndex": 35, + "DocumentIndex": 82, "Title": "glEnum.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAmwM4AAAAgAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T08:24:52.368Z" }, { "$type": "Document", - "DocumentIndex": 1, - "Title": "ExpElementBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpElementBase.cs", - "ViewState": "AgIAACYAAAAAAAAAAAAswDQAAAAuAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T07:57:52.248Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 17, - "Title": "ExpSchema.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpSchema.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpSchema.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpSchema.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpSchema.cs", - "ViewState": "AgIAAA0BAAAAAAAAAAAkwFIBAAAtAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T07:56:10.6Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 41, - "Title": "SthSharp.Model", + "DocumentIndex": 111, + "Title": "SthSharp.Model.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", "RelativeDocumentMoniker": "SthSharp.Model\\SthSharp.Model.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", @@ -703,538 +1556,431 @@ }, { "$type": "Document", - "DocumentIndex": 39, + "DocumentIndex": 112, "Title": "StepExpression.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", "RelativeToolTip": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", - "ViewState": "AgIAACkAAAAAAAAAAIBCwHIAAAARAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T05:33:13.815Z" }, { "$type": "Document", - "DocumentIndex": 16, - "Title": "ExpReader.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpReader.cs", - "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpReader.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpReader.cs", - "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpReader.cs", - "ViewState": "AgIAAEEAAAAAAAAAAAAowFYAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T05:32:54.95Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 42, + "DocumentIndex": 83, "Title": "IEntity.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", "RelativeToolTip": "StgSharp\\Entities\\IEntity.cs", - "ViewState": "AgIAAD4AAAAAAAAAAAA9wE0AAABIAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T05:32:22.664Z" }, { "$type": "Document", - "DocumentIndex": 43, + "DocumentIndex": 84, "Title": "PlainGeometryCollisionSensor.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", "RelativeToolTip": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", - "ViewState": "AgIAADgAAAAAAAAAAAAqwDgAAAAwAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T05:02:23.12Z" }, { "$type": "Document", - "DocumentIndex": 44, + "DocumentIndex": 85, "Title": "Counter.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Counter.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", "RelativeToolTip": "StgSharp\\Logic\\Counter.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAxwEQAAAAyAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T04:53:50.632Z" }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 86, "Title": "CachePool.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", "RelativeDocumentMoniker": "StgSharp\\Collections\\CachePool.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", "RelativeToolTip": "StgSharp\\Collections\\CachePool.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAkwDYAAAAwAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T04:52:43.349Z" }, { "$type": "Document", - "DocumentIndex": 45, - "Title": "global.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\global.cs", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\global.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\global.cs", - "RelativeToolTip": "StgSgharp.Generator.Expression\\global.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T04:49:20.091Z" - }, - { - "$type": "Document", - "DocumentIndex": 46, - "Title": "PartialDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "RelativeToolTip": "StgSgharp.Generator.Expression\\FakeType\\PartialDictionary.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAOAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T04:27:22.651Z" - }, - { - "$type": "Document", - "DocumentIndex": 48, - "Title": "BpNodeGenerator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "RelativeToolTip": "StgSgharp.Generator.Expression\\SourceGenerator\\BpNodeGenerator.cs", - "ViewState": "AgIAAB8AAAAAAAAAAAAzwC4AAABIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T04:25:41.809Z" - }, - { - "$type": "Document", - "DocumentIndex": 75, + "DocumentIndex": 74, "Title": "ExpEntity.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpEntity.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpEntity.cs", - "ViewState": "AgIAADoAAAAAAAAAAAAYwEkAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-22T04:23:23.704Z" }, { "$type": "Document", - "DocumentIndex": 40, + "DocumentIndex": 113, "Title": "SthSharp.Model.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", "RelativeDocumentMoniker": "SthSharp.Model\\SthSharp.Model.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\SthSharp.Model.csproj", "RelativeToolTip": "SthSharp.Model\\SthSharp.Model.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAcAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", "WhenOpened": "2025-01-22T03:50:15.426Z" }, { "$type": "Document", - "DocumentIndex": 50, + "DocumentIndex": 51, "Title": "StgSharpDebug", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:20:20.734Z" + "WhenOpened": "2025-01-22T03:20:20.734Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 51, + "DocumentIndex": 32, "Title": "ViewModelMain.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", "RelativeDocumentMoniker": "StgSharpDebug\\ViewModelMain.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", "RelativeToolTip": "StgSharpDebug\\ViewModelMain.cs", - "ViewState": "AgIAAA8AAAAAAAAAAIBTwDsAAAAQAAAAAAAAAA==", + "ViewState": "AgIAADkAAAAAAAAAAIBBwDEAAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-22T03:18:57.741Z" - }, - { - "$type": "Document", - "DocumentIndex": 14, - "Title": "StgSharp.Script.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\StgSharp.Script.csproj", - "RelativeDocumentMoniker": "StgSharp.Modeling\\StgSharp.Script.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\StgSharp.Script.csproj", - "RelativeToolTip": "StgSharp.Modeling\\StgSharp.Script.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAKAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:17:47.885Z", + "WhenOpened": "2025-01-22T03:18:57.741Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 53, - "Title": "StgSgharp.Generator", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeToolTip": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:16:36.641Z" - }, - { - "$type": "Document", - "DocumentIndex": 54, + "DocumentIndex": 69, "Title": "Microsoft.Common.CurrentVersion.targets", "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", - "ViewState": "AgIAAE8HAAAAAAAAAABKwGEHAAAEAAAAAAAAAA==", + "ViewState": "AgIAAEcHAAAAAAAAAEBwwGEHAAAEAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|", - "WhenOpened": "2025-01-22T03:07:54.535Z" + "WhenOpened": "2025-01-22T03:07:54.535Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 47, - "Title": "StgSgharp.Generator.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeDocumentMoniker": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "RelativeToolTip": "StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-22T03:06:50.242Z" - }, - { - "$type": "Document", - "DocumentIndex": 52, + "DocumentIndex": 87, "Title": "StgSharp.Commom.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.Commom.csproj", "RelativeDocumentMoniker": "StgSharp\\StgSharp.Commom.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.Commom.csproj", "RelativeToolTip": "StgSharp\\StgSharp.Commom.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", "WhenOpened": "2025-01-21T14:49:27.481Z" }, { "$type": "Document", - "DocumentIndex": 55, + "DocumentIndex": 53, "Title": "StgSharpTest", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeDocumentMoniker": "STgSharpTest\\StgSharpTest.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeToolTip": "STgSharpTest\\StgSharpTest.csproj", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-21T14:48:45.224Z" + "WhenOpened": "2025-01-21T14:48:45.224Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 45, "Title": "StgSharpTest.csproj", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeDocumentMoniker": "STgSharpTest\\StgSharpTest.csproj", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\StgSharpTest.csproj", "RelativeToolTip": "STgSharpTest\\StgSharpTest.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAgAAAAAAAAAAAAxwB8AAAA7AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2025-01-21T14:48:36.279Z" + "WhenOpened": "2025-01-21T14:48:36.279Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 31, "Title": "UnitTest1.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", "RelativeDocumentMoniker": "STgSharpTest\\UnitTest1.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", "RelativeToolTip": "STgSharpTest\\UnitTest1.cs", - "ViewState": "AgIAADQAAAAAAAAAAAA4wEIAAAAIAAAAAAAAAA==", + "ViewState": "AgIAAEAAAAAAAAAAAIAwwEQAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-21T12:43:12.616Z" + "WhenOpened": "2025-01-21T12:43:12.616Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 88, "Title": "ViewModel.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", - "ViewState": "AgIAALEAAAAAAAAAAAAIwL8AAAApAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:42:22.888Z" }, { "$type": "Document", - "DocumentIndex": 58, + "DocumentIndex": 89, "Title": "TextureProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\TextureProvider.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", "RelativeToolTip": "StgSharp\\Graphics\\TextureProvider.cs", - "ViewState": "AgIAAEAAAAAAAAAAAAAowEgAAAAtAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:40:27.238Z" }, { "$type": "Document", - "DocumentIndex": 59, + "DocumentIndex": 90, "Title": "ImageHelper.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "ViewState": "AgIAAEEAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:40:10.936Z" }, { "$type": "Document", - "DocumentIndex": 33, + "DocumentIndex": 91, "Title": "glHandle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHandle.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:39:33.236Z" }, { "$type": "Document", - "DocumentIndex": 60, + "DocumentIndex": 92, "Title": "VBO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ViewState": "AgIAAIcAAAAAAAAAAAAnwJYAAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:33:21.083Z" }, { "$type": "Document", - "DocumentIndex": 61, + "DocumentIndex": 93, "Title": "EBO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ViewState": "AgIAAEAAAAAAAAAAAAAkwFAAAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:33:00.232Z" }, { "$type": "Document", - "DocumentIndex": 62, + "DocumentIndex": 94, "Title": "TextureGL.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ViewState": "AgIAAHkAAAAAAAAAAIBjwHsAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:32:46.745Z" }, { "$type": "Document", - "DocumentIndex": 63, + "DocumentIndex": 95, "Title": "Image.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", - "ViewState": "AgIAAJ0AAAAAAAAAAAAuwK8AAAA1AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:28:33.887Z" }, { "$type": "Document", - "DocumentIndex": 64, + "DocumentIndex": 96, "Title": "KeyEnum.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyEnum.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", "RelativeToolTip": "StgSharp\\Controlling\\KeyEnum.cs", - "ViewState": "AgIAAAcAAAAAAAAAAAAswLsAAAAYAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T12:28:09.467Z" }, { "$type": "Document", - "DocumentIndex": 65, + "DocumentIndex": 97, "Title": "Uniform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAEwFkAAAAnAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:43:39.963Z" }, { "$type": "Document", - "DocumentIndex": 66, + "DocumentIndex": 98, "Title": "Vector.Orthogonalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", - "ViewState": "AgIAAB4AAAAAAAAAAIAzwCgAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:35:59.396Z" }, { "$type": "Document", - "DocumentIndex": 37, + "DocumentIndex": 99, "Title": "glFunction.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAnwDEAAAAuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:34:56.352Z" }, { "$type": "Document", - "DocumentIndex": 67, + "DocumentIndex": 100, "Title": "Platform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeToolTip": "StgSharp\\Environment\\Platform.cs", - "ViewState": "AgIAAEsAAAAAAAAAAAAkwFsAAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:05:45.886Z" }, { "$type": "Document", - "DocumentIndex": 30, + "DocumentIndex": 101, "Title": "Dialogue.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Dialogue.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", "RelativeToolTip": "StgSharp\\Environment\\Dialogue.cs", - "ViewState": "AgIAAGwAAAAAAAAAAAAkwH0AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T11:04:56.665Z" }, { "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 102, "Title": "Pixels.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", - "ViewState": "AgIAADoAAAAAAAAAAAA2wEgAAAAFAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T06:23:16.042Z" }, { "$type": "Document", - "DocumentIndex": 57, + "DocumentIndex": 33, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Program.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", "RelativeToolTip": "StgSharpDebug\\Program.cs", - "ViewState": "AgIAABQAAAAAAAAAAAAkwCMAAAAUAAAAAAAAAA==", + "ViewState": "AgIAADcAAAAAAAAAAAAjwEYAAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-21T06:08:27.152Z" + "WhenOpened": "2025-01-21T06:08:27.152Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 56, + "DocumentIndex": 47, "Title": "Partical.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", "RelativeDocumentMoniker": "StgSharpDebug\\RenderStream\\Partical.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", "RelativeToolTip": "StgSharpDebug\\RenderStream\\Partical.cs", - "ViewState": "AgIAAAwBAAAAAAAAAAAqwB8BAAA7AAAAAAAAAA==", + "ViewState": "AgIAANgAAAAAAAAAAIAzwO0AAABGAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-01-21T04:59:25.115Z" + "WhenOpened": "2025-01-21T04:59:25.115Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 68, + "DocumentIndex": 103, "Title": "RenderStream.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeToolTip": "StgSharp\\Graphics\\RenderStream.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwKkAAAAIAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:22:43.965Z" }, { "$type": "Document", - "DocumentIndex": 69, + "DocumentIndex": 104, "Title": "BufferObjectBase.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwB4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:15:15.908Z" }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 105, "Title": "Global.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", "RelativeDocumentMoniker": "StgSharp\\Global.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", "RelativeToolTip": "StgSharp\\Global.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:14:27.337Z" }, { "$type": "Document", - "DocumentIndex": 49, + "DocumentIndex": 106, "Title": "ViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewPort.cs", - "ViewState": "AgIAACoAAAAAAAAAAAAxwB4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T03:12:28.029Z" }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 107, "Title": "framework.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAswGoAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T02:24:35.096Z" }, { "$type": "Document", - "DocumentIndex": 70, + "DocumentIndex": 108, "Title": "Matrix42.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix42.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix42.cs", - "ViewState": "AgIAABwAAAAAAAAAAAA2wCsAAAAhAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T02:24:24.915Z" }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 109, "Title": "glApiManager.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\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\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "ViewState": "AgIAAP0PAAAAAAAAAAAkwA0QAAA9AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-01-21T02:23:01.822Z" } diff --git a/内核源代码/.vs/StgSharpDevelop/v17/Solution.VC.db b/内核源代码/.vs/StgSharpDevelop/v17/Solution.VC.db index 332424e2..21325de9 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/011.testlog b/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/011.testlog deleted file mode 100644 index 8532ad76..00000000 Binary files a/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/011.testlog and /dev/null differ diff --git a/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/014.testlog b/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/014.testlog new file mode 100644 index 00000000..1dcb2813 Binary files /dev/null and b/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/014.testlog differ diff --git a/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest b/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest index 54930b7b..2574eee6 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest and b/内核源代码/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest differ diff --git a/内核源代码/.vs/StgSharpDevelop/v17/fileList.bin b/内核源代码/.vs/StgSharpDevelop/v17/fileList.bin index 9f205ea6..476dd3f1 100644 Binary files a/内核源代码/.vs/StgSharpDevelop/v17/fileList.bin and b/内核源代码/.vs/StgSharpDevelop/v17/fileList.bin differ diff --git a/内核源代码/STgSharpTest/StgSharpTest.csproj b/内核源代码/STgSharpTest/StgSharpTest.csproj index c382c40e..1ef69cc8 100644 --- a/内核源代码/STgSharpTest/StgSharpTest.csproj +++ b/内核源代码/STgSharpTest/StgSharpTest.csproj @@ -7,6 +7,7 @@ preview false true + AnyCPU;x64 @@ -18,13 +19,18 @@ - - - + + + + + + + + diff --git a/内核源代码/STgSharpTest/UnitTest1.cs b/内核源代码/STgSharpTest/UnitTest1.cs index 78bf742e..6b31a6c8 100644 --- a/内核源代码/STgSharpTest/UnitTest1.cs +++ b/内核源代码/STgSharpTest/UnitTest1.cs @@ -29,8 +29,9 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp; +using StgSharp.Collections; using StgSharp.Script; -using StgSharp.Script.Expression; +using StgSharp.Script.Express; //using StgSharp.Model; diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.Common.deps.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.TerminalDialogue.deps.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.TerminalDialogue.runtimeconfig.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTest.deps.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTest.deps.json new file mode 100644 index 00000000..e2dc02ff --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTest.deps.json @@ -0,0 +1,2845 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharpTest/1.0.0": { + "dependencies": { + "MSTest.TestAdapter": "3.1.1", + "MSTest.TestFramework": "3.1.1", + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest": "1.1.2", + "Microsoft.NET.Test.Sdk": "17.8.0", + "StgSharp.Common": "1.0.0", + "StgSharp.Model": "1.0.0", + "StgSharp.Script": "1.0.0", + "StgSharp.TerminalDialogue": "1.0.0", + "coverlet.collector": "6.0.0", + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions": "14.0.0.0" + }, + "runtime": { + "StgSharpTest.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "coverlet.collector/6.0.0": {}, + "DiffPlex/1.7.2": { + "runtime": { + "lib/net6.0/DiffPlex.dll": { + "assemblyVersion": "1.7.2.0", + "fileVersion": "1.7.2.0" + } + } + }, + "Humanizer.Core/2.2.0": { + "dependencies": { + "NETStandard.Library": "1.6.1" + }, + "runtime": { + "lib/netstandard1.0/Humanizer.dll": { + "assemblyVersion": "2.2.0.0", + "fileVersion": "2.2.0.0" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "4.700.20.21406" + } + } + }, + "Microsoft.CodeAnalysis.Analyzer.Testing/1.1.2": { + "dependencies": { + "DiffPlex": "1.7.2", + "Microsoft.CodeAnalysis.Workspaces.Common": "3.8.0", + "Microsoft.VisualStudio.Composition": "16.1.8", + "NuGet.Common": "6.3.4", + "NuGet.Packaging": "6.3.4", + "NuGet.Protocol": "6.3.4", + "NuGet.Resolver": "6.3.4" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Analyzer.Testing.dll": { + "assemblyVersion": "1.1.2.0", + "fileVersion": "1.100.224.31401" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.0.0": {}, + "Microsoft.CodeAnalysis.Common/3.8.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.0.0", + "System.Collections.Immutable": "5.0.0", + "System.Memory": "4.5.4", + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0", + "System.Text.Encoding.CodePages": "4.5.1", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "3.8.0.0", + "fileVersion": "3.800.20.56202" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/3.8.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "3.8.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "3.8.0.0", + "fileVersion": "3.800.20.56202" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing/1.1.2": { + "dependencies": { + "Microsoft.CodeAnalysis.CSharp.Workspaces": "3.8.0", + "Microsoft.CodeAnalysis.SourceGenerators.Testing": "1.1.2" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll": { + "assemblyVersion": "1.1.2.0", + "fileVersion": "1.100.224.31401" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest/1.1.2": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzer.Testing": "1.1.2", + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing": "1.1.2", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "3.8.0", + "Microsoft.CodeAnalysis.SourceGenerators.Testing": "1.1.2", + "Microsoft.CodeAnalysis.Testing.Verifiers.MSTest": "1.1.2" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll": { + "assemblyVersion": "1.1.2.0", + "fileVersion": "1.100.224.31401" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/3.8.0": { + "dependencies": { + "Humanizer.Core": "2.2.0", + "Microsoft.CodeAnalysis.CSharp": "3.8.0", + "Microsoft.CodeAnalysis.Common": "3.8.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "3.8.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "assemblyVersion": "3.8.0.0", + "fileVersion": "3.800.20.56202" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.SourceGenerators.Testing/1.1.2": { + "dependencies": { + "DiffPlex": "1.7.2", + "Microsoft.CodeAnalysis.Analyzer.Testing": "1.1.2", + "Microsoft.CodeAnalysis.Workspaces.Common": "3.8.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.SourceGenerators.Testing.dll": { + "assemblyVersion": "1.1.2.0", + "fileVersion": "1.100.224.31401" + } + } + }, + "Microsoft.CodeAnalysis.Testing.Verifiers.MSTest/1.1.2": { + "dependencies": { + "MSTest.TestFramework": "3.1.1", + "Microsoft.CodeAnalysis.Analyzer.Testing": "1.1.2" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll": { + "assemblyVersion": "1.1.2.0", + "fileVersion": "1.100.224.31401" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/3.8.0": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "Microsoft.CodeAnalysis.Common": "3.8.0", + "System.Composition": "1.0.31" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "assemblyVersion": "3.8.0.0", + "fileVersion": "3.800.20.56202" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeCoverage/17.8.0": { + "runtime": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.623.45702" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.NET.Test.Sdk/17.8.0": { + "dependencies": { + "Microsoft.CodeCoverage": "17.8.0", + "Microsoft.TestPlatform.TestHost": "17.8.0" + } + }, + "Microsoft.NETCore.Platforms/2.1.2": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "dependencies": { + "NuGet.Frameworks": "6.5.0", + "System.Reflection.Metadata": "5.0.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.8.0", + "Newtonsoft.Json": "13.0.1" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/testhost.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.VisualStudio.Composition/16.1.8": { + "dependencies": { + "Microsoft.VisualStudio.Composition.NetFxAttributes": "16.1.8", + "Microsoft.VisualStudio.Validation": "15.0.82", + "System.Composition": "1.0.31", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Metadata": "5.0.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Threading.Tasks.Dataflow": "4.6.0" + }, + "runtime": { + "lib/netcoreapp2.0/Microsoft.VisualStudio.Composition.dll": { + "assemblyVersion": "16.1.0.0", + "fileVersion": "16.1.8.36187" + } + }, + "resources": { + "lib/netcoreapp2.0/cs/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp2.0/de/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp2.0/es/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp2.0/fr/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp2.0/it/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp2.0/ja/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp2.0/ko/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp2.0/pl/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp2.0/pt-BR/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp2.0/ru/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp2.0/tr/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp2.0/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp2.0/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.VisualStudio.Composition.NetFxAttributes/16.1.8": { + "dependencies": { + "System.ComponentModel.Composition": "4.5.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.NetFxAttributes.dll": { + "assemblyVersion": "16.1.0.0", + "fileVersion": "16.1.8.36187" + } + } + }, + "Microsoft.VisualStudio.Validation/15.0.82": { + "runtime": { + "lib/netstandard1.0/Microsoft.VisualStudio.Validation.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "15.0.82.50463" + } + }, + "resources": { + "lib/netstandard1.0/cs/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.0/de/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.0/es/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.0/fr/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.0/it/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.0/ja/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.0/ko/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.0/pl/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.0/pt-BR/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.0/ru/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.0/tr/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "MSTest.TestAdapter/3.1.1": {}, + "MSTest.TestFramework/3.1.1": { + "runtime": { + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { + "assemblyVersion": "14.0.0.0", + "fileVersion": "3.100.123.36306" + } + }, + "resources": { + "lib/net6.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "cs" + }, + "lib/net6.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "de" + }, + "lib/net6.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "es" + }, + "lib/net6.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "fr" + }, + "lib/net6.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "it" + }, + "lib/net6.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ja" + }, + "lib/net6.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ko" + }, + "lib/net6.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pl" + }, + "lib/net6.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pt-BR" + }, + "lib/net6.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ru" + }, + "lib/net6.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "tr" + }, + "lib/net6.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net6.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "NETStandard.Library/1.6.1": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "Newtonsoft.Json/13.0.1": { + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.1.25517" + } + } + }, + "NuGet.Common/6.3.4": { + "dependencies": { + "NuGet.Frameworks": "6.5.0" + }, + "runtime": { + "lib/netstandard2.0/NuGet.Common.dll": { + "assemblyVersion": "6.3.4.2", + "fileVersion": "6.3.4.2" + } + } + }, + "NuGet.Configuration/6.3.4": { + "dependencies": { + "NuGet.Common": "6.3.4", + "System.Security.Cryptography.ProtectedData": "4.4.0" + }, + "runtime": { + "lib/netstandard2.0/NuGet.Configuration.dll": { + "assemblyVersion": "6.3.4.2", + "fileVersion": "6.3.4.2" + } + } + }, + "NuGet.Frameworks/6.5.0": { + "runtime": { + "lib/netstandard2.0/NuGet.Frameworks.dll": { + "assemblyVersion": "6.5.0.154", + "fileVersion": "6.5.0.154" + } + } + }, + "NuGet.Packaging/6.3.4": { + "dependencies": { + "Newtonsoft.Json": "13.0.1", + "NuGet.Configuration": "6.3.4", + "NuGet.Versioning": "6.3.4", + "System.Security.Cryptography.Cng": "5.0.0", + "System.Security.Cryptography.Pkcs": "5.0.0" + }, + "runtime": { + "lib/net5.0/NuGet.Packaging.dll": { + "assemblyVersion": "6.3.4.2", + "fileVersion": "6.3.4.2" + } + } + }, + "NuGet.Protocol/6.3.4": { + "dependencies": { + "NuGet.Packaging": "6.3.4" + }, + "runtime": { + "lib/net5.0/NuGet.Protocol.dll": { + "assemblyVersion": "6.3.4.2", + "fileVersion": "6.3.4.2" + } + } + }, + "NuGet.Resolver/6.3.4": { + "dependencies": { + "NuGet.Protocol": "6.3.4" + }, + "runtime": { + "lib/net5.0/NuGet.Resolver.dll": { + "assemblyVersion": "6.3.4.2", + "fileVersion": "6.3.4.2" + } + } + }, + "NuGet.Versioning/6.3.4": { + "runtime": { + "lib/netstandard2.0/NuGet.Versioning.dll": { + "assemblyVersion": "6.3.4.2", + "fileVersion": "6.3.4.2" + } + } + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.native.System/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.Net.Http/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {}, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "System.AppContext/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Buffers/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Collections.Immutable/5.0.0": {}, + "System.ComponentModel.Composition/4.5.0": { + "dependencies": { + "System.Security.Permissions": "4.5.0" + }, + "runtime": { + "lib/netcoreapp2.0/System.ComponentModel.Composition.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "4.6.26515.6" + } + } + }, + "System.Composition/1.0.31": { + "dependencies": { + "System.Composition.AttributedModel": "1.0.31", + "System.Composition.Convention": "1.0.31", + "System.Composition.Hosting": "1.0.31", + "System.Composition.Runtime": "1.0.31", + "System.Composition.TypedParts": "1.0.31" + } + }, + "System.Composition.AttributedModel/1.0.31": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Composition.AttributedModel.dll": { + "assemblyVersion": "1.0.31.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Composition.Convention/1.0.31": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Composition.AttributedModel": "1.0.31", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Composition.Convention.dll": { + "assemblyVersion": "1.0.31.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Composition.Hosting/1.0.31": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Composition.Runtime": "1.0.31", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Composition.Hosting.dll": { + "assemblyVersion": "1.0.31.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Composition.Runtime/1.0.31": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Composition.Runtime.dll": { + "assemblyVersion": "1.0.31.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Composition.TypedParts/1.0.31": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Composition.AttributedModel": "1.0.31", + "System.Composition.Hosting": "1.0.31", + "System.Composition.Runtime": "1.0.31", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Composition.TypedParts.dll": { + "assemblyVersion": "1.0.31.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Console/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Diagnostics.Tools/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Dynamic.Runtime/4.0.11": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Formats.Asn1/5.0.0": {}, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization.Calendars/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "dependencies": { + "System.Buffers": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.IO.FileSystem/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Linq/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Linq.Expressions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Memory/4.5.4": {}, + "System.Net.Http/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Net.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Net.Sockets/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.ObjectModel/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit/4.3.0": { + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Metadata/5.0.0": {}, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {}, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + } + }, + "System.Runtime.Numerics/4.3.0": { + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Security.AccessControl/4.5.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Security.Principal.Windows": "4.5.0" + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.Cng/5.0.0": { + "dependencies": { + "System.Formats.Asn1": "5.0.0" + } + }, + "System.Security.Cryptography.Csp/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.Pkcs/5.0.0": { + "dependencies": { + "System.Formats.Asn1": "5.0.0", + "System.Security.Cryptography.Cng": "5.0.0" + }, + "runtime": { + "lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.20.51904" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.20.51904" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Security.Cryptography.ProtectedData/4.4.0": { + "runtime": { + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.25519.3" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.25519.3" + } + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "5.0.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Permissions/4.5.0": { + "dependencies": { + "System.Security.AccessControl": "4.5.0" + }, + "runtime": { + "lib/netstandard2.0/System.Security.Permissions.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.26515.6" + } + } + }, + "System.Security.Principal.Windows/4.5.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding.CodePages/4.5.1": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "System.Text.RegularExpressions/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks.Extensions/4.5.4": {}, + "System.Threading.Timer/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Xml.XDocument/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + }, + "resources": { + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll": { + "locale": "fr-FR" + }, + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll": { + "locale": "ja-JP" + }, + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll": { + "locale": "pt-PT" + }, + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll": { + "locale": "zh-Hans" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Model/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "runtime": { + "StgSharp.Model.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions/14.0.0.0": { + "runtime": { + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll": { + "assemblyVersion": "14.0.0.0", + "fileVersion": "3.100.123.36306" + } + } + } + } + }, + "libraries": { + "StgSharpTest/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "coverlet.collector/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", + "path": "coverlet.collector/6.0.0", + "hashPath": "coverlet.collector.6.0.0.nupkg.sha512" + }, + "DiffPlex/1.7.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-qJEjdxEDBWSFZGB8paBB9HDeJXHGlHlOXeGX3kbTuXWuOsgv2iSAEOOzo5V1/B39Vcxr9IVVrNKewRcX+rsn4g==", + "path": "diffplex/1.7.2", + "hashPath": "diffplex.1.7.2.nupkg.sha512" + }, + "Humanizer.Core/2.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rsYXB7+iUPP8AHgQ8JP2UZI2xK2KhjcdGr9E6zX3CsZaTLCaw8M35vaAJRo1rfxeaZEVMuXeaquLVCkZ7JcZ5Q==", + "path": "humanizer.core/2.2.0", + "hashPath": "humanizer.core.2.2.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==", + "path": "microsoft.bcl.asyncinterfaces/1.1.1", + "hashPath": "microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Analyzer.Testing/1.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-g6cSJMPlmTiEHakCKaTobNISbf4jfjNF38YK8V4azAgcV9CE4BxuGQSWW6eftHs43q7mhKOr1lioKsTVQmUc1g==", + "path": "microsoft.codeanalysis.analyzer.testing/1.1.2", + "hashPath": "microsoft.codeanalysis.analyzer.testing.1.1.2.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Analyzers/3.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ojG5pGAhTPmjxRGTNvuszO3H8XPZqksDwr9xLd4Ae/JBjZZdl6GuoLk7uLMf+o7yl5wO0TAqoWcEKkEWqrZE5g==", + "path": "microsoft.codeanalysis.analyzers/3.0.0", + "hashPath": "microsoft.codeanalysis.analyzers.3.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/3.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8YTZ7GpsbTdC08DITx7/kwV0k4SC6cbBAFqc13cOm5vKJZcEIAh51tNSyGSkWisMgYCr96B2wb5Zri1bsla3+g==", + "path": "microsoft.codeanalysis.common/3.8.0", + "hashPath": "microsoft.codeanalysis.common.3.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/3.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hKqFCUSk9TIMBDjiYMF8/ZfK9p9mzpU+slM73CaCHu4ctfkoqJGHLQhyT8wvrYsIg+ufrUWBF8hcJYmyr5rc5Q==", + "path": "microsoft.codeanalysis.csharp/3.8.0", + "hashPath": "microsoft.codeanalysis.csharp.3.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing/1.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mzi4VHeskAZ7KzORK9xuK/fEAMWS0UfQJ+HbbDVaIiG8khJWIZkMka5a6X5lHW/cOq51sxHv40Ggy95jgEDVgw==", + "path": "microsoft.codeanalysis.csharp.sourcegenerators.testing/1.1.2", + "hashPath": "microsoft.codeanalysis.csharp.sourcegenerators.testing.1.1.2.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest/1.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PmvKTrqZ4CNzWsqoUgR1225JO6Z3JIXOuQeYk9OSeCaZgPo04ph4jMnMkXnd9Skrrq+gDMDhEI9lGAgXsFmu2A==", + "path": "microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest/1.1.2", + "hashPath": "microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest.1.1.2.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/3.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rdEBvPWqe/IIscsnp7OkZ4tQin8khxBcSLyV9tU+sHdw9uW9U0GKL+Dv2rD4voC1bZBaO18Hp+m4Vkyfmaz0OA==", + "path": "microsoft.codeanalysis.csharp.workspaces/3.8.0", + "hashPath": "microsoft.codeanalysis.csharp.workspaces.3.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.SourceGenerators.Testing/1.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-m+E8+ovSIYUVXMijWKdPhvnWpOBB/ms+3hunlPiWY8iJkyrT5GKFtRUPevEUKuL75t5+I3SnEAwvsHL29WJSGQ==", + "path": "microsoft.codeanalysis.sourcegenerators.testing/1.1.2", + "hashPath": "microsoft.codeanalysis.sourcegenerators.testing.1.1.2.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Testing.Verifiers.MSTest/1.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P+bkTk1+0fLPMRFdQjOxzA7WN77CjFVgMTxYC1S+sLlbm2kr1ShVvTmuFIVCDQLSZLjOiEPcuUcxKSMKufUzqg==", + "path": "microsoft.codeanalysis.testing.verifiers.mstest/1.1.2", + "hashPath": "microsoft.codeanalysis.testing.verifiers.mstest.1.1.2.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.Common/3.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GPYVydsmOmScOWDJA1LFky7/MkoXpx1JI3lZJShxC+bvVUvL9zVKE8WDZMLsYJ5MAbry2xkZftdfeMpZ+kvLDQ==", + "path": "microsoft.codeanalysis.workspaces.common/3.8.0", + "hashPath": "microsoft.codeanalysis.workspaces.common.3.8.0.nupkg.sha512" + }, + "Microsoft.CodeCoverage/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==", + "path": "microsoft.codecoverage/17.8.0", + "hashPath": "microsoft.codecoverage.17.8.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", + "path": "microsoft.net.test.sdk/17.8.0", + "hashPath": "microsoft.net.test.sdk.17.8.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/2.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==", + "path": "microsoft.netcore.platforms/2.1.2", + "hashPath": "microsoft.netcore.platforms.2.1.2.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", + "path": "microsoft.testplatform.objectmodel/17.8.0", + "hashPath": "microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512" + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", + "path": "microsoft.testplatform.testhost/17.8.0", + "hashPath": "microsoft.testplatform.testhost.17.8.0.nupkg.sha512" + }, + "Microsoft.VisualStudio.Composition/16.1.8": { + "type": "package", + "serviceable": true, + "sha512": "sha512-N+thv3dcT7kjn0Xz3U0uBm2CH4uoaMvH8wC6Gy2HWx7HLNdEpqGoMraLyoBdizmypD1owLCJQIa2uKmWe4/o8A==", + "path": "microsoft.visualstudio.composition/16.1.8", + "hashPath": "microsoft.visualstudio.composition.16.1.8.nupkg.sha512" + }, + "Microsoft.VisualStudio.Composition.NetFxAttributes/16.1.8": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EbwZWTvdzit68qZSuTI8nd1PZ87pYjhpCwtsis8lrUKJ7XLdbE5rxY6YrY7OFze+YUsguzqZlNjX4Yn5nL9qBw==", + "path": "microsoft.visualstudio.composition.netfxattributes/16.1.8", + "hashPath": "microsoft.visualstudio.composition.netfxattributes.16.1.8.nupkg.sha512" + }, + "Microsoft.VisualStudio.Validation/15.0.82": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XwZyVCsHuEtnd6nYScJnA8XkXPzy4Ok0DV5/hqqAe5ccgOhJ6yap7Qh/sU/i6QxEzuYyECPYDQ7IOyEQ3yRQgQ==", + "path": "microsoft.visualstudio.validation/15.0.82", + "hashPath": "microsoft.visualstudio.validation.15.0.82.nupkg.sha512" + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "path": "microsoft.win32.primitives/4.3.0", + "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512" + }, + "MSTest.TestAdapter/3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kMvdO5dhrUR3o1qk0fzS0St0prlKyMQAfz1ChVAUdGGobTU5ehR60szOFto0+Q7rFG5iXMvTlVIthXM9EcNYnw==", + "path": "mstest.testadapter/3.1.1", + "hashPath": "mstest.testadapter.3.1.1.nupkg.sha512" + }, + "MSTest.TestFramework/3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3rjkGxciNHHmPW8cl1/QVIYjOpfptjmAH5JrLBw+dnMTYDoweg3I579N7OIbar3Zd3q9dfWFrCy2LEV/AmPn3A==", + "path": "mstest.testframework/3.1.1", + "hashPath": "mstest.testframework.3.1.1.nupkg.sha512" + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "path": "netstandard.library/1.6.1", + "hashPath": "netstandard.library.1.6.1.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", + "path": "newtonsoft.json/13.0.1", + "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512" + }, + "NuGet.Common/6.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-wKuTiB3RBjbvzB/BhW8+Cu+TTPsABJr91I2Guu/FuM0SXtYRIM26v1NJdwm5rLw59CqB7bamqpWpJKU8bLAdwQ==", + "path": "nuget.common/6.3.4", + "hashPath": "nuget.common.6.3.4.nupkg.sha512" + }, + "NuGet.Configuration/6.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-b+/g6sdnR2128KLn+6qO1MrB8j0goO4kYCFly2RDi/BsLilK+MzKJRHWGYqfMn/YnLmMrgNNJ2sSr4GX7rMEQw==", + "path": "nuget.configuration/6.3.4", + "hashPath": "nuget.configuration.6.3.4.nupkg.sha512" + }, + "NuGet.Frameworks/6.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==", + "path": "nuget.frameworks/6.5.0", + "hashPath": "nuget.frameworks.6.5.0.nupkg.sha512" + }, + "NuGet.Packaging/6.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0HtJXNCes0443jKeFErjhYxJ08BjyoDrIvw/uWyonoTBQ3B//+H2nztviSUyv0+ydfgKyhwshAjsr0efUT8PRA==", + "path": "nuget.packaging/6.3.4", + "hashPath": "nuget.packaging.6.3.4.nupkg.sha512" + }, + "NuGet.Protocol/6.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Gmvnz7RoN6UG3POw0F4t9mWM4sIdmHiuutvR9c2pLCJCUiYBN8QvbO/ZvkOuQNNM/aGdYExx/Tm84Zx9iVjOSA==", + "path": "nuget.protocol/6.3.4", + "hashPath": "nuget.protocol.6.3.4.nupkg.sha512" + }, + "NuGet.Resolver/6.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cO/QqtGqCIUf/e6EncIQ/ORJDco9UOtxooDL0IZhf18x1l0xFJ/nrcLCyAjZeznE9RAIqaNv1+YFobht4u0Lsw==", + "path": "nuget.resolver/6.3.4", + "hashPath": "nuget.resolver.6.3.4.nupkg.sha512" + }, + "NuGet.Versioning/6.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mQW9bwsWJq30lacl33MMVLBlrit5ClNEpGzKryIuLfP1UTL6feQK1yzA/5IQXdtjXvUEoI5bo1Axjen5lOm7Bg==", + "path": "nuget.versioning/6.3.4", + "hashPath": "nuget.versioning.6.3.4.nupkg.sha512" + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", + "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", + "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", + "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.native.System/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "path": "runtime.native.system/4.3.0", + "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", + "path": "runtime.native.system.io.compression/4.3.0", + "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" + }, + "runtime.native.System.Net.Http/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "path": "runtime.native.system.net.http/4.3.0", + "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512" + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "path": "runtime.native.system.security.cryptography.apple/4.3.0", + "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "path": "runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", + "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", + "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", + "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", + "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", + "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", + "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", + "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "System.AppContext/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "path": "system.appcontext/4.3.0", + "hashPath": "system.appcontext.4.3.0.nupkg.sha512" + }, + "System.Buffers/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", + "path": "system.buffers/4.3.0", + "hashPath": "system.buffers.4.3.0.nupkg.sha512" + }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Collections.Immutable/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", + "path": "system.collections.immutable/5.0.0", + "hashPath": "system.collections.immutable.5.0.0.nupkg.sha512" + }, + "System.ComponentModel.Composition/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+iB9FoZnfdqMEGq6np28X6YNSUrse16CakmIhV3h6PxEWt7jYxUN3Txs1D8MZhhf4QmyvK0F/EcIN0f4gGN0dA==", + "path": "system.componentmodel.composition/4.5.0", + "hashPath": "system.componentmodel.composition.4.5.0.nupkg.sha512" + }, + "System.Composition/1.0.31": { + "type": "package", + "serviceable": true, + "sha512": "sha512-I+D26qpYdoklyAVUdqwUBrEIckMNjAYnuPJy/h9dsQItpQwVREkDFs4b4tkBza0kT2Yk48Lcfsv2QQ9hWsh9Iw==", + "path": "system.composition/1.0.31", + "hashPath": "system.composition.1.0.31.nupkg.sha512" + }, + "System.Composition.AttributedModel/1.0.31": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NHWhkM3ZkspmA0XJEsKdtTt1ViDYuojgSND3yHhTzwxepiwqZf+BCWuvCbjUt4fe0NxxQhUDGJ5km6sLjo9qnQ==", + "path": "system.composition.attributedmodel/1.0.31", + "hashPath": "system.composition.attributedmodel.1.0.31.nupkg.sha512" + }, + "System.Composition.Convention/1.0.31": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GLjh2Ju71k6C0qxMMtl4efHa68NmWeIUYh4fkUI8xbjQrEBvFmRwMDFcylT8/PR9SQbeeL48IkFxU/+gd0nYEQ==", + "path": "system.composition.convention/1.0.31", + "hashPath": "system.composition.convention.1.0.31.nupkg.sha512" + }, + "System.Composition.Hosting/1.0.31": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fN1bT4RX4vUqjbgoyuJFVUizAl2mYF5VAb+bVIxIYZSSc0BdnX+yGAxcavxJuDDCQ1K+/mdpgyEFc8e9ikjvrg==", + "path": "system.composition.hosting/1.0.31", + "hashPath": "system.composition.hosting.1.0.31.nupkg.sha512" + }, + "System.Composition.Runtime/1.0.31": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0LEJN+2NVM89CE4SekDrrk5tHV5LeATltkp+9WNYrR+Huiyt0vaCqHbbHtVAjPyeLWIc8dOz/3kthRBj32wGQg==", + "path": "system.composition.runtime/1.0.31", + "hashPath": "system.composition.runtime.1.0.31.nupkg.sha512" + }, + "System.Composition.TypedParts/1.0.31": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0Zae/FtzeFgDBBuILeIbC/T9HMYbW4olAmi8XqqAGosSOWvXfiQLfARZEhiGd0LVXaYgXr0NhxiU1LldRP1fpQ==", + "path": "system.composition.typedparts/1.0.31", + "hashPath": "system.composition.typedparts.1.0.31.nupkg.sha512" + }, + "System.Console/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "path": "system.console/4.3.0", + "hashPath": "system.console.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", + "path": "system.diagnostics.diagnosticsource/4.3.0", + "hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "path": "system.diagnostics.tools/4.3.0", + "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Dynamic.Runtime/4.0.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", + "path": "system.dynamic.runtime/4.0.11", + "hashPath": "system.dynamic.runtime.4.0.11.nupkg.sha512" + }, + "System.Formats.Asn1/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MTvUIktmemNB+El0Fgw9egyqT9AYSIk6DTJeoDSpc3GIHxHCMo8COqkWT1mptX5tZ1SlQ6HJZ0OsSvMth1c12w==", + "path": "system.formats.asn1/5.0.0", + "hashPath": "system.formats.asn1.5.0.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "path": "system.globalization.calendars/4.3.0", + "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512" + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "path": "system.globalization.extensions/4.3.0", + "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "path": "system.io.compression/4.3.0", + "hashPath": "system.io.compression.4.3.0.nupkg.sha512" + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "path": "system.io.compression.zipfile/4.3.0", + "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "path": "system.io.filesystem/4.3.0", + "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "path": "system.io.filesystem.primitives/4.3.0", + "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" + }, + "System.Linq/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "path": "system.linq/4.3.0", + "hashPath": "system.linq.4.3.0.nupkg.sha512" + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "path": "system.linq.expressions/4.3.0", + "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" + }, + "System.Memory/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "path": "system.memory/4.5.4", + "hashPath": "system.memory.4.5.4.nupkg.sha512" + }, + "System.Net.Http/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "path": "system.net.http/4.3.0", + "hashPath": "system.net.http.4.3.0.nupkg.sha512" + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "path": "system.net.primitives/4.3.0", + "hashPath": "system.net.primitives.4.3.0.nupkg.sha512" + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "path": "system.net.sockets/4.3.0", + "hashPath": "system.net.sockets.4.3.0.nupkg.sha512" + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "path": "system.objectmodel/4.3.0", + "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" + }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "path": "system.reflection.emit/4.3.0", + "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "path": "system.reflection.emit.lightweight/4.3.0", + "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "path": "system.reflection.extensions/4.3.0", + "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" + }, + "System.Reflection.Metadata/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==", + "path": "system.reflection.metadata/5.0.0", + "hashPath": "system.reflection.metadata.5.0.0.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "path": "system.reflection.typeextensions/4.3.0", + "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "path": "system.runtime.handles/4.3.0", + "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "path": "system.runtime.interopservices/4.3.0", + "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "path": "system.runtime.numerics/4.3.0", + "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512" + }, + "System.Security.AccessControl/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==", + "path": "system.security.accesscontrol/4.5.0", + "hashPath": "system.security.accesscontrol.4.5.0.nupkg.sha512" + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "path": "system.security.cryptography.algorithms/4.3.0", + "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Cng/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==", + "path": "system.security.cryptography.cng/5.0.0", + "hashPath": "system.security.cryptography.cng.5.0.0.nupkg.sha512" + }, + "System.Security.Cryptography.Csp/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "path": "system.security.cryptography.csp/4.3.0", + "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "path": "system.security.cryptography.encoding/4.3.0", + "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "path": "system.security.cryptography.openssl/4.3.0", + "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Pkcs/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-9TPLGjBCGKmNvG8pjwPeuYy0SMVmGZRwlTZvyPHDbYv/DRkoeumJdfumaaDNQzVGMEmbWtg07zUpSW9q70IlDQ==", + "path": "system.security.cryptography.pkcs/5.0.0", + "hashPath": "system.security.cryptography.pkcs.5.0.0.nupkg.sha512" + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "path": "system.security.cryptography.primitives/4.3.0", + "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.ProtectedData/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==", + "path": "system.security.cryptography.protecteddata/4.4.0", + "hashPath": "system.security.cryptography.protecteddata.4.4.0.nupkg.sha512" + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "path": "system.security.cryptography.x509certificates/4.3.0", + "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512" + }, + "System.Security.Permissions/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", + "path": "system.security.permissions/4.5.0", + "hashPath": "system.security.permissions.4.5.0.nupkg.sha512" + }, + "System.Security.Principal.Windows/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==", + "path": "system.security.principal.windows/4.5.0", + "hashPath": "system.security.principal.windows.4.5.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding.CodePages/4.5.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==", + "path": "system.text.encoding.codepages/4.5.1", + "hashPath": "system.text.encoding.codepages.4.5.1.nupkg.sha512" + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "path": "system.text.encoding.extensions/4.3.0", + "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "path": "system.text.regularexpressions/4.3.0", + "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2hRjGu2r2jxRZ55wmcHO/WbdX+YAOz9x6FE8xqkHZgPaoFMKQZRe9dk8xTZIas8fRjxRmzawnTEWIrhlM+Un7w==", + "path": "system.threading.tasks.dataflow/4.6.0", + "hashPath": "system.threading.tasks.dataflow.4.6.0.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "path": "system.threading.tasks.extensions/4.5.4", + "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512" + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "path": "system.threading.timer/4.3.0", + "hashPath": "system.threading.timer.4.3.0.nupkg.sha512" + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "path": "system.xml.readerwriter/4.3.0", + "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "path": "system.xml.xdocument/4.3.0", + "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions/14.0.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTest.runtimeconfig.json b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTest.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/内核源代码/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTest.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt b/内核源代码/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt index 01bd4268..e69de29b 100644 --- a/内核源代码/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt +++ b/内核源代码/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt @@ -1,242 +0,0 @@ -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\CoverletSourceRootsMapping_StgSharpTest -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\testhost.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTerminalDialogue.deps.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTerminalDialogue.runtimeconfig.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTerminalDialogue.exe -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\testhost.exe -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.TestPlatform.AdapterUtilities.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTest.deps.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTest.runtimeconfig.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTest.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTest.pdb -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ColorHelper.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.CodeCoverage.Shim.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.TestPlatform.CoreUtilities.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.TestPlatform.PlatformAbstractions.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.TestPlatform.CommunicationUtilities.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.TestPlatform.CrossPlatEngine.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.TestPlatform.Utilities.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.Common.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.TestFramework.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Newtonsoft.Json.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Frameworks.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.IO.Abstractions.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Terminal.Gui.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\TestableIO.System.IO.Abstractions.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\TestableIO.System.IO.Abstractions.Wrappers.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Wcwidth.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr-FR\Terminal.Gui.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja-JP\Terminal.Gui.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-PT\Terminal.Gui.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Terminal.Gui.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTerminalDialogue.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharpTerminalDialogue.pdb -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.csproj.AssemblyReference.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.AssemblyInfoInputs.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.AssemblyInfo.cs -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.csproj.CoreCompileInputs.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.sourcelink.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharp.94BD3098.Up2Date -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\refint\StgSharpTest.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.pdb -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\StgSharpTest.genruntimeconfig.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\Debug\net8.0\ref\StgSharpTest.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\DiffPlex.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Humanizer.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.Analyzer.Testing.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.SourceGenerators.Testing.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.CodeAnalysis.Workspaces.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.Composition.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.Composition.NetFxAttributes.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\Microsoft.VisualStudio.Validation.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Common.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Configuration.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Packaging.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Protocol.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Resolver.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\NuGet.Versioning.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.ComponentModel.Composition.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Composition.AttributedModel.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Composition.Convention.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Composition.Hosting.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Composition.Runtime.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Composition.TypedParts.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Security.Cryptography.Pkcs.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Security.Cryptography.ProtectedData.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\System.Security.Permissions.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.Composition.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.Validation.resources.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\runtimes\win\lib\netcoreapp3.0\System.Security.Cryptography.Pkcs.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharp.Commom.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharp.Script.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharp.Script.pdb -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\Debug\net8.0\StgSharp.Commom.xml diff --git a/内核源代码/STgSharpTest/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/STgSharpTest/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/STgSharpTest/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfo.cs b/内核源代码/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..6537f127 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/STgSharpTest/obj/Release/net8.0/StgSharpTest.GlobalUsings.g.cs b/内核源代码/STgSharpTest/obj/Release/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/Release/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json b/内核源代码/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json index 1b77fe8a..3106c63e 100644 --- a/内核源代码/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json +++ b/内核源代码/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json @@ -4,14 +4,14 @@ "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj": {} }, "projects": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj", - "projectName": "StgSharp.Script", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj", + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\obj\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" @@ -28,11 +28,7 @@ "frameworks": { "netstandard2.1": { "targetAlias": "netstandard2.1", - "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" - } - } + "projectReferences": {} } }, "warningProperties": { @@ -50,9 +46,13 @@ "netstandard2.1": { "targetAlias": "netstandard2.1", "dependencies": { - "System.Collections.Immutable": { + "Microsoft.CSharp": { "target": "Package", - "version": "[8.0.0, )" + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" } }, "imports": [ @@ -75,14 +75,153 @@ } } }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj", - "projectName": "StgSharpTerminalDialogue", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj", + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\obj\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "projectName": "StgSharp.TerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" @@ -167,14 +306,17 @@ "net8.0": { "targetAlias": "net8.0", "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj" } } } @@ -234,77 +376,6 @@ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" } } - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj", - "projectName": "StgSharp.Commom", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj", - "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.1" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "D:\\Programmer\\NugetLocal": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.1": { - "targetAlias": "netstandard2.1", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netstandard2.1": { - "targetAlias": "netstandard2.1", - "dependencies": { - "Microsoft.CSharp": { - "target": "Package", - "version": "[4.7.0, )" - }, - "System.Runtime.CompilerServices.Unsafe": { - "target": "Package", - "version": "[6.1.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "NETStandard.Library": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" - } - } } } } \ No newline at end of file diff --git a/内核源代码/STgSharpTest/obj/project.assets.json b/内核源代码/STgSharpTest/obj/project.assets.json index 8b0d9d72..a5cbbe8a 100644 --- a/内核源代码/STgSharpTest/obj/project.assets.json +++ b/内核源代码/STgSharpTest/obj/project.assets.json @@ -11,6 +11,19 @@ "lib/netstandard2.0/ColorHelper.dll": {} } }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "compile": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, "coverlet.collector/6.0.0": { "type": "package", "build": { @@ -1318,20 +1331,17 @@ "lib/netstandard1.3/System.Collections.Concurrent.dll": {} } }, - "System.Collections.Immutable/8.0.0": { + "System.Collections.Immutable/5.0.0": { "type": "package", "compile": { - "lib/net8.0/System.Collections.Immutable.dll": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { "related": ".xml" } }, "runtime": { - "lib/net8.0/System.Collections.Immutable.dll": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { "related": ".xml" } - }, - "build": { - "buildTransitive/net6.0/_._": {} } }, "System.ComponentModel.Composition/4.5.0": { @@ -2761,7 +2771,7 @@ } } }, - "StgSharp.Commom/1.0.0": { + "StgSharp.Common/1.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "dependencies": { @@ -2769,18 +2779,32 @@ "System.Runtime.CompilerServices.Unsafe": "6.1.0" }, "compile": { - "bin/placeholder/StgSharp.Commom.dll": {} + "bin/placeholder/StgSharp.Common.dll": {} }, "runtime": { - "bin/placeholder/StgSharp.Commom.dll": {} + "bin/placeholder/StgSharp.Common.dll": {} + } + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.1", + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Model.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Model.dll": {} } }, "StgSharp.Script/1.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "dependencies": { - "StgSharp.Commom": "1.0.0", - "System.Collections.Immutable": "8.0.0" + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" }, "compile": { "bin/placeholder/StgSharp.Script.dll": {} @@ -2789,17 +2813,17 @@ "bin/placeholder/StgSharp.Script.dll": {} } }, - "StgSharpTerminalDialogue/1.0.0": { + "StgSharp.TerminalDialogue/1.0.0": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { "Terminal.Gui": "2.0.0-v2-develop.2329" }, "compile": { - "bin/placeholder/StgSharpTerminalDialogue.dll": {} + "bin/placeholder/StgSharp.TerminalDialogue.dll": {} }, "runtime": { - "bin/placeholder/StgSharpTerminalDialogue.dll": {} + "bin/placeholder/StgSharp.TerminalDialogue.dll": {} } } } @@ -2818,6 +2842,32 @@ "logo.jpg" ] }, + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, "coverlet.collector/6.0.0": { "sha512": "tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", "type": "package", @@ -4733,34 +4783,30 @@ "system.collections.concurrent.nuspec" ] }, - "System.Collections.Immutable/8.0.0": { - "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "System.Collections.Immutable/5.0.0": { + "sha512": "FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", "type": "package", - "path": "system.collections.immutable/8.0.0", + "path": "system.collections.immutable/5.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", - "PACKAGE.md", "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Collections.Immutable.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", - "lib/net462/System.Collections.Immutable.dll", - "lib/net462/System.Collections.Immutable.xml", - "lib/net6.0/System.Collections.Immutable.dll", - "lib/net6.0/System.Collections.Immutable.xml", - "lib/net7.0/System.Collections.Immutable.dll", - "lib/net7.0/System.Collections.Immutable.xml", - "lib/net8.0/System.Collections.Immutable.dll", - "lib/net8.0/System.Collections.Immutable.xml", + "lib/net461/System.Collections.Immutable.dll", + "lib/net461/System.Collections.Immutable.xml", + "lib/netstandard1.0/System.Collections.Immutable.dll", + "lib/netstandard1.0/System.Collections.Immutable.xml", + "lib/netstandard1.3/System.Collections.Immutable.dll", + "lib/netstandard1.3/System.Collections.Immutable.xml", "lib/netstandard2.0/System.Collections.Immutable.dll", "lib/netstandard2.0/System.Collections.Immutable.xml", - "system.collections.immutable.8.0.0.nupkg.sha512", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", + "system.collections.immutable.5.0.0.nupkg.sha512", "system.collections.immutable.nuspec", - "useSharedDesignerContext.txt" + "useSharedDesignerContext.txt", + "version.txt" ] }, "System.ComponentModel.Composition/4.5.0": { @@ -8346,20 +8392,25 @@ "wcwidth.nuspec" ] }, - "StgSharp.Commom/1.0.0": { + "StgSharp.Common/1.0.0": { "type": "project", - "path": "../StgSharp/StgSharp.Commom.csproj", - "msbuildProject": "../StgSharp/StgSharp.Commom.csproj" + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "path": "../StgSharp.Model/StgSharp.Model.csproj", + "msbuildProject": "../StgSharp.Model/StgSharp.Model.csproj" }, "StgSharp.Script/1.0.0": { "type": "project", - "path": "../StgSharp.Modeling/StgSharp.Script.csproj", - "msbuildProject": "../StgSharp.Modeling/StgSharp.Script.csproj" + "path": "../StgSharp.Script/StgSharp.Script.csproj", + "msbuildProject": "../StgSharp.Script/StgSharp.Script.csproj" }, - "StgSharpTerminalDialogue/1.0.0": { + "StgSharp.TerminalDialogue/1.0.0": { "type": "project", - "path": "../StgSharpTerminalDialogue/StgSharpTerminalDialogue.csproj", - "msbuildProject": "../StgSharpTerminalDialogue/StgSharpTerminalDialogue.csproj" + "path": "../StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj", + "msbuildProject": "../StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj" } }, "projectFileDependencyGroups": { @@ -8368,9 +8419,10 @@ "MSTest.TestFramework >= 3.1.1", "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest >= 1.1.2", "Microsoft.NET.Test.Sdk >= 17.8.0", - "StgSharp.Commom >= 1.0.0", + "StgSharp.Common >= 1.0.0", + "StgSharp.Model >= 1.0.0", "StgSharp.Script >= 1.0.0", - "StgSharpTerminalDialogue >= 1.0.0", + "StgSharp.TerminalDialogue >= 1.0.0", "coverlet.collector >= 6.0.0" ] }, @@ -8402,14 +8454,17 @@ "net8.0": { "targetAlias": "net8.0", "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj" } } } diff --git a/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfo.cs b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..1feba4f1 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..877d9d70 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt @@ -0,0 +1,246 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\CoverletSourceRootsMapping_StgSharpTest +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\testhost.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.TerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.TerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.TerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\testhost.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.TestPlatform.AdapterUtilities.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharpTest.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharpTest.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharpTest.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharpTest.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\CommunityToolkit.HighPerformance.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\DiffPlex.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Humanizer.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.Analyzer.Testing.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.SourceGenerators.Testing.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.CodeAnalysis.Workspaces.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.CodeCoverage.Shim.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.TestPlatform.CoreUtilities.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.TestPlatform.PlatformAbstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.TestPlatform.CommunicationUtilities.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.TestPlatform.CrossPlatEngine.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.TestPlatform.Utilities.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.Composition.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.Composition.NetFxAttributes.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.Validation.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.TestFramework.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Newtonsoft.Json.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Configuration.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Frameworks.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Packaging.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Protocol.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Resolver.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\NuGet.Versioning.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.ComponentModel.Composition.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Composition.AttributedModel.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Composition.Convention.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Composition.Hosting.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Composition.Runtime.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Composition.TypedParts.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Security.Cryptography.Pkcs.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Security.Cryptography.ProtectedData.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\System.Security.Permissions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.Composition.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.Validation.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\fr-FR\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\ja-JP\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\pt-PT\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\zh-Hans\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\runtimes\win\lib\netcoreapp3.0\System.Security.Cryptography.Pkcs.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\bin\x64\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharp.94BD3098.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\refint\StgSharpTest.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\StgSharpTest.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\obj\x64\Debug\net8.0\ref\StgSharpTest.dll diff --git a/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.sourcelink.json b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.sourcelink.json new file mode 100644 index 00000000..d30ebc07 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ No newline at end of file diff --git a/内核源代码/STgSharpTest/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/STgSharpTest/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfo.cs b/内核源代码/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..6537f127 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GlobalUsings.g.cs b/内核源代码/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/内核源代码/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSgharp.Generator/Blueprint/BlueprintNodeAttribute.cs b/内核源代码/StgSgharp.Generator/Blueprint/BlueprintNodeAttribute.cs new file mode 100644 index 00000000..eb5ddc8b --- /dev/null +++ b/内核源代码/StgSgharp.Generator/Blueprint/BlueprintNodeAttribute.cs @@ -0,0 +1,39 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintNodeAttribute.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.Blueprint +{ + [AttributeUsage( AttributeTargets.Method, AllowMultiple = false )] + public class BlueprintNodeExecutionAttribute : Attribute { } +} diff --git a/内核源代码/StgSgharp.Generator/Collections/PartialDictionary.cs b/内核源代码/StgSgharp.Generator/Collections/PartialDictionary.cs new file mode 100644 index 00000000..bf3f5c8b --- /dev/null +++ b/内核源代码/StgSgharp.Generator/Collections/PartialDictionary.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionary.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; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary : IDictionary + { + + private readonly Dictionary _source; + private readonly HashSet _keys; + private readonly PartialDictionaryValues _values; + + public PartialDictionary( + Dictionary source, + TKey[] index ) + { + _source = source; + _keys = new HashSet( index ); + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public PartialDictionary( + Dictionary source, + HashSet keys ) + { + _source = source; + _keys = keys; + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public TValue this[ TKey key ] + { + get + { + if( _keys.Contains( key ) ) { + return _source[ key ]; + } + throw new KeyNotFoundException(); + } + set + { + if( _keys.Contains( key ) ) { + _source[ key ] = value; + } + throw new KeyNotFoundException(); + } + } + + public ICollection Keys => _keys; + + public ICollection Values => _values; + + public int Count => _keys.Count; + + public bool Contains( KeyValuePair item ) + { + return _keys.Contains( item.Key ) && _source.Contains( item ); + } + + public bool ContainsKey( TKey key ) + { + return _keys.Contains( key ); + } + + public void CopyTo( KeyValuePair[] array, int arrayIndex ) + { + throw new NotImplementedException(); + } + + public IEnumerator> GetEnumerator() + { + foreach( TKey item in _keys ) { + yield return new KeyValuePair(item, _source[item]); + } + } + + public bool TryGetValue( TKey key, out TValue value ) + { + if( _keys.Contains( key ) ) { + value = _source[ key ]; + return true; + } + value = default!; + return false; + } + + void ICollection>.Add( + KeyValuePair item ) + { + return; + } + + void ICollection>.Clear() + { + throw new NotSupportedException(); + } + + bool ICollection>.IsReadOnly => true; + + bool ICollection>.Remove( + KeyValuePair item ) + { + throw new NotSupportedException(); + } + + void IDictionary.Add( TKey key, TValue value ) + { + return; + } + + bool IDictionary.Remove( TKey key ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} diff --git a/内核源代码/StgSgharp.Generator/Collections/PartialDictionaryValues.cs b/内核源代码/StgSgharp.Generator/Collections/PartialDictionaryValues.cs new file mode 100644 index 00000000..e429cd73 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/Collections/PartialDictionaryValues.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionaryValues.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; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary + { + + internal sealed class PartialDictionaryValues : ICollection + { + + private readonly PartialDictionary _values; + + public PartialDictionaryValues( + PartialDictionary value ) + { + _values = value; + } + + public bool IsReadOnly => true; + + public int Count => _values.Count; + + void ICollection.Add( TValue item ) + { + return; + } + + void ICollection.Clear() + { + return; + } + + public bool Contains( TValue item ) + { + foreach (var kvp in _values) + { + if (kvp.Value != null && kvp.Value.Equals(item)) + { + return true; + } + } + return false; + } + + public void CopyTo( TValue[] array, int arrayIndex ) + { + foreach (var kvp in _values) + { + array[arrayIndex] = kvp.Value; + arrayIndex++; + } + } + + public IEnumerator GetEnumerator() + { + foreach (var key in _values._keys) + { + yield return _values._source[key]; + } + } + + bool ICollection.Remove( TValue item ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + } +} diff --git a/内核源代码/StgSgharp.Generator/ExpCodeGenerator.cs b/内核源代码/StgSgharp.Generator/ExpCodeGenerator.cs new file mode 100644 index 00000000..9297d1a5 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/ExpCodeGenerator.cs @@ -0,0 +1,20 @@ +using Microsoft.CodeAnalysis; + +using System; + +namespace StgSgharp.Generator.Expression +{ + [Generator] + public class ExpCodeGenerator : ISourceGenerator + { + public void Execute(GeneratorExecutionContext context) + { + throw new NotImplementedException(); + } + + public void Initialize(GeneratorInitializationContext context) + { + throw new NotImplementedException(); + } + } +} diff --git a/内核源代码/StgSgharp.Generator/ExpReader.cs b/内核源代码/StgSgharp.Generator/ExpReader.cs new file mode 100644 index 00000000..1e796a46 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/ExpReader.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpReader.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 Microsoft.CodeAnalysis.CSharp.Syntax; + +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Text; + +namespace StgSgharp.Generator.Expression +{ + internal class ExpFileReader:IDisposable + { + private FileStream _expFileStream; + private MemoryMappedFile _expMemoryMappedFile; + private bool disposedValue; + + public ExpFileReader( string path ) + { + if( !File.Exists( path ) ) { + throw new FileNotFoundException(); + } + _expFileStream = new FileStream( + path, FileMode.Open, FileAccess.Read ); + _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( + _expFileStream, null, 0, MemoryMappedFileAccess.Read, + HandleInheritability.None, true ); + } + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + _expFileStream.Dispose(); + _expMemoryMappedFile.Dispose(); + } + + disposedValue = true; + } + } + + // ~ExpFileReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + public MemoryMappedViewStream CreateMemoryStram() + { + return _expMemoryMappedFile.CreateViewStream(); + } + } +} diff --git a/内核源代码/StgSgharp.Generator/ExpressionReader/ExpReader.cs b/内核源代码/StgSgharp.Generator/ExpressionReader/ExpReader.cs new file mode 100644 index 00000000..ed52605c --- /dev/null +++ b/内核源代码/StgSgharp.Generator/ExpressionReader/ExpReader.cs @@ -0,0 +1,88 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpReader.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 Microsoft.CodeAnalysis.CSharp.Syntax; +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Text; + +namespace StgSharp.Expression +{ + internal class ExpFileReader : IDisposable + { + + private bool disposedValue; + private FileStream _expFileStream; + private MemoryMappedFile _expMemoryMappedFile; + + public ExpFileReader( string path ) + { + if( !File.Exists( path ) ) { + throw new FileNotFoundException(); + } + _expFileStream = new FileStream( + path, FileMode.Open, FileAccess.Read ); + _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( + _expFileStream, null, 0, MemoryMappedFileAccess.Read, + HandleInheritability.None, true ); + } + + public MemoryMappedViewStream CreateMemoryStram() + { + return _expMemoryMappedFile.CreateViewStream(); + } + + // ~ExpFileReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _expFileStream.Dispose(); + _expMemoryMappedFile.Dispose(); + } + + disposedValue = true; + } + } + + } +} diff --git a/内核源代码/StgSgharp.Generator/FakeType/PartialDictionary.cs b/内核源代码/StgSgharp.Generator/FakeType/PartialDictionary.cs new file mode 100644 index 00000000..96a48513 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/FakeType/PartialDictionary.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; + +//[assembly: InternalsVisibleTo("StgSharp.Generator")] +namespace StgSharp.Generator.FakeType +{ + internal class PartialDictionary + { + } +} diff --git a/内核源代码/StgSgharp.Generator/SourceGenerator/BpNodeGenerator.cs b/内核源代码/StgSgharp.Generator/SourceGenerator/BpNodeGenerator.cs new file mode 100644 index 00000000..e70739e9 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/SourceGenerator/BpNodeGenerator.cs @@ -0,0 +1,119 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BpNodeGenerator.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 Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Text; + +using StgSharp.Blueprint; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Generator +{ + internal class BpNodeSyntaxReceiver : ISyntaxReceiver + { + private static readonly string _indexTypeName = typeof( PartialDictionary ).Name; + private static BpNodeSyntaxReceiver receiver = new BpNodeSyntaxReceiver(); + + public List ValidMethod { get; private set; } = new List(); + public List InvalidMethod { get; private set; } = new List(); + + public BpNodeSyntaxReceiver() + { + + } + + public BpNodeSyntaxReceiver(SyntaxNode node) + { + OnVisitSyntaxNode(node); + } + + public void OnVisitSyntaxNode( SyntaxNode syntaxNode ) + { + if( syntaxNode is MethodDeclarationSyntax mds && mds.AttributeLists + .SelectMany( list => list.Attributes ) + .Any( syntax => syntax.Name.ToString() == + typeof( BlueprintNodeExecutionAttribute ).Name ) ) { + SeparatedSyntaxList paramList = mds.ParameterList.Parameters; + if( mds.Modifiers.Any( SyntaxKind.StaticKeyword ) && paramList.Count == + 2 && paramList[ 0 ].Type!.ToString() == _indexTypeName && paramList[ + 1 ].Type!.ToString() == + _indexTypeName ) { + ValidMethod.Add(mds); + } + else + { + InvalidMethod.Add(mds); + } + } + } + + public static void BuildNode(SourceProductionContext context, MethodDeclarationSyntax mds) + { + if (mds.AttributeLists + .SelectMany(list => list.Attributes) + .Any(syntax => syntax.Name.ToString() == + typeof(BlueprintNodeExecutionAttribute).Name)) + { + SeparatedSyntaxList paramList = mds.ParameterList.Parameters; + if (mds.Modifiers.Any(SyntaxKind.StaticKeyword) && paramList.Count == + 2 && paramList[0].Type!.ToString() == _indexTypeName && paramList[ + 1].Type!.ToString() == + _indexTypeName) + { + var methodName = mds.Identifier.Text; + var sourceText = SourceText.From( """ + + """,encoding:Encoding.UTF8); + context.AddSource("GeneratedBlueprintNode.cs", sourceText); + } + else + { + var diagnostic = Diagnostic.Create( + new DiagnosticDescriptor( + id:"SSE0001", + title: "Invalid Blueprint Node Method", + messageFormat: "Blueprint Node Method must be static and have two parameters of type PartialDictionary", + category: "Blueprint Node", + DiagnosticSeverity.Error, + isEnabledByDefault: true), + mds.GetLocation(),mds.Identifier.Text); + + context.ReportDiagnostic(diagnostic); + } + } + } + } +} diff --git a/内核源代码/StgSgharp.Generator/SourceGenerator/MainGenerator.cs b/内核源代码/StgSgharp.Generator/SourceGenerator/MainGenerator.cs new file mode 100644 index 00000000..31b1c6cd --- /dev/null +++ b/内核源代码/StgSgharp.Generator/SourceGenerator/MainGenerator.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCodeGenerator.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 Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp.Syntax; + +using System; + +namespace StgSharp.Generator +{ + [Generator] + public partial class MainGenerator : IIncrementalGenerator + { + public void Initialize(IncrementalGeneratorInitializationContext context) + { + var declaration = + context.SyntaxProvider.CreateSyntaxProvider( + predicate: static (s,_) => s is MethodDeclarationSyntax, + transform: static (cds,_) => (MethodDeclarationSyntax)cds.Node + ).Where(static m=>m!=null); + + context.RegisterSourceOutput(declaration, BpNodeSyntaxReceiver.BuildNode); + } + } +} diff --git a/内核源代码/StgSgharp.Generator/StgSgharp.Generator.Expression.csproj b/内核源代码/StgSgharp.Generator/StgSgharp.Generator.Expression.csproj new file mode 100644 index 00000000..61fdbab8 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/StgSgharp.Generator.Expression.csproj @@ -0,0 +1,14 @@ + + + + netstandard2.0 + enable + preview + True + + + + + + + diff --git a/内核源代码/StgSgharp.Generator/StgSharp.Generator.csproj b/内核源代码/StgSgharp.Generator/StgSharp.Generator.csproj new file mode 100644 index 00000000..a53de187 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/StgSharp.Generator.csproj @@ -0,0 +1,15 @@ + + + + netstandard2.0 + enable + preview + True + AnyCPU;x64 + + + + + + + diff --git a/内核源代码/StgSgharp.Generator/bin/x64/Debug/netstandard2.0/StgSharp.Generator.deps.json b/内核源代码/StgSgharp.Generator/bin/x64/Debug/netstandard2.0/StgSharp.Generator.deps.json new file mode 100644 index 00000000..6ed25ce5 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/bin/x64/Debug/netstandard2.0/StgSharp.Generator.deps.json @@ -0,0 +1,331 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "StgSharp.Generator/1.0.0": { + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "4.12.0", + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "StgSharp.Generator.dll": {} + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": {}, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5", + "System.Numerics.Vectors": "4.5.0", + "System.Reflection.Metadata": "8.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "7.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.12.0.0", + "fileVersion": "4.1200.24.57207" + } + }, + "resources": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "Microsoft.CodeAnalysis.Common": "4.12.0", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5", + "System.Numerics.Vectors": "4.5.0", + "System.Reflection.Metadata": "8.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "7.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.12.0.0", + "fileVersion": "4.1200.24.57207" + } + }, + "resources": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "System.Buffers/4.5.1": { + "runtime": { + "lib/netstandard2.0/System.Buffers.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.28619.1" + } + } + }, + "System.Collections.Immutable/8.0.0": { + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "System.Memory/4.5.5": { + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Memory.dll": { + "assemblyVersion": "4.0.1.2", + "fileVersion": "4.6.31308.1" + } + } + }, + "System.Numerics.Vectors/4.5.0": { + "runtime": { + "lib/netstandard2.0/System.Numerics.Vectors.dll": { + "assemblyVersion": "4.1.4.0", + "fileVersion": "4.6.26515.6" + } + } + }, + "System.Reflection.Metadata/8.0.0": { + "dependencies": { + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5" + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Text.Encoding.CodePages/7.0.0": { + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { + "assemblyVersion": "4.2.0.1", + "fileVersion": "4.6.28619.1" + } + } + } + } + }, + "libraries": { + "StgSharp.Generator/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hashPath": "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c1kNYihL2gdcuU1dqm8R8YeA4YkB43TpU3pa2r66Uooh6AAhRtENzj9A4Kj0a+H8JDDyuTjNZql9XlVUzV+UjA==", + "path": "microsoft.codeanalysis.common/4.12.0", + "hashPath": "microsoft.codeanalysis.common.4.12.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-30vVQ1MizeC22iEdEvI2w0eTIYG43/L20yBzuQH01xKzJgHAoWehzI2F8u07o4mXh4DGMOjQF7aEm0zzvsG3Mg==", + "path": "microsoft.codeanalysis.csharp/4.12.0", + "hashPath": "microsoft.codeanalysis.csharp.4.12.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "System.Buffers/4.5.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "path": "system.buffers/4.5.1", + "hashPath": "system.buffers.4.5.1.nupkg.sha512" + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "path": "system.collections.immutable/8.0.0", + "hashPath": "system.collections.immutable.8.0.0.nupkg.sha512" + }, + "System.Memory/4.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "path": "system.memory/4.5.5", + "hashPath": "system.memory.4.5.5.nupkg.sha512" + }, + "System.Numerics.Vectors/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==", + "path": "system.numerics.vectors/4.5.0", + "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512" + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "path": "system.reflection.metadata/8.0.0", + "hashPath": "system.reflection.metadata.8.0.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" + }, + "System.Text.Encoding.CodePages/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==", + "path": "system.text.encoding.codepages/7.0.0", + "hashPath": "system.text.encoding.codepages.7.0.0.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "path": "system.threading.tasks.extensions/4.5.4", + "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSgharp.Generator/global.cs b/内核源代码/StgSgharp.Generator/global.cs new file mode 100644 index 00000000..c2ac9844 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/global.cs @@ -0,0 +1,5 @@ +global using StgSharp.Generator.FakeType; + +using System; +using System.Collections.Generic; +using System.Text; diff --git a/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..81847214 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt b/内核源代码/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/内核源代码/StgSgharp.Generator/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/内核源代码/StgSgharp.Generator/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/内核源代码/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/内核源代码/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..89bf8994 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.dgspec.json b/内核源代码/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.dgspec.json new file mode 100644 index 00000000..415822f1 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.dgspec.json @@ -0,0 +1,77 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "projectName": "StgSharp.Generator", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.12.0, )" + }, + "NETStandard.Library": { + "suppressParent": "All", + "target": "Package", + "version": "[2.0.3, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSgharp.Generator/obj/project.assets.json b/内核源代码/StgSgharp.Generator/obj/project.assets.json new file mode 100644 index 00000000..41d9f214 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/project.assets.json @@ -0,0 +1,1500 @@ +{ + "version": 3, + "targets": { + ".NETStandard,Version=v2.0": { + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "build": { + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props": {}, + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5", + "System.Numerics.Vectors": "4.5.0", + "System.Reflection.Metadata": "8.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "7.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "Microsoft.CodeAnalysis.Common": "[4.12.0]", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5", + "System.Numerics.Vectors": "4.5.0", + "System.Reflection.Metadata": "8.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "7.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + }, + "build": { + "build/netstandard2.0/NETStandard.Library.targets": {} + } + }, + "System.Buffers/4.5.1": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.Buffers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Buffers.dll": { + "related": ".xml" + } + } + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + } + }, + "System.Memory/4.5.5": { + "type": "package", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/System.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Memory.dll": { + "related": ".xml" + } + } + }, + "System.Numerics.Vectors/4.5.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Numerics.Vectors.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "8.0.0", + "System.Memory": "4.5.5" + }, + "compile": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encoding.CodePages/7.0.0": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "sha512": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets", + "buildTransitive/config/analysislevel_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_all.globalconfig", + "buildTransitive/config/analysislevel_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_default.globalconfig", + "buildTransitive/config/analysislevel_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_none.globalconfig", + "buildTransitive/config/analysislevel_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended_warnaserror.globalconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "sha512": "c1kNYihL2gdcuU1dqm8R8YeA4YkB43TpU3pa2r66Uooh6AAhRtENzj9A4Kj0a+H8JDDyuTjNZql9XlVUzV+UjA==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.12.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net7.0/Microsoft.CodeAnalysis.dll", + "lib/net7.0/Microsoft.CodeAnalysis.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/Microsoft.CodeAnalysis.dll", + "lib/net8.0/Microsoft.CodeAnalysis.pdb", + "lib/net8.0/Microsoft.CodeAnalysis.xml", + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.12.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "sha512": "30vVQ1MizeC22iEdEvI2w0eTIYG43/L20yBzuQH01xKzJgHAoWehzI2F8u07o4mXh4DGMOjQF7aEm0zzvsG3Mg==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.12.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.12.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "type": "package", + "path": "microsoft.netcore.platforms/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "NETStandard.Library/2.0.3": { + "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "type": "package", + "path": "netstandard.library/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "build/netstandard2.0/NETStandard.Library.targets", + "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", + "build/netstandard2.0/ref/System.AppContext.dll", + "build/netstandard2.0/ref/System.Collections.Concurrent.dll", + "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", + "build/netstandard2.0/ref/System.Collections.Specialized.dll", + "build/netstandard2.0/ref/System.Collections.dll", + "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", + "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", + "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", + "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", + "build/netstandard2.0/ref/System.ComponentModel.dll", + "build/netstandard2.0/ref/System.Console.dll", + "build/netstandard2.0/ref/System.Core.dll", + "build/netstandard2.0/ref/System.Data.Common.dll", + "build/netstandard2.0/ref/System.Data.dll", + "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", + "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", + "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", + "build/netstandard2.0/ref/System.Diagnostics.Process.dll", + "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", + "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", + "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", + "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", + "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", + "build/netstandard2.0/ref/System.Drawing.Primitives.dll", + "build/netstandard2.0/ref/System.Drawing.dll", + "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", + "build/netstandard2.0/ref/System.Globalization.Calendars.dll", + "build/netstandard2.0/ref/System.Globalization.Extensions.dll", + "build/netstandard2.0/ref/System.Globalization.dll", + "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", + "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", + "build/netstandard2.0/ref/System.IO.Compression.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.dll", + "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", + "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", + "build/netstandard2.0/ref/System.IO.Pipes.dll", + "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", + "build/netstandard2.0/ref/System.IO.dll", + "build/netstandard2.0/ref/System.Linq.Expressions.dll", + "build/netstandard2.0/ref/System.Linq.Parallel.dll", + "build/netstandard2.0/ref/System.Linq.Queryable.dll", + "build/netstandard2.0/ref/System.Linq.dll", + "build/netstandard2.0/ref/System.Net.Http.dll", + "build/netstandard2.0/ref/System.Net.NameResolution.dll", + "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", + "build/netstandard2.0/ref/System.Net.Ping.dll", + "build/netstandard2.0/ref/System.Net.Primitives.dll", + "build/netstandard2.0/ref/System.Net.Requests.dll", + "build/netstandard2.0/ref/System.Net.Security.dll", + "build/netstandard2.0/ref/System.Net.Sockets.dll", + "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", + "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", + "build/netstandard2.0/ref/System.Net.WebSockets.dll", + "build/netstandard2.0/ref/System.Net.dll", + "build/netstandard2.0/ref/System.Numerics.dll", + "build/netstandard2.0/ref/System.ObjectModel.dll", + "build/netstandard2.0/ref/System.Reflection.Extensions.dll", + "build/netstandard2.0/ref/System.Reflection.Primitives.dll", + "build/netstandard2.0/ref/System.Reflection.dll", + "build/netstandard2.0/ref/System.Resources.Reader.dll", + "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", + "build/netstandard2.0/ref/System.Resources.Writer.dll", + "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", + "build/netstandard2.0/ref/System.Runtime.Extensions.dll", + "build/netstandard2.0/ref/System.Runtime.Handles.dll", + "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", + "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", + "build/netstandard2.0/ref/System.Runtime.Numerics.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.dll", + "build/netstandard2.0/ref/System.Runtime.dll", + "build/netstandard2.0/ref/System.Security.Claims.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", + "build/netstandard2.0/ref/System.Security.Principal.dll", + "build/netstandard2.0/ref/System.Security.SecureString.dll", + "build/netstandard2.0/ref/System.ServiceModel.Web.dll", + "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", + "build/netstandard2.0/ref/System.Text.Encoding.dll", + "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", + "build/netstandard2.0/ref/System.Threading.Overlapped.dll", + "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", + "build/netstandard2.0/ref/System.Threading.Tasks.dll", + "build/netstandard2.0/ref/System.Threading.Thread.dll", + "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", + "build/netstandard2.0/ref/System.Threading.Timer.dll", + "build/netstandard2.0/ref/System.Threading.dll", + "build/netstandard2.0/ref/System.Transactions.dll", + "build/netstandard2.0/ref/System.ValueTuple.dll", + "build/netstandard2.0/ref/System.Web.dll", + "build/netstandard2.0/ref/System.Windows.dll", + "build/netstandard2.0/ref/System.Xml.Linq.dll", + "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", + "build/netstandard2.0/ref/System.Xml.Serialization.dll", + "build/netstandard2.0/ref/System.Xml.XDocument.dll", + "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", + "build/netstandard2.0/ref/System.Xml.XPath.dll", + "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", + "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", + "build/netstandard2.0/ref/System.Xml.dll", + "build/netstandard2.0/ref/System.dll", + "build/netstandard2.0/ref/mscorlib.dll", + "build/netstandard2.0/ref/netstandard.dll", + "build/netstandard2.0/ref/netstandard.xml", + "lib/netstandard1.0/_._", + "netstandard.library.2.0.3.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "System.Buffers/4.5.1": { + "sha512": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "type": "package", + "path": "system.buffers/4.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Buffers.dll", + "lib/net461/System.Buffers.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Buffers.dll", + "lib/netstandard1.1/System.Buffers.xml", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "lib/uap10.0.16299/_._", + "ref/net45/System.Buffers.dll", + "ref/net45/System.Buffers.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Buffers.dll", + "ref/netstandard1.1/System.Buffers.xml", + "ref/netstandard2.0/System.Buffers.dll", + "ref/netstandard2.0/System.Buffers.xml", + "ref/uap10.0.16299/_._", + "system.buffers.4.5.1.nupkg.sha512", + "system.buffers.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections.Immutable/8.0.0": { + "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "type": "package", + "path": "system.collections.immutable/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Collections.Immutable.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", + "lib/net462/System.Collections.Immutable.dll", + "lib/net462/System.Collections.Immutable.xml", + "lib/net6.0/System.Collections.Immutable.dll", + "lib/net6.0/System.Collections.Immutable.xml", + "lib/net7.0/System.Collections.Immutable.dll", + "lib/net7.0/System.Collections.Immutable.xml", + "lib/net8.0/System.Collections.Immutable.dll", + "lib/net8.0/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "system.collections.immutable.8.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Memory/4.5.5": { + "sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "type": "package", + "path": "system.memory/4.5.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Memory.dll", + "lib/net461/System.Memory.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.5.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Numerics.Vectors/4.5.0": { + "sha512": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==", + "type": "package", + "path": "system.numerics.vectors/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Numerics.Vectors.dll", + "lib/net46/System.Numerics.Vectors.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.Numerics.Vectors.dll", + "lib/netstandard1.0/System.Numerics.Vectors.xml", + "lib/netstandard2.0/System.Numerics.Vectors.dll", + "lib/netstandard2.0/System.Numerics.Vectors.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/System.Numerics.Vectors.dll", + "ref/net45/System.Numerics.Vectors.xml", + "ref/net46/System.Numerics.Vectors.dll", + "ref/net46/System.Numerics.Vectors.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/System.Numerics.Vectors.dll", + "ref/netstandard1.0/System.Numerics.Vectors.xml", + "ref/netstandard2.0/System.Numerics.Vectors.dll", + "ref/netstandard2.0/System.Numerics.Vectors.xml", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.numerics.vectors.4.5.0.nupkg.sha512", + "system.numerics.vectors.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Metadata/8.0.0": { + "sha512": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "type": "package", + "path": "system.reflection.metadata/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Reflection.Metadata.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Reflection.Metadata.targets", + "lib/net462/System.Reflection.Metadata.dll", + "lib/net462/System.Reflection.Metadata.xml", + "lib/net6.0/System.Reflection.Metadata.dll", + "lib/net6.0/System.Reflection.Metadata.xml", + "lib/net7.0/System.Reflection.Metadata.dll", + "lib/net7.0/System.Reflection.Metadata.xml", + "lib/net8.0/System.Reflection.Metadata.dll", + "lib/net8.0/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "system.reflection.metadata.8.0.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net461/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encoding.CodePages/7.0.0": { + "sha512": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==", + "type": "package", + "path": "system.text.encoding.codepages/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encoding.CodePages.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encoding.CodePages.targets", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net462/System.Text.Encoding.CodePages.dll", + "lib/net462/System.Text.Encoding.CodePages.xml", + "lib/net6.0/System.Text.Encoding.CodePages.dll", + "lib/net6.0/System.Text.Encoding.CodePages.xml", + "lib/net7.0/System.Text.Encoding.CodePages.dll", + "lib/net7.0/System.Text.Encoding.CodePages.xml", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/net7.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net7.0/System.Text.Encoding.CodePages.xml", + "system.text.encoding.codepages.7.0.0.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "type": "package", + "path": "system.threading.tasks.extensions/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Threading.Tasks.Extensions.dll", + "lib/net461/System.Threading.Tasks.Extensions.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netcoreapp2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "system.threading.tasks.extensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + ".NETStandard,Version=v2.0": [ + "Microsoft.CodeAnalysis.CSharp >= 4.12.0", + "NETStandard.Library >= 2.0.3" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "projectName": "StgSharp.Generator", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.12.0, )" + }, + "NETStandard.Library": { + "suppressParent": "All", + "target": "Package", + "version": "[2.0.3, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..81847214 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..eae2aacd --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\bin\x64\Debug\netstandard2.0\StgSharp.Generator.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\bin\x64\Debug\netstandard2.0\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\bin\x64\Debug\netstandard2.0\StgSharp.Generator.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\netstandard2.0\StgSharp.Generator.pdb diff --git a/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.sourcelink.json b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.sourcelink.json new file mode 100644 index 00000000..d30ebc07 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ No newline at end of file diff --git a/内核源代码/StgSgharp.Generator/obj/x64/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/内核源代码/StgSgharp.Generator/obj/x64/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/x64/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/内核源代码/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/内核源代码/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..89bf8994 --- /dev/null +++ b/内核源代码/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.C/StgSharpC.c b/内核源代码/StgSharp.C/StgSharpC.c new file mode 100644 index 00000000..660c289b --- /dev/null +++ b/内核源代码/StgSharp.C/StgSharpC.c @@ -0,0 +1,75 @@ +#include "StgSharpC.h" +#include "gl.h" +#include "glfw3.h" +#include "ssc_framework.h" +#include + +GladGLContext *currentContext; +extern char infolog[512] = { 0 }; + +SSCAPI int SSCDECL glCheckShaderStat(GladGLContext *context, uint64_t shaderHandle, int key, + char **logRef) +{ + int stat = 0; + context->GetShaderiv(shaderHandle, key, &stat); + if (!stat) { + context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog); + } + *logRef = infolog; + return stat; +} + +SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion) +{ + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); +} + +SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char *procName) +{ + void *ret = glfwGetProcAddress(procName); + // printf("%llu\n", (uint64_t)ret); + if (ret = NULL) { + *infolog = "Failed to load OpenGL api:"; + for (size_t i = 0; i < sizeof(procName); i++) { + infolog[30 + i] = procName[i]; + } + printf("%s\n", infolog); + } + return (GLFWglproc)ret; +} + +SSCAPI unsigned int linkShaderProgram(GladGLContext *context, GLuint shaderProgram) +{ + context->LinkProgram(shaderProgram); + + int success; + context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success); + if (!success) { + context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog); + return 0; + } else { + return shaderProgram; + } +} + +SSCAPI void SSCDECL loadImageData(char *location, Image *out, imageLoader loader) +{ + if (loader == NULL) { + loader = stbi_load; + } + out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0); +} + +SSCAPI void SSCDECL unloadImageData(Image *out) +{ + free(out->pixelPtr); +} + +char *_cdecl readLog() +{ + infolog[511] = '\0'; + return &infolog; +} diff --git a/内核源代码/StgSharp.C/StgSharpC.h b/内核源代码/StgSharp.C/StgSharpC.h new file mode 100644 index 00000000..fa3d2402 --- /dev/null +++ b/内核源代码/StgSharp.C/StgSharpC.h @@ -0,0 +1,73 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef SSC +#define SSC + +#include "ssc_framework.h" +#include "ssc_internal.h" + +#define STBIDEF SSCAPI +#include "stb_image.h" + +#include "gl.h" +#include "wgl.h" +#include "glfw3.h" +#include +#include + +#ifndef SSCAPI_DEFINE + +#ifdef _WIN32 +#define SSCAPI __declspec(dllexport) +#elif defined _LINUX_ +#define SSCAPI __attribute__((dllexport)) +#elif defined _APPLE_ +#define SSCAPI __attribute__((visibility("default"))) +#else +#define SSCAPI +#endif + +#endif // ! SSCAPI_DEFINE + +#if __cplusplus +extern "C" { +#endif + +#define byte char +#define ssc_null_assert(ptr) assert(ptr != NULL) + +#define ALIGN(simdVec) _mm_loadu_ps(&simdVec) +#define ALIGN256(simdVec) _mm256_loadu_ps(&simdVec) +#define ALIGN512(simdVec) _mm512_loadu_ps(&simdVec) + +typedef struct Image { + int width; + int height; + int channel; + char *pixelPtr; +} Image; + +typedef char *(*imageLoader)(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); + +SSCAPI char infolog[512]; +SSCAPI int SSCDECL glCheckShaderStat(GladGLContext *context, uint64_t shaderHandle, int key, + char **logRef); +SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion); +SSCAPI unsigned int SSCDECL linkShaderProgram(GladGLContext *context, GLuint shadertype); +SSCAPI void SSCDECL loadImageData(char *location, Image *out, imageLoader loader); +SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char *procName); +SSCAPI void SSCDECL unloadImageData(Image *out); +SSCAPI char *SSCDECL readLog(void); + +#pragma endregion + +SSCAPI int SSCDECL load_intrinsic_function(void *intrinsic_context); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/内核源代码/StgSharp.C/StgSharpC.vcxproj b/内核源代码/StgSharp.C/StgSharpC.vcxproj new file mode 100644 index 00000000..ab840564 --- /dev/null +++ b/内核源代码/StgSharp.C/StgSharpC.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {20cbff26-6746-402e-992c-7b643e9423eb} + StgSharpC + 10.0 + StgSharp.C + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + false + + + DynamicLibrary + false + v143 + true + Unicode + 14.41.34120 + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)build + + + $(SolutionDir)build + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + stdc17 + Disabled + true + All + true + true + Speed + + + Console + true + opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) + + + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Speed + NoListing + stdcpp20 + stdc17 + CompileAsC + true + + + Console + true + true + false + opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) + LinkVerbose + UseLinkTimeCodeGeneration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/内核源代码/StgSharp.C/dllmain.c b/内核源代码/StgSharp.C/dllmain.c new file mode 100644 index 00000000..4e03e1d0 --- /dev/null +++ b/内核源代码/StgSharp.C/dllmain.c @@ -0,0 +1,39 @@ + +#ifdef _WIN32 +#include "ssc_framework.h" +#endif // __ + +#include "StgSharpC.h" + +#ifdef _WIN32 + +// clang-format off + +BOOL APIENTRY DllMain( + HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved +) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + return 1; + case DLL_THREAD_ATTACH: + return 1; + case DLL_THREAD_DETACH: + return 1; + case DLL_PROCESS_DETACH: + return 1; + break; + } + return TRUE; +} +#else +attribute((constructor)) void DllMain() +{ +} + +#endif // _WIN32 + +// clang-format on diff --git a/内核源代码/StgSharp.C/gl.h b/内核源代码/StgSharp.C/gl.h new file mode 100644 index 00000000..192f3429 --- /dev/null +++ b/内核源代码/StgSharp.C/gl.h @@ -0,0 +1,12656 @@ +/** + * Loader generated by glad 2.0.5 on Fri Feb 16 00:51:02 2024 + * + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + * + * Generator: C/C++ + * Specification: gl + * Extensions: 619 + * + * APIs: + * - gl:core=4.6 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False + * - MX = True + * - ON_DEMAND = False + * + * Commandline: + * --api='gl:core=4.6' --extensions='GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_blit_layers,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shader_samples_identical,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_RG8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_storage,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_x,GL_MESA_framebuffer_flip_y,GL_MESA_framebuffer_swap_xy,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_memory_object_sparse,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_primitive_shading_rate,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_timeline_semaphore,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_std430_layout,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog' c --mx + * + * Online: + * http://glad.sh/#api=gl%3Acore%3D4.6&generator=c&options=MX + * + */ + +#ifndef GLAD_GL_H_ +#define GLAD_GL_H_ + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" +#endif +#ifdef __gl_h_ +#error OpenGL (gl.h) header already included (API: gl), remove previous include! +#endif +#define __gl_h_ 1 +#ifdef __gl3_h_ +#error OpenGL (gl3.h) header already included (API: gl), remove previous include! +#endif +#define __gl3_h_ 1 +#ifdef __glext_h_ +#error OpenGL (glext.h) header already included (API: gl), remove previous include! +#endif +#define __glext_h_ 1 +#ifdef __gl3ext_h_ +#error OpenGL (gl3ext.h) header already included (API: gl), remove previous include! +#endif +#define __gl3ext_h_ 1 +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#define GLAD_GL +#define GLAD_OPTION_GL_MX + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) +#define GLAD_PLATFORM_WIN32 1 +#else +#define GLAD_PLATFORM_WIN32 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_APPLE +#ifdef __APPLE__ +#define GLAD_PLATFORM_APPLE 1 +#else +#define GLAD_PLATFORM_APPLE 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN +#ifdef __EMSCRIPTEN__ +#define GLAD_PLATFORM_EMSCRIPTEN 1 +#else +#define GLAD_PLATFORM_EMSCRIPTEN 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) +#ifdef __has_include +#if __has_include() +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY +#include +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#define GLAD_PLATFORM_UWP 1 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#define GLAD_PLATFORM_UWP 0 +#endif +#endif + +#ifdef __GNUC__ +#define GLAD_GNUC_EXTENSION __extension__ +#else +#define GLAD_GNUC_EXTENSION +#endif + +#define GLAD_UNUSED(x) (void)(x) + +#ifndef GLAD_API_CALL +#if defined(GLAD_API_CALL_EXPORT) +#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) +#if defined(GLAD_API_CALL_EXPORT_BUILD) +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllexport)) extern +#else +#define GLAD_API_CALL __declspec(dllexport) extern +#endif +#else +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllimport)) extern +#else +#define GLAD_API_CALL __declspec(dllimport) extern +#endif +#endif +#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) +#define GLAD_API_CALL __attribute__((visibility("default"))) extern +#else +#define GLAD_API_CALL extern +#endif +#else +#define GLAD_API_CALL extern +#endif +#endif + +#ifdef APIENTRY +#define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 +#define GLAD_API_PTR __stdcall +#else +#define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.5" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, + ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define GL_1PASS_EXT 0x80A1 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_EXT 0x80CC +#define GL_422_REV_AVERAGE_EXT 0x80CF +#define GL_422_REV_EXT 0x80CD +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_ABGR_EXT 0x8000 +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_ADD_ATI 0x8963 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_ALPHA 0x1906 +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16F_ARB 0x881C +#define GL_ALPHA16F_EXT 0x881C +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_ALPHA16_EXT 0x803E +#define GL_ALPHA16_SNORM 0x9018 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA8_SNORM 0x9014 +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#define GL_ALPHA_MAX_SGIX 0x8321 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_ALPHA_SNORM 0x9010 +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF +#define GL_ALREADY_SIGNALED 0x911A +#define GL_ALWAYS 0x0207 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_AND 0x1501 +#define GL_AND_INVERTED 0x1504 +#define GL_AND_REVERSE 0x1502 +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_ARC_TO_NV 0xFE +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#define GL_ARRAY_SIZE 0x92FB +#define GL_ARRAY_STRIDE 0x92FE +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_ASYNC_MARKER_SGIX 0x8329 +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ATTENUATION_EXT 0x834D +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#define GL_AVERAGE_EXT 0x8335 +#define GL_AVERAGE_HP 0x8160 +#define GL_BACK 0x0405 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_RIGHT 0x0403 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_BEVEL_NV 0x90A6 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA_INTEGER 0x8D9B +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_BGR_EXT 0x80E0 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BIAS_BIT_ATI 0x00000008 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#define GL_BLEND 0x0BE2 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_BLEND_COLOR_EXT 0x8005 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#define GL_BLEND_EQUATION_EXT 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLOCK_INDEX 0x92FD +#define GL_BLUE 0x1905 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_BLUE_NV 0x1905 +#define GL_BOLD_BIT_NV 0x01 +#define GL_BOOL 0x8B56 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_BUFFER 0x82E0 +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_BUFFER_USAGE 0x8765 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_TARGET_ATI 0x877C +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_BYTE 0x1400 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_CCW 0x0901 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLEAR 0x1500 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_CMYKA_EXT 0x800D +#define GL_CMYK_EXT 0x800C +#define GL_CND0_ATI 0x896B +#define GL_CND_ATI 0x896A +#define GL_COLOR 0x1800 +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_COLORBURN_KHR 0x929A +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORDODGE_NV 0x9299 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_COLOR_ENCODING 0x8296 +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_COMBINE4_NV 0x8503 +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_RG 0x8226 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_CONDITION_SATISFIED 0x911C +#define GL_CONFORMANT_NV 0x9374 +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_CONJOINT_NV 0x9284 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_CONSTANT_ARB 0x8576 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_CONSTANT_EXT 0x8576 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_FLAGS 0x821E +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_CONTEXT_LOST 0x0507 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#define GL_CONTINUOUS_AMD 0x9007 +#define GL_CONTRAST_NV 0x92A1 +#define GL_CONVEX_HULL_NV 0x908B +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_2_ATI 0x8943 +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_COORD_REPLACE_ARB 0x8862 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_CUBIC_EXT 0x8334 +#define GL_CUBIC_HP 0x815F +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_CULL_MODES_NV 0x86E0 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_IBM 103050 +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_CURRENT_QUERY 0x8865 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_CW 0x0900 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 +#define GL_DARKEN_KHR 0x9297 +#define GL_DARKEN_NV 0x9297 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DECODE_EXT 0x8A49 +#define GL_DECR 0x1E03 +#define GL_DECR_WRAP 0x8508 +#define GL_DECR_WRAP_EXT 0x8508 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_DELETE_STATUS 0x8B80 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DEPTH 0x1801 +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#define GL_DEPTH_CLAMP 0x864F +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_NV 0x864F +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DIFFERENCE_KHR 0x929E +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISCARD_ATI 0x8763 +#define GL_DISCARD_NV 0x8530 +#define GL_DISCRETE_AMD 0x9006 +#define GL_DISJOINT_NV 0x9283 +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#define GL_DITHER 0x0BD0 +#define GL_DONT_CARE 0x1100 +#define GL_DOT2_ADD_ATI 0x896C +#define GL_DOT3_ATI 0x8966 +#define GL_DOT3_RGBA_ARB 0x86AF +#define GL_DOT3_RGBA_EXT 0x8741 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT4_ATI 0x8967 +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_DOUBLE 0x140A +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_DRAW_BUFFER15_ARB 0x8834 +#define GL_DRAW_BUFFER15_ATI 0x8834 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_DSDT_NV 0x86F5 +#define GL_DST_ALPHA 0x0304 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_COLOR 0x0306 +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_BIAS_NV 0x8717 +#define GL_DT_SCALE_NV 0x8711 +#define GL_DU8DV8_ATI 0x877A +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_DUDV_ATI 0x8779 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_DYNAMIC_COPY_ARB 0x88EA +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_MAP_NV 0x855F +#define GL_EQUAL 0x0202 +#define GL_EQUIV 0x1509 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXTENSIONS 0x1F03 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_EYE_PLANE 0x2502 +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_EYE_RADIAL_NV 0x855B +#define GL_E_TIMES_F_NV 0x8531 +#define GL_FACTOR_MAX_AMD 0x901D +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FAILURE_NV 0x9030 +#define GL_FALSE 0 +#define GL_FASTEST 0x1101 +#define GL_FENCE_APPLE 0x8A0B +#define GL_FENCE_CONDITION_NV 0x84F4 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FIELDS_NV 0x8E27 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FILE_NAME_NV 0x9074 +#define GL_FILL 0x1B02 +#define GL_FILL_RECTANGLE_NV 0x933C +#define GL_FILTER 0x829A +#define GL_FILTER4_SGIS 0x8146 +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_FIXED 0x140C +#define GL_FIXED_OES 0x140C +#define GL_FIXED_ONLY 0x891D +#define GL_FIXED_ONLY_ARB 0x891D +#define GL_FLOAT 0x1406 +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4 0x8B5C +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_FOG 0x0B60 +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_FRAGMENT_INPUT_NV 0x936D +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_FRAMEBUFFER 0x8D40 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAME_NV 0x8E26 +#define GL_FRONT 0x0404 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_FRONT_FACE 0x0B46 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEQUAL 0x0206 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GREATER 0x0204 +#define GL_GREEN 0x1904 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_GREEN_NV 0x1904 +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_HALF_APPLE 0x140B +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_HALF_FLOAT 0x140B +#define GL_HALF_FLOAT_ARB 0x140B +#define GL_HALF_FLOAT_NV 0x140B +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_HARDLIGHT_KHR 0x929B +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_HIGH_INT 0x8DF5 +#define GL_HILO16_NV 0x86F8 +#define GL_HILO8_NV 0x885E +#define GL_HILO_NV 0x86F4 +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HI_BIAS_NV 0x8714 +#define GL_HI_SCALE_NV 0x870E +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_IDENTITY_NV 0x862A +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_INCR 0x1E02 +#define GL_INCR_WRAP 0x8507 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#define GL_INT 0x1404 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_ARB 0x140E +#define GL_INT64_NV 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_INTENSITY16_EXT 0x804D +#define GL_INTENSITY16_SNORM 0x901B +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_INGR 0x8568 +#define GL_INTERLACE_READ_OML 0x8981 +#define GL_INTERLACE_SGIX 0x8094 +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_INVALID_OPERATION 0x0502 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_INVARIANT_EXT 0x87C2 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVERSE_NV 0x862B +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_INVERT 0x150A +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#define GL_ISOLINES 0x8E7A +#define GL_IS_PER_PATCH 0x92E7 +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_KEEP 0x1E00 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_LAYER_NV 0x8DAA +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LEFT 0x0406 +#define GL_LEQUAL 0x0203 +#define GL_LERP_ATI 0x8969 +#define GL_LESS 0x0201 +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#define GL_LINE 0x1B01 +#define GL_LINEAR 0x2601 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_LINES 0x0001 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_LINE_TO_NV 0x04 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINK_STATUS 0x8B82 +#define GL_LIST_PRIORITY_SGIX 0x8182 +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_EXT 0x87C4 +#define GL_LOCATION 0x930E +#define GL_LOCATION_COMPONENT 0x934A +#define GL_LOCATION_INDEX 0x930F +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_LOW_INT 0x8DF3 +#define GL_LO_BIAS_NV 0x8715 +#define GL_LO_SCALE_NV 0x870F +#define GL_LUID_SIZE_EXT 8 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_MAD_ATI 0x8968 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_MAJOR_VERSION 0x821B +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX7_NV 0x8637 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX_EXT 0x87C0 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MATRIX_STRIDE 0x92FF +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_MAX 0x8008 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_MAX_EXT 0x8008 +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VIEWPORTS 0x825B +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_MESH_SHADER_NV 0x9559 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_MIN 0x8007 +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_MINOR_VERSION 0x821C +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MIN_EXT 0x8007 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIPMAP 0x8293 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW1_EXT 0x850A +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_MOVE_TO_NV 0x02 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOV_ATI 0x8961 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_MULTIPLY_NV 0x9294 +#define GL_MULTISAMPLE 0x809D +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_MUL_ATI 0x8964 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +#define GL_NAME_LENGTH 0x92F9 +#define GL_NAND 0x150E +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NEAREST 0x2600 +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEVER 0x0200 +#define GL_NEXT_BUFFER_NV -2 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_NICEST 0x1102 +#define GL_NONE 0 +#define GL_NOOP 0x1505 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_NOR 0x1508 +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_NOTEQUAL 0x0205 +#define GL_NO_ERROR 0 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_NUM_EXTENSIONS 0x821D +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_OBJECT_TYPE 0x9112 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#define GL_OFFSET 0x92FC +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_ONE 1 +#define GL_ONE_EXT 0x87DE +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_OPERAND2_ALPHA_EXT 0x859A +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND3_ALPHA_NV 0x859B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_MOV_EXT 0x8799 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_SUB_EXT 0x8796 +#define GL_OR 0x1507 +#define GL_OR_INVERTED 0x150D +#define GL_OR_REVERSE 0x150B +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_OVERLAY_KHR 0x9296 +#define GL_OVERLAY_NV 0x9296 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_PACK_INVERT_MESA 0x8758 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_PATCHES 0x000E +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERTURB_EXT 0x85AE +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#define GL_PHONG_HINT_WIN 0x80EB +#define GL_PHONG_WIN 0x80EA +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_POINT 0x1B00 +#define GL_POINTS 0x0000 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_PRESENT_DURATION_NV 0x8E2B +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESERVE_ATI 0x8762 +#define GL_PREVIOUS_ARB 0x8578 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PROGRAM 0x82E2 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_PURGEABLE_APPLE 0x8A1D +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_QUADS 0x0007 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_QUERY 0x82E3 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 +#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 +#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 +#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 +#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 +#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_TARGET 0x82EA +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_R16 0x822A +#define GL_R16F 0x822D +#define GL_R16F_EXT 0x822D +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R16_SNORM 0x8F98 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R32F 0x822E +#define GL_R32F_EXT 0x822E +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_R3_G3_B2 0x2A10 +#define GL_R8 0x8229 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R8_EXT 0x8229 +#define GL_R8_SNORM 0x8F94 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_READ_BUFFER 0x0C02 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_READ_ONLY 0x88B8 +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +#define GL_READ_WRITE 0x88BA +#define GL_READ_WRITE_ARB 0x88BA +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_RECT_NV 0xF6 +#define GL_RED 0x1903 +#define GL_REDUCE_EXT 0x8016 +#define GL_RED_BIT_ATI 0x00000001 +#define GL_RED_INTEGER 0x8D94 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_RED_NV 0x1903 +#define GL_RED_SNORM 0x8F90 +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_REFLECTION_MAP_NV 0x8512 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_2_ATI 0x8923 +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERER 0x1F01 +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_REPEAT 0x2901 +#define GL_REPLACE 0x1E01 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACE_EXT 0x8062 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESCALE_NORMAL_EXT 0x803A +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_RESTART_SUN 0x0001 +#define GL_RETAINED_APPLE 0x8A1B +#define GL_RG 0x8227 +#define GL_RG16 0x822C +#define GL_RG16F 0x822F +#define GL_RG16F_EXT 0x822F +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG16_SNORM 0x8F99 +#define GL_RG32F 0x8230 +#define GL_RG32F_EXT 0x8230 +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_RG8 0x822B +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG8_EXT 0x822B +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB 0x1907 +#define GL_RGB10 0x8052 +#define GL_RGB10_A2 0x8059 +#define GL_RGB10_A2UI 0x906F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGB16F 0x881B +#define GL_RGB16F_ARB 0x881B +#define GL_RGB16F_EXT 0x881B +#define GL_RGB16I 0x8D89 +#define GL_RGB16I_EXT 0x8D89 +#define GL_RGB16UI 0x8D77 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGB2_EXT 0x804E +#define GL_RGB32F 0x8815 +#define GL_RGB32F_ARB 0x8815 +#define GL_RGB32F_EXT 0x8815 +#define GL_RGB32I 0x8D83 +#define GL_RGB32I_EXT 0x8D83 +#define GL_RGB32UI 0x8D71 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_RGB4 0x804F +#define GL_RGB4_EXT 0x804F +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGB5 0x8050 +#define GL_RGB565 0x8D62 +#define GL_RGB5_A1 0x8057 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB8I 0x8D8F +#define GL_RGB8I_EXT 0x8D8F +#define GL_RGB8UI 0x8D7D +#define GL_RGB8UI_EXT 0x8D7D +#define GL_RGB8_EXT 0x8051 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGB9_E5 0x8C3D +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_RGBA 0x1908 +#define GL_RGBA12 0x805A +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16 0x805B +#define GL_RGBA16F 0x881A +#define GL_RGBA16F_ARB 0x881A +#define GL_RGBA16F_EXT 0x881A +#define GL_RGBA16I 0x8D88 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGBA16UI 0x8D76 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGBA16_EXT 0x805B +#define GL_RGBA16_SNORM 0x8F9B +#define GL_RGBA2 0x8055 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA32F 0x8814 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGBA32I 0x8D82 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGBA32UI 0x8D70 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGBA4 0x8056 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA8 0x8058 +#define GL_RGBA8I 0x8D8E +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGBA8UI 0x8D7C +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGBA8_EXT 0x8058 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#define GL_RGBA_SNORM 0x8F93 +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGB_RAW_422_APPLE 0x8A51 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_RGB_SNORM 0x8F92 +#define GL_RG_INTEGER 0x8228 +#define GL_RG_SNORM 0x8F91 +#define GL_RIGHT 0x0407 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_ROUND_NV 0x90A4 +#define GL_SAMPLER 0x82E6 +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SAMPLES_PASSED_ARB 0x8914 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_SCALAR_EXT 0x87BE +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_SCREEN_KHR 0x9295 +#define GL_SCREEN_NV 0x9295 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 +#define GL_SEMAPHORE_TYPE_NV 0x95B3 +#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#define GL_SET 0x150F +#define GL_SET_AMD 0x874A +#define GL_SHADER 0x82E1 +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_TYPE 0x8B4F +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_SHARED_EDGE_NV 0xC0 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#define GL_SHORT 0x1402 +#define GL_SIGNALED 0x9119 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SKIP_COMPONENTS1_NV -6 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_DECODE_EXT 0x8A4A +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_SLICE_ACCUM_SUN 0x85CC +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_SM_COUNT_NV 0x933B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SPARE0_NV 0x852E +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_SPARE1_NV 0x852F +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_SPIR_V_BINARY_ARB 0x9552 +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SQUARE_NV 0x90A3 +#define GL_SR8_EXT 0x8FBD +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC1_COLOR 0x88F9 +#define GL_SRC_ALPHA 0x0302 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_COLOR 0x0300 +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_SRG8_EXT 0x8FBE +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_STATIC_ATI 0x8760 +#define GL_STATIC_COPY 0x88E6 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STEREO 0x0C33 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_SHARED_APPLE 0x85BF +#define GL_STREAM_COPY 0x88E2 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_SUB_ATI 0x8965 +#define GL_SUCCESS_NV 0x902F +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_TASK_SHADER_NV 0x955A +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_TEXTURE31_ARB 0x84DF +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_TARGET 0x1006 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 +#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 +#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_TIMESTAMP 0x8E28 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_NV 0x862C +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_FAN 0x0006 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_TRUE 1 +#define GL_TYPE 0x92FA +#define GL_UNCORRELATED_NV 0x9282 +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_UNDEFINED_VERTEX 0x8260 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNSIGNALED 0x9118 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_UNSIGNED_INT64_ARB 0x140F +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_UPLOAD_GPU_MASK_NVX 0x954A +#define GL_UPPER_LEFT 0x8CA2 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_UTF16_NV 0x909B +#define GL_UTF8_NV 0x909A +#define GL_UUID_SIZE_EXT 16 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_EXT 0x87C1 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_VECTOR_EXT 0x87BF +#define GL_VENDOR 0x1F00 +#define GL_VERSION 0x1F02 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_VERTEX_TEXTURE 0x829B +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIEWPORT 0x0BA2 +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_WAIT_FAILED 0x911D +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_WRAP_BORDER_SUN 0x81D4 +#define GL_WRITE_DISCARD_NV 0x88BE +#define GL_WRITE_ONLY 0x88B9 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_W_EXT 0x87D8 +#define GL_XOR 0x1506 +#define GL_XOR_NV 0x1506 +#define GL_X_EXT 0x87D5 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_YCBCR_MESA 0x8757 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCRCBA_SGIX 0x8319 +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#define GL_YCRCB_SGIX 0x8318 +#define GL_Y_EXT 0x87D6 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_ZERO 0 +#define GL_ZERO_EXT 0x87DD +#define GL_ZERO_TO_ONE 0x935F +#define GL_Z_EXT 0x87D7 + +#include "khrplatform.h" +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptr; +#else +typedef khronos_intptr_t GLintptr; +#endif +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptrARB; +#else +typedef khronos_intptr_t GLintptrARB; +#endif +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptr; +#else +typedef khronos_ssize_t GLsizeiptr; +#endif +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptrARB; +#else +typedef khronos_ssize_t GLsizeiptrARB; +#endif +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void(GLAD_API_PTR *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, + GLsizei length, const GLchar *message, + const void *userParam); +typedef void(GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, + GLsizei length, const GLchar *message, + const void *userParam); +typedef void(GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, + GLsizei length, const GLchar *message, + const void *userParam); +typedef void(GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, + GLsizei length, const GLchar *message, void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void(GLAD_API_PTR *GLVULKANPROCNV)(void); + +#define GL_VERSION_1_0 1 +#define GL_VERSION_1_1 1 +#define GL_VERSION_1_2 1 +#define GL_VERSION_1_3 1 +#define GL_VERSION_1_4 1 +#define GL_VERSION_1_5 1 +#define GL_VERSION_2_0 1 +#define GL_VERSION_2_1 1 +#define GL_VERSION_3_0 1 +#define GL_VERSION_3_1 1 +#define GL_VERSION_3_2 1 +#define GL_VERSION_3_3 1 +#define GL_VERSION_4_0 1 +#define GL_VERSION_4_1 1 +#define GL_VERSION_4_2 1 +#define GL_VERSION_4_3 1 +#define GL_VERSION_4_4 1 +#define GL_VERSION_4_5 1 +#define GL_VERSION_4_6 1 +#define GL_3DFX_multisample 1 +#define GL_3DFX_tbuffer 1 +#define GL_3DFX_texture_compression_FXT1 1 +#define GL_AMD_blend_minmax_factor 1 +#define GL_AMD_conservative_depth 1 +#define GL_AMD_debug_output 1 +#define GL_AMD_depth_clamp_separate 1 +#define GL_AMD_draw_buffers_blend 1 +#define GL_AMD_framebuffer_multisample_advanced 1 +#define GL_AMD_framebuffer_sample_positions 1 +#define GL_AMD_gcn_shader 1 +#define GL_AMD_gpu_shader_half_float 1 +#define GL_AMD_gpu_shader_int16 1 +#define GL_AMD_gpu_shader_int64 1 +#define GL_AMD_interleaved_elements 1 +#define GL_AMD_multi_draw_indirect 1 +#define GL_AMD_name_gen_delete 1 +#define GL_AMD_occlusion_query_event 1 +#define GL_AMD_performance_monitor 1 +#define GL_AMD_pinned_memory 1 +#define GL_AMD_query_buffer_object 1 +#define GL_AMD_sample_positions 1 +#define GL_AMD_seamless_cubemap_per_texture 1 +#define GL_AMD_shader_atomic_counter_ops 1 +#define GL_AMD_shader_ballot 1 +#define GL_AMD_shader_explicit_vertex_parameter 1 +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +#define GL_AMD_shader_image_load_store_lod 1 +#define GL_AMD_shader_stencil_export 1 +#define GL_AMD_shader_trinary_minmax 1 +#define GL_AMD_sparse_texture 1 +#define GL_AMD_stencil_operation_extended 1 +#define GL_AMD_texture_gather_bias_lod 1 +#define GL_AMD_texture_texture4 1 +#define GL_AMD_transform_feedback3_lines_triangles 1 +#define GL_AMD_transform_feedback4 1 +#define GL_AMD_vertex_shader_layer 1 +#define GL_AMD_vertex_shader_tessellator 1 +#define GL_AMD_vertex_shader_viewport_index 1 +#define GL_APPLE_aux_depth_stencil 1 +#define GL_APPLE_client_storage 1 +#define GL_APPLE_element_array 1 +#define GL_APPLE_fence 1 +#define GL_APPLE_float_pixels 1 +#define GL_APPLE_flush_buffer_range 1 +#define GL_APPLE_object_purgeable 1 +#define GL_APPLE_rgb_422 1 +#define GL_APPLE_row_bytes 1 +#define GL_APPLE_specular_vector 1 +#define GL_APPLE_texture_range 1 +#define GL_APPLE_transform_hint 1 +#define GL_APPLE_vertex_array_object 1 +#define GL_APPLE_vertex_array_range 1 +#define GL_APPLE_vertex_program_evaluators 1 +#define GL_APPLE_ycbcr_422 1 +#define GL_ARB_ES2_compatibility 1 +#define GL_ARB_ES3_1_compatibility 1 +#define GL_ARB_ES3_2_compatibility 1 +#define GL_ARB_ES3_compatibility 1 +#define GL_ARB_arrays_of_arrays 1 +#define GL_ARB_base_instance 1 +#define GL_ARB_bindless_texture 1 +#define GL_ARB_blend_func_extended 1 +#define GL_ARB_buffer_storage 1 +#define GL_ARB_cl_event 1 +#define GL_ARB_clear_buffer_object 1 +#define GL_ARB_clear_texture 1 +#define GL_ARB_clip_control 1 +#define GL_ARB_color_buffer_float 1 +#define GL_ARB_compatibility 1 +#define GL_ARB_compressed_texture_pixel_storage 1 +#define GL_ARB_compute_shader 1 +#define GL_ARB_compute_variable_group_size 1 +#define GL_ARB_conditional_render_inverted 1 +#define GL_ARB_conservative_depth 1 +#define GL_ARB_copy_buffer 1 +#define GL_ARB_copy_image 1 +#define GL_ARB_cull_distance 1 +#define GL_ARB_debug_output 1 +#define GL_ARB_depth_buffer_float 1 +#define GL_ARB_depth_clamp 1 +#define GL_ARB_depth_texture 1 +#define GL_ARB_derivative_control 1 +#define GL_ARB_direct_state_access 1 +#define GL_ARB_draw_buffers 1 +#define GL_ARB_draw_buffers_blend 1 +#define GL_ARB_draw_elements_base_vertex 1 +#define GL_ARB_draw_indirect 1 +#define GL_ARB_draw_instanced 1 +#define GL_ARB_enhanced_layouts 1 +#define GL_ARB_explicit_attrib_location 1 +#define GL_ARB_explicit_uniform_location 1 +#define GL_ARB_fragment_coord_conventions 1 +#define GL_ARB_fragment_layer_viewport 1 +#define GL_ARB_fragment_program 1 +#define GL_ARB_fragment_program_shadow 1 +#define GL_ARB_fragment_shader 1 +#define GL_ARB_fragment_shader_interlock 1 +#define GL_ARB_framebuffer_no_attachments 1 +#define GL_ARB_framebuffer_object 1 +#define GL_ARB_framebuffer_sRGB 1 +#define GL_ARB_geometry_shader4 1 +#define GL_ARB_get_program_binary 1 +#define GL_ARB_get_texture_sub_image 1 +#define GL_ARB_gl_spirv 1 +#define GL_ARB_gpu_shader5 1 +#define GL_ARB_gpu_shader_fp64 1 +#define GL_ARB_gpu_shader_int64 1 +#define GL_ARB_half_float_pixel 1 +#define GL_ARB_half_float_vertex 1 +#define GL_ARB_imaging 1 +#define GL_ARB_indirect_parameters 1 +#define GL_ARB_instanced_arrays 1 +#define GL_ARB_internalformat_query 1 +#define GL_ARB_internalformat_query2 1 +#define GL_ARB_invalidate_subdata 1 +#define GL_ARB_map_buffer_alignment 1 +#define GL_ARB_map_buffer_range 1 +#define GL_ARB_matrix_palette 1 +#define GL_ARB_multi_bind 1 +#define GL_ARB_multi_draw_indirect 1 +#define GL_ARB_multisample 1 +#define GL_ARB_multitexture 1 +#define GL_ARB_occlusion_query 1 +#define GL_ARB_occlusion_query2 1 +#define GL_ARB_parallel_shader_compile 1 +#define GL_ARB_pipeline_statistics_query 1 +#define GL_ARB_pixel_buffer_object 1 +#define GL_ARB_point_parameters 1 +#define GL_ARB_point_sprite 1 +#define GL_ARB_polygon_offset_clamp 1 +#define GL_ARB_post_depth_coverage 1 +#define GL_ARB_program_interface_query 1 +#define GL_ARB_provoking_vertex 1 +#define GL_ARB_query_buffer_object 1 +#define GL_ARB_robust_buffer_access_behavior 1 +#define GL_ARB_robustness 1 +#define GL_ARB_robustness_isolation 1 +#define GL_ARB_sample_locations 1 +#define GL_ARB_sample_shading 1 +#define GL_ARB_sampler_objects 1 +#define GL_ARB_seamless_cube_map 1 +#define GL_ARB_seamless_cubemap_per_texture 1 +#define GL_ARB_separate_shader_objects 1 +#define GL_ARB_shader_atomic_counter_ops 1 +#define GL_ARB_shader_atomic_counters 1 +#define GL_ARB_shader_ballot 1 +#define GL_ARB_shader_bit_encoding 1 +#define GL_ARB_shader_clock 1 +#define GL_ARB_shader_draw_parameters 1 +#define GL_ARB_shader_group_vote 1 +#define GL_ARB_shader_image_load_store 1 +#define GL_ARB_shader_image_size 1 +#define GL_ARB_shader_objects 1 +#define GL_ARB_shader_precision 1 +#define GL_ARB_shader_stencil_export 1 +#define GL_ARB_shader_storage_buffer_object 1 +#define GL_ARB_shader_subroutine 1 +#define GL_ARB_shader_texture_image_samples 1 +#define GL_ARB_shader_texture_lod 1 +#define GL_ARB_shader_viewport_layer_array 1 +#define GL_ARB_shading_language_100 1 +#define GL_ARB_shading_language_420pack 1 +#define GL_ARB_shading_language_include 1 +#define GL_ARB_shading_language_packing 1 +#define GL_ARB_shadow 1 +#define GL_ARB_shadow_ambient 1 +#define GL_ARB_sparse_buffer 1 +#define GL_ARB_sparse_texture 1 +#define GL_ARB_sparse_texture2 1 +#define GL_ARB_sparse_texture_clamp 1 +#define GL_ARB_spirv_extensions 1 +#define GL_ARB_stencil_texturing 1 +#define GL_ARB_sync 1 +#define GL_ARB_tessellation_shader 1 +#define GL_ARB_texture_barrier 1 +#define GL_ARB_texture_border_clamp 1 +#define GL_ARB_texture_buffer_object 1 +#define GL_ARB_texture_buffer_object_rgb32 1 +#define GL_ARB_texture_buffer_range 1 +#define GL_ARB_texture_compression 1 +#define GL_ARB_texture_compression_bptc 1 +#define GL_ARB_texture_compression_rgtc 1 +#define GL_ARB_texture_cube_map 1 +#define GL_ARB_texture_cube_map_array 1 +#define GL_ARB_texture_env_add 1 +#define GL_ARB_texture_env_combine 1 +#define GL_ARB_texture_env_crossbar 1 +#define GL_ARB_texture_env_dot3 1 +#define GL_ARB_texture_filter_anisotropic 1 +#define GL_ARB_texture_filter_minmax 1 +#define GL_ARB_texture_float 1 +#define GL_ARB_texture_gather 1 +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_ARB_texture_multisample 1 +#define GL_ARB_texture_non_power_of_two 1 +#define GL_ARB_texture_query_levels 1 +#define GL_ARB_texture_query_lod 1 +#define GL_ARB_texture_rectangle 1 +#define GL_ARB_texture_rg 1 +#define GL_ARB_texture_rgb10_a2ui 1 +#define GL_ARB_texture_stencil8 1 +#define GL_ARB_texture_storage 1 +#define GL_ARB_texture_storage_multisample 1 +#define GL_ARB_texture_swizzle 1 +#define GL_ARB_texture_view 1 +#define GL_ARB_timer_query 1 +#define GL_ARB_transform_feedback2 1 +#define GL_ARB_transform_feedback3 1 +#define GL_ARB_transform_feedback_instanced 1 +#define GL_ARB_transform_feedback_overflow_query 1 +#define GL_ARB_transpose_matrix 1 +#define GL_ARB_uniform_buffer_object 1 +#define GL_ARB_vertex_array_bgra 1 +#define GL_ARB_vertex_array_object 1 +#define GL_ARB_vertex_attrib_64bit 1 +#define GL_ARB_vertex_attrib_binding 1 +#define GL_ARB_vertex_blend 1 +#define GL_ARB_vertex_buffer_object 1 +#define GL_ARB_vertex_program 1 +#define GL_ARB_vertex_shader 1 +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#define GL_ARB_viewport_array 1 +#define GL_ARB_window_pos 1 +#define GL_ATI_draw_buffers 1 +#define GL_ATI_element_array 1 +#define GL_ATI_envmap_bumpmap 1 +#define GL_ATI_fragment_shader 1 +#define GL_ATI_map_object_buffer 1 +#define GL_ATI_meminfo 1 +#define GL_ATI_pixel_format_float 1 +#define GL_ATI_pn_triangles 1 +#define GL_ATI_separate_stencil 1 +#define GL_ATI_text_fragment_shader 1 +#define GL_ATI_texture_env_combine3 1 +#define GL_ATI_texture_float 1 +#define GL_ATI_texture_mirror_once 1 +#define GL_ATI_vertex_array_object 1 +#define GL_ATI_vertex_attrib_array_object 1 +#define GL_ATI_vertex_streams 1 +#define GL_EXT_422_pixels 1 +#define GL_EXT_EGL_image_storage 1 +#define GL_EXT_EGL_sync 1 +#define GL_EXT_abgr 1 +#define GL_EXT_bgra 1 +#define GL_EXT_bindable_uniform 1 +#define GL_EXT_blend_color 1 +#define GL_EXT_blend_equation_separate 1 +#define GL_EXT_blend_func_separate 1 +#define GL_EXT_blend_logic_op 1 +#define GL_EXT_blend_minmax 1 +#define GL_EXT_blend_subtract 1 +#define GL_EXT_clip_volume_hint 1 +#define GL_EXT_cmyka 1 +#define GL_EXT_color_subtable 1 +#define GL_EXT_compiled_vertex_array 1 +#define GL_EXT_convolution 1 +#define GL_EXT_coordinate_frame 1 +#define GL_EXT_copy_texture 1 +#define GL_EXT_cull_vertex 1 +#define GL_EXT_debug_label 1 +#define GL_EXT_debug_marker 1 +#define GL_EXT_depth_bounds_test 1 +#define GL_EXT_direct_state_access 1 +#define GL_EXT_draw_buffers2 1 +#define GL_EXT_draw_instanced 1 +#define GL_EXT_draw_range_elements 1 +#define GL_EXT_external_buffer 1 +#define GL_EXT_fog_coord 1 +#define GL_EXT_framebuffer_blit 1 +#define GL_EXT_framebuffer_blit_layers 1 +#define GL_EXT_framebuffer_multisample 1 +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#define GL_EXT_framebuffer_object 1 +#define GL_EXT_framebuffer_sRGB 1 +#define GL_EXT_geometry_shader4 1 +#define GL_EXT_gpu_program_parameters 1 +#define GL_EXT_gpu_shader4 1 +#define GL_EXT_histogram 1 +#define GL_EXT_index_array_formats 1 +#define GL_EXT_index_func 1 +#define GL_EXT_index_material 1 +#define GL_EXT_index_texture 1 +#define GL_EXT_light_texture 1 +#define GL_EXT_memory_object 1 +#define GL_EXT_memory_object_fd 1 +#define GL_EXT_memory_object_win32 1 +#define GL_EXT_misc_attribute 1 +#define GL_EXT_multi_draw_arrays 1 +#define GL_EXT_multisample 1 +#define GL_EXT_multiview_tessellation_geometry_shader 1 +#define GL_EXT_multiview_texture_multisample 1 +#define GL_EXT_multiview_timer_query 1 +#define GL_EXT_packed_depth_stencil 1 +#define GL_EXT_packed_float 1 +#define GL_EXT_packed_pixels 1 +#define GL_EXT_paletted_texture 1 +#define GL_EXT_pixel_buffer_object 1 +#define GL_EXT_pixel_transform 1 +#define GL_EXT_pixel_transform_color_table 1 +#define GL_EXT_point_parameters 1 +#define GL_EXT_polygon_offset 1 +#define GL_EXT_polygon_offset_clamp 1 +#define GL_EXT_post_depth_coverage 1 +#define GL_EXT_provoking_vertex 1 +#define GL_EXT_raster_multisample 1 +#define GL_EXT_rescale_normal 1 +#define GL_EXT_secondary_color 1 +#define GL_EXT_semaphore 1 +#define GL_EXT_semaphore_fd 1 +#define GL_EXT_semaphore_win32 1 +#define GL_EXT_separate_shader_objects 1 +#define GL_EXT_separate_specular_color 1 +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +#define GL_EXT_shader_image_load_formatted 1 +#define GL_EXT_shader_image_load_store 1 +#define GL_EXT_shader_integer_mix 1 +#define GL_EXT_shader_samples_identical 1 +#define GL_EXT_shadow_funcs 1 +#define GL_EXT_shared_texture_palette 1 +#define GL_EXT_sparse_texture2 1 +#define GL_EXT_stencil_clear_tag 1 +#define GL_EXT_stencil_two_side 1 +#define GL_EXT_stencil_wrap 1 +#define GL_EXT_subtexture 1 +#define GL_EXT_texture 1 +#define GL_EXT_texture3D 1 +#define GL_EXT_texture_array 1 +#define GL_EXT_texture_buffer_object 1 +#define GL_EXT_texture_compression_latc 1 +#define GL_EXT_texture_compression_rgtc 1 +#define GL_EXT_texture_compression_s3tc 1 +#define GL_EXT_texture_cube_map 1 +#define GL_EXT_texture_env_add 1 +#define GL_EXT_texture_env_combine 1 +#define GL_EXT_texture_env_dot3 1 +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_EXT_texture_filter_minmax 1 +#define GL_EXT_texture_integer 1 +#define GL_EXT_texture_lod_bias 1 +#define GL_EXT_texture_mirror_clamp 1 +#define GL_EXT_texture_object 1 +#define GL_EXT_texture_perturb_normal 1 +#define GL_EXT_texture_sRGB 1 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_EXT_texture_sRGB_decode 1 +#define GL_EXT_texture_shadow_lod 1 +#define GL_EXT_texture_shared_exponent 1 +#define GL_EXT_texture_snorm 1 +#define GL_EXT_texture_storage 1 +#define GL_EXT_texture_swizzle 1 +#define GL_EXT_timer_query 1 +#define GL_EXT_transform_feedback 1 +#define GL_EXT_vertex_array 1 +#define GL_EXT_vertex_array_bgra 1 +#define GL_EXT_vertex_attrib_64bit 1 +#define GL_EXT_vertex_shader 1 +#define GL_EXT_vertex_weighting 1 +#define GL_EXT_win32_keyed_mutex 1 +#define GL_EXT_window_rectangles 1 +#define GL_EXT_x11_sync_object 1 +#define GL_GREMEDY_frame_terminator 1 +#define GL_GREMEDY_string_marker 1 +#define GL_HP_convolution_border_modes 1 +#define GL_HP_image_transform 1 +#define GL_HP_occlusion_test 1 +#define GL_HP_texture_lighting 1 +#define GL_IBM_cull_vertex 1 +#define GL_IBM_multimode_draw_arrays 1 +#define GL_IBM_rasterpos_clip 1 +#define GL_IBM_static_data 1 +#define GL_IBM_texture_mirrored_repeat 1 +#define GL_IBM_vertex_array_lists 1 +#define GL_INGR_blend_func_separate 1 +#define GL_INGR_color_clamp 1 +#define GL_INGR_interlace_read 1 +#define GL_INTEL_blackhole_render 1 +#define GL_INTEL_conservative_rasterization 1 +#define GL_INTEL_fragment_shader_ordering 1 +#define GL_INTEL_framebuffer_CMAA 1 +#define GL_INTEL_map_texture 1 +#define GL_INTEL_parallel_arrays 1 +#define GL_INTEL_performance_query 1 +#define GL_KHR_blend_equation_advanced 1 +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_KHR_context_flush_control 1 +#define GL_KHR_debug 1 +#define GL_KHR_no_error 1 +#define GL_KHR_parallel_shader_compile 1 +#define GL_KHR_robust_buffer_access_behavior 1 +#define GL_KHR_robustness 1 +#define GL_KHR_shader_subgroup 1 +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_KHR_texture_compression_astc_ldr 1 +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#define GL_MESAX_texture_stack 1 +#define GL_MESA_framebuffer_flip_x 1 +#define GL_MESA_framebuffer_flip_y 1 +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_MESA_pack_invert 1 +#define GL_MESA_program_binary_formats 1 +#define GL_MESA_resize_buffers 1 +#define GL_MESA_shader_integer_functions 1 +#define GL_MESA_tile_raster_order 1 +#define GL_MESA_window_pos 1 +#define GL_MESA_ycbcr_texture 1 +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#define GL_NVX_conditional_render 1 +#define GL_NVX_gpu_memory_info 1 +#define GL_NVX_gpu_multicast2 1 +#define GL_NVX_linked_gpu_multicast 1 +#define GL_NVX_progress_fence 1 +#define GL_NV_alpha_to_coverage_dither_control 1 +#define GL_NV_bindless_multi_draw_indirect 1 +#define GL_NV_bindless_multi_draw_indirect_count 1 +#define GL_NV_bindless_texture 1 +#define GL_NV_blend_equation_advanced 1 +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_NV_blend_minmax_factor 1 +#define GL_NV_blend_square 1 +#define GL_NV_clip_space_w_scaling 1 +#define GL_NV_command_list 1 +#define GL_NV_compute_program5 1 +#define GL_NV_compute_shader_derivatives 1 +#define GL_NV_conditional_render 1 +#define GL_NV_conservative_raster 1 +#define GL_NV_conservative_raster_dilate 1 +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_NV_conservative_raster_underestimation 1 +#define GL_NV_copy_depth_to_color 1 +#define GL_NV_copy_image 1 +#define GL_NV_deep_texture3D 1 +#define GL_NV_depth_buffer_float 1 +#define GL_NV_depth_clamp 1 +#define GL_NV_draw_texture 1 +#define GL_NV_draw_vulkan_image 1 +#define GL_NV_evaluators 1 +#define GL_NV_explicit_multisample 1 +#define GL_NV_fence 1 +#define GL_NV_fill_rectangle 1 +#define GL_NV_float_buffer 1 +#define GL_NV_fog_distance 1 +#define GL_NV_fragment_coverage_to_color 1 +#define GL_NV_fragment_program 1 +#define GL_NV_fragment_program2 1 +#define GL_NV_fragment_program4 1 +#define GL_NV_fragment_program_option 1 +#define GL_NV_fragment_shader_barycentric 1 +#define GL_NV_fragment_shader_interlock 1 +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_NV_geometry_program4 1 +#define GL_NV_geometry_shader4 1 +#define GL_NV_geometry_shader_passthrough 1 +#define GL_NV_gpu_multicast 1 +#define GL_NV_gpu_program4 1 +#define GL_NV_gpu_program5 1 +#define GL_NV_gpu_program5_mem_extended 1 +#define GL_NV_gpu_shader5 1 +#define GL_NV_half_float 1 +#define GL_NV_internalformat_sample_query 1 +#define GL_NV_light_max_exponent 1 +#define GL_NV_memory_attachment 1 +#define GL_NV_memory_object_sparse 1 +#define GL_NV_mesh_shader 1 +#define GL_NV_multisample_coverage 1 +#define GL_NV_multisample_filter_hint 1 +#define GL_NV_occlusion_query 1 +#define GL_NV_packed_depth_stencil 1 +#define GL_NV_parameter_buffer_object 1 +#define GL_NV_parameter_buffer_object2 1 +#define GL_NV_path_rendering 1 +#define GL_NV_path_rendering_shared_edge 1 +#define GL_NV_pixel_data_range 1 +#define GL_NV_point_sprite 1 +#define GL_NV_present_video 1 +#define GL_NV_primitive_restart 1 +#define GL_NV_primitive_shading_rate 1 +#define GL_NV_query_resource 1 +#define GL_NV_query_resource_tag 1 +#define GL_NV_register_combiners 1 +#define GL_NV_register_combiners2 1 +#define GL_NV_representative_fragment_test 1 +#define GL_NV_robustness_video_memory_purge 1 +#define GL_NV_sample_locations 1 +#define GL_NV_sample_mask_override_coverage 1 +#define GL_NV_scissor_exclusive 1 +#define GL_NV_shader_atomic_counters 1 +#define GL_NV_shader_atomic_float 1 +#define GL_NV_shader_atomic_float64 1 +#define GL_NV_shader_atomic_fp16_vector 1 +#define GL_NV_shader_atomic_int64 1 +#define GL_NV_shader_buffer_load 1 +#define GL_NV_shader_buffer_store 1 +#define GL_NV_shader_storage_buffer_object 1 +#define GL_NV_shader_subgroup_partitioned 1 +#define GL_NV_shader_texture_footprint 1 +#define GL_NV_shader_thread_group 1 +#define GL_NV_shader_thread_shuffle 1 +#define GL_NV_shading_rate_image 1 +#define GL_NV_stereo_view_rendering 1 +#define GL_NV_tessellation_program5 1 +#define GL_NV_texgen_emboss 1 +#define GL_NV_texgen_reflection 1 +#define GL_NV_texture_barrier 1 +#define GL_NV_texture_compression_vtc 1 +#define GL_NV_texture_env_combine4 1 +#define GL_NV_texture_expand_normal 1 +#define GL_NV_texture_multisample 1 +#define GL_NV_texture_rectangle 1 +#define GL_NV_texture_rectangle_compressed 1 +#define GL_NV_texture_shader 1 +#define GL_NV_texture_shader2 1 +#define GL_NV_texture_shader3 1 +#define GL_NV_timeline_semaphore 1 +#define GL_NV_transform_feedback 1 +#define GL_NV_transform_feedback2 1 +#define GL_NV_uniform_buffer_std430_layout 1 +#define GL_NV_uniform_buffer_unified_memory 1 +#define GL_NV_vdpau_interop 1 +#define GL_NV_vdpau_interop2 1 +#define GL_NV_vertex_array_range 1 +#define GL_NV_vertex_array_range2 1 +#define GL_NV_vertex_attrib_integer_64bit 1 +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_NV_vertex_program 1 +#define GL_NV_vertex_program1_1 1 +#define GL_NV_vertex_program2 1 +#define GL_NV_vertex_program2_option 1 +#define GL_NV_vertex_program3 1 +#define GL_NV_vertex_program4 1 +#define GL_NV_video_capture 1 +#define GL_NV_viewport_array2 1 +#define GL_NV_viewport_swizzle 1 +#define GL_OES_byte_coordinates 1 +#define GL_OES_compressed_paletted_texture 1 +#define GL_OES_fixed_point 1 +#define GL_OES_query_matrix 1 +#define GL_OES_read_format 1 +#define GL_OES_single_precision 1 +#define GL_OML_interlace 1 +#define GL_OML_resample 1 +#define GL_OML_subsample 1 +#define GL_OVR_multiview 1 +#define GL_OVR_multiview2 1 +#define GL_PGI_misc_hints 1 +#define GL_PGI_vertex_hints 1 +#define GL_REND_screen_coordinates 1 +#define GL_S3_s3tc 1 +#define GL_SGIS_detail_texture 1 +#define GL_SGIS_fog_function 1 +#define GL_SGIS_generate_mipmap 1 +#define GL_SGIS_multisample 1 +#define GL_SGIS_pixel_texture 1 +#define GL_SGIS_point_line_texgen 1 +#define GL_SGIS_point_parameters 1 +#define GL_SGIS_sharpen_texture 1 +#define GL_SGIS_texture4D 1 +#define GL_SGIS_texture_border_clamp 1 +#define GL_SGIS_texture_color_mask 1 +#define GL_SGIS_texture_edge_clamp 1 +#define GL_SGIS_texture_filter4 1 +#define GL_SGIS_texture_lod 1 +#define GL_SGIS_texture_select 1 +#define GL_SGIX_async 1 +#define GL_SGIX_async_histogram 1 +#define GL_SGIX_async_pixel 1 +#define GL_SGIX_blend_alpha_minmax 1 +#define GL_SGIX_calligraphic_fragment 1 +#define GL_SGIX_clipmap 1 +#define GL_SGIX_convolution_accuracy 1 +#define GL_SGIX_depth_pass_instrument 1 +#define GL_SGIX_depth_texture 1 +#define GL_SGIX_flush_raster 1 +#define GL_SGIX_fog_offset 1 +#define GL_SGIX_fragment_lighting 1 +#define GL_SGIX_framezoom 1 +#define GL_SGIX_igloo_interface 1 +#define GL_SGIX_instruments 1 +#define GL_SGIX_interlace 1 +#define GL_SGIX_ir_instrument1 1 +#define GL_SGIX_list_priority 1 +#define GL_SGIX_pixel_texture 1 +#define GL_SGIX_pixel_tiles 1 +#define GL_SGIX_polynomial_ffd 1 +#define GL_SGIX_reference_plane 1 +#define GL_SGIX_resample 1 +#define GL_SGIX_scalebias_hint 1 +#define GL_SGIX_shadow 1 +#define GL_SGIX_shadow_ambient 1 +#define GL_SGIX_sprite 1 +#define GL_SGIX_subsample 1 +#define GL_SGIX_tag_sample_buffer 1 +#define GL_SGIX_texture_add_env 1 +#define GL_SGIX_texture_coordinate_clamp 1 +#define GL_SGIX_texture_lod_bias 1 +#define GL_SGIX_texture_multi_buffer 1 +#define GL_SGIX_texture_scale_bias 1 +#define GL_SGIX_vertex_preclip 1 +#define GL_SGIX_ycrcb 1 +#define GL_SGIX_ycrcb_subsample 1 +#define GL_SGIX_ycrcba 1 +#define GL_SGI_color_matrix 1 +#define GL_SGI_color_table 1 +#define GL_SGI_texture_color_table 1 +#define GL_SUNX_constant_data 1 +#define GL_SUN_convolution_border_modes 1 +#define GL_SUN_global_alpha 1 +#define GL_SUN_mesh_array 1 +#define GL_SUN_slice_accum 1 +#define GL_SUN_triangle_list 1 +#define GL_SUN_vertex 1 +#define GL_WIN_phong_shading 1 +#define GL_WIN_specular_fog 1 + +typedef void(GLAD_API_PTR *PFNGLACCUMXOESPROC)(GLenum op, GLfixed value); +typedef GLboolean(GLAD_API_PTR *PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, + GLuint timeout); +typedef void(GLAD_API_PTR *PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); +typedef void(GLAD_API_PTR *PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); +typedef void(GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); +typedef void(GLAD_API_PTR *PFNGLACTIVETEXTUREARBPROC)(GLenum texture); +typedef void(GLAD_API_PTR *PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod); +typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod); +typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP3ATIPROC)( + GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, + GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void(GLAD_API_PTR *PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref); +typedef void(GLAD_API_PTR *PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); +typedef void(GLAD_API_PTR *PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); +typedef GLboolean(GLAD_API_PTR *PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint *programs, + GLboolean *residences); +typedef GLboolean(GLAD_API_PTR *PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint *textures, + GLboolean *residences); +typedef void(GLAD_API_PTR *PFNGLARRAYELEMENTEXTPROC)(GLint i); +typedef void(GLAD_API_PTR *PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, + GLsizei stride, GLuint buffer, GLuint offset); +typedef GLuint(GLAD_API_PTR *PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)( + GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, + const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, + GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, + GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, + const GLuint64 *signalValueArray); +typedef GLuint(GLAD_API_PTR *PFNGLASYNCCOPYIMAGESUBDATANVXPROC)( + GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, + const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, + GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, + GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, + GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, + const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +typedef void(GLAD_API_PTR *PFNGLASYNCMARKERSGIXPROC)(GLuint marker); +typedef void(GLAD_API_PTR *PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); +typedef void(GLAD_API_PTR *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINFRAGMENTSHADERATIPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); +typedef void(GLAD_API_PTR *PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); +typedef void(GLAD_API_PTR *PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); +typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); +typedef void(GLAD_API_PTR *PFNGLBEGINVERTEXSHADEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +typedef void(GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, + const GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, + const GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, + const GLuint *buffers, + const GLintptr *offsets, + const GLsizeiptr *sizes); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, + GLuint index, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +typedef void(GLAD_API_PTR *PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); +typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, + GLboolean layered, GLint layer, GLenum access, + GLenum format); +typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTUREEXTPROC)(GLuint index, GLuint texture, GLint level, + GLboolean layered, GLint layer, + GLenum access, GLint format); +typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, + const GLuint *textures); +typedef GLuint(GLAD_API_PTR *PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); +typedef GLuint(GLAD_API_PTR *PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, + GLuint texture); +typedef GLuint(GLAD_API_PTR *PFNGLBINDPARAMETEREXTPROC)(GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); +typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef void(GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +typedef void(GLAD_API_PTR *PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, + const GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); +typedef GLuint(GLAD_API_PTR *PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, + GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); +typedef GLuint(GLAD_API_PTR *PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, + const GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXARRAYPROC)(GLuint array); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, + GLintptr offset, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, + const GLuint *buffers, + const GLintptr *offsets, + const GLsizei *strides); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)(GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLintptrARB offset); +typedef void(GLAD_API_PTR *PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)(GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLenum target, GLuint texture); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3BVEXTPROC)(const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3DVEXTPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3FVEXTPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3IVEXTPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3SVEXTPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLBITMAPXOESPROC)(GLsizei width, GLsizei height, GLfixed xorig, + GLfixed yorig, GLfixed xmove, GLfixed ymove, + const GLubyte *bitmap); +typedef void(GLAD_API_PTR *PFNGLBLENDBARRIERKHRPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBLENDBARRIERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, + GLfloat alpha); +typedef void(GLAD_API_PTR *PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, + GLfloat alpha); +typedef void(GLAD_API_PTR *PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, + GLenum dfactorAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, + GLenum dstRGB, GLenum srcAlpha, + GLenum dstAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIARBPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(GLAD_API_PTR *PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, + GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, + GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERLAYEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint srcLayer, + GLint dstX0, GLint dstY0, GLint dstX1, + GLint dstY1, GLint dstLayer, + GLbitfield mask, GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERLAYERSEXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, + GLuint drawFramebuffer, GLint srcX0, + GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, + GLint dstY1, GLbitfield mask, + GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, + GLuint64EXT address, GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, + GLenum usage); +typedef void(GLAD_API_PTR *PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, + const void *data, GLenum usage); +typedef void(GLAD_API_PTR *PFNGLBUFFERPAGECOMMITMENTARBPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, GLuint memory, + GLuint64 memOffset, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEEXTERNALEXTPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, + GLeglClientBufferEXT clientBuffer, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, + const void *data); +typedef void(GLAD_API_PTR *PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, + GLsizeiptrARB size, const void *data); +typedef void(GLAD_API_PTR *PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, + GLenum target); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, + GLenum target); +typedef void(GLAD_API_PTR *PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +typedef void(GLAD_API_PTR *PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); +typedef void(GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, + GLenum format, GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, + GLint stencil); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, + GLfloat alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, + GLint alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, + GLuint alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHPROC)(GLdouble depth); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHXOESPROC)(GLfixed depth); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, + GLenum internalformat, + GLsizeiptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, GLfloat depth, + GLint stencil); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s); +typedef void(GLAD_API_PTR *PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, + GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); +typedef void(GLAD_API_PTR *PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); +typedef void(GLAD_API_PTR *PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)(GLsizei fenceObjectCount, + const GLuint *semaphoreArray, + const GLuint64 *fenceValueArray); +typedef GLenum(GLAD_API_PTR *PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, + GLuint64 timeout); +typedef void(GLAD_API_PTR *PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); +typedef void(GLAD_API_PTR *PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat *equation); +typedef void(GLAD_API_PTR *PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed *equation); +typedef void(GLAD_API_PTR *PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void(GLAD_API_PTR *PFNGLCOLOR3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue); +typedef void(GLAD_API_PTR *PFNGLCOLOR3XVOESPROC)(const GLfixed *components); +typedef void(GLAD_API_PTR *PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, + GLfloat a, GLfloat nx, GLfloat ny, + GLfloat nz, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, + GLhalfNV alpha); +typedef void(GLAD_API_PTR *PFNGLCOLOR4HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte *c, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte *c, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLCOLOR4XVOESPROC)(const GLfixed *components); +typedef void(GLAD_API_PTR *PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod); +typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod); +typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod, + GLuint arg3, GLuint arg3Rep, + GLuint arg3Mod); +typedef void(GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, + GLboolean alpha); +typedef void(GLAD_API_PTR *PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, + GLboolean b, GLboolean a); +typedef void(GLAD_API_PTR *PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, + GLboolean a); +typedef void(GLAD_API_PTR *PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLsizei count, + GLenum format, GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, + GLsizei width, GLenum format, GLenum type, + const void *table); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLenum format, GLenum type, + const void *table); +typedef void(GLAD_API_PTR *PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, + GLenum input, GLenum mapping, + GLenum componentUsage); +typedef void(GLAD_API_PTR *PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, + GLenum cdOutput, GLenum sumOutput, + GLenum scale, GLenum bias, + GLboolean abDotProduct, + GLboolean cdDotProduct, GLboolean muxSum); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); +typedef void(GLAD_API_PTR *PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); +typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); +typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); +typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERINCLUDEARBPROC)(GLuint shader, GLsizei count, + const GLchar *const *path, + const GLint *length); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)( + GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)( + GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLint border, + GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)( + GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); +typedef void(GLAD_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLenum format, + GLenum type, const void *image); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *image); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, + GLfloat params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, + GLint params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, + GLfixed param); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, + const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, + GLintptr readOffset, GLintptr writeOffset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, + GLenum internalformat, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, + GLenum internalformat, GLint x, + GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, + GLint srcLevel, GLint srcX, GLint srcY, + GLint srcZ, GLuint dstName, GLenum dstTarget, + GLint dstLevel, GLint dstX, GLint dstY, + GLint dstZ, GLsizei srcWidth, + GLsizei srcHeight, GLsizei srcDepth); +typedef void(GLAD_API_PTR *PFNGLCOPYIMAGESUBDATANVPROC)( + GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, + GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, + GLsizei width, GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint x, GLint y, + GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, + const void *paths, GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, + GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); +typedef void(GLAD_API_PTR *PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint *lists); +typedef void(GLAD_API_PTR *PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint *memoryObjects); +typedef void(GLAD_API_PTR *PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint *queryHandle); +typedef GLuint(GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); +typedef GLhandleARB(GLAD_API_PTR *PFNGLCREATEPROGRAMOBJECTARBPROC)(void); +typedef void(GLAD_API_PTR *PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +typedef GLuint(GLAD_API_PTR *PFNGLCREATEPROGRESSFENCENVXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLCREATESEMAPHORESNVPROC)(GLsizei n, GLuint *semaphores); +typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); +typedef GLhandleARB(GLAD_API_PTR *PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); +typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar *string); +typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, + const GLchar *const *strings); +typedef void(GLAD_API_PTR *PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint *states); +typedef GLsync(GLAD_API_PTR *PFNGLCREATESYNCFROMCLEVENTARBPROC)(struct _cl_context *context, + struct _cl_event *event, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, + const void *userParam); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, + void *userParam); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, + const void *userParam); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, + GLenum severity, GLsizei count, + const GLuint *ids, GLboolean enabled); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, + GLenum severity, GLsizei count, + const GLuint *ids, GLboolean enabled); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEENABLEAMDPROC)(GLenum category, GLenum severity, + GLsizei count, const GLuint *ids, + GLboolean enabled); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, + GLenum severity, GLsizei length, + const GLchar *buf); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTAMDPROC)(GLenum category, GLenum severity, + GLuint id, GLsizei length, + const GLchar *buf); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, + GLenum severity, GLsizei length, + const GLchar *buf); +typedef void(GLAD_API_PTR *PFNGLDEFORMSGIXPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, + GLint ustride, GLint uorder, GLdouble v1, + GLdouble v2, GLint vstride, GLint vorder, + GLdouble w1, GLdouble w2, GLint wstride, + GLint worder, const GLdouble *points); +typedef void(GLAD_API_PTR *PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, + GLint ustride, GLint uorder, GLfloat v1, + GLfloat v2, GLint vstride, GLint vorder, + GLfloat w1, GLfloat w2, GLint wstride, + GLint worder, const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); +typedef void(GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint *lists); +typedef void(GLAD_API_PTR *PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint *fences); +typedef void(GLAD_API_PTR *PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint *fences); +typedef void(GLAD_API_PTR *PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint *memoryObjects); +typedef void(GLAD_API_PTR *PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, + const GLuint *names); +typedef void(GLAD_API_PTR *PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); +typedef void(GLAD_API_PTR *PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); +typedef void(GLAD_API_PTR *PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +typedef void(GLAD_API_PTR *PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint *tagIds); +typedef void(GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint *semaphores); +typedef void(GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); +typedef void(GLAD_API_PTR *PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint *states); +typedef void(GLAD_API_PTR *PFNGLDELETESYNCPROC)(GLsync sync); +typedef void(GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); +typedef void(GLAD_API_PTR *PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); +typedef void(GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func); +typedef void(GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f); +typedef void(GLAD_API_PTR *PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, + GLhandleARB attachedObj); +typedef void(GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void(GLAD_API_PTR *PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, + const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); +typedef void(GLAD_API_PTR *PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEIPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, + GLuint num_groups_z); +typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)( + GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, + GLuint group_size_y, GLuint group_size_z); +typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, + GLsizei count, + GLsizei instancecount, + GLuint baseinstance); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERPROC)(GLenum buf); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSADDRESSNVPROC)(GLenum primitiveMode, + const GLuint64 *indirects, + const GLsizei *sizes, GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSNVPROC)(GLenum primitiveMode, GLuint buffer, + const GLintptr *indirects, const GLsizei *sizes, + GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)(const GLuint64 *indirects, + const GLsizei *sizes, + const GLuint *states, + const GLuint *fbos, GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSSTATESNVPROC)(GLuint buffer, const GLintptr *indirects, + const GLsizei *sizes, + const GLuint *states, const GLuint *fbos, + GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, + const void *indices); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, + const void *indices, GLint basevertex); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, + const void *indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, + const void *indices, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, + GLenum type, const void *indices, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, + GLenum type, + const void *indices, + GLsizei instancecount, + GLuint baseinstance); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, + GLenum type, + const void *indices, + GLsizei instancecount, + GLint basevertex); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)( + GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, + GLint basevertex, GLuint baseinstance); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, + GLenum type, const void *indices, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei width); +typedef void(GLAD_API_PTR *PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, + GLuint end, GLint first, + GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const void *indices); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, + GLuint end, GLsizei count, + GLenum type, const void *indices, + GLint basevertex); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const void *indices); +typedef void(GLAD_API_PTR *PFNGLDRAWTEXTURENVPROC)(GLuint texture, GLuint sampler, GLfloat x0, + GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, + GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, + GLuint stream); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, + GLuint stream, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWVKIMAGENVPROC)(GLuint64 vkImage, GLuint sampler, GLfloat x0, + GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, + GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef void(GLAD_API_PTR *PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)(GLenum target, GLeglImageOES image, + const GLint *attrib_list); +typedef void(GLAD_API_PTR *PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)(GLuint texture, + GLeglImageOES image, + const GLint *attrib_list); +typedef void(GLAD_API_PTR *PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, + const GLboolean *pointer); +typedef void(GLAD_API_PTR *PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean **pointer, + GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap); +typedef void(GLAD_API_PTR *PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEIPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERNVXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDFRAGMENTSHADERATIPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDOCCLUSIONQUERYNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); +typedef void(GLAD_API_PTR *PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); +typedef void(GLAD_API_PTR *PFNGLENDQUERYPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLENDQUERYARBPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDVERTEXSHADEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD1XOESPROC)(GLfixed u); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD1XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLEVALUATEDEPTHVALUESARBPROC)(void); +typedef void(GLAD_API_PTR *PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +typedef void(GLAD_API_PTR *PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, + const GLfixed *buffer); +typedef GLsync(GLAD_API_PTR *PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, + GLenum mapping, GLenum componentUsage); +typedef void(GLAD_API_PTR *PFNGLFINISHPROC)(void); +typedef GLint(GLAD_API_PTR *PFNGLFINISHASYNCSGIXPROC)(GLuint *markerp); +typedef void(GLAD_API_PTR *PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); +typedef void(GLAD_API_PTR *PFNGLFINISHFENCENVPROC)(GLuint fence); +typedef void(GLAD_API_PTR *PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); +typedef void(GLAD_API_PTR *PFNGLFINISHTEXTURESUNXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFLUSHPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLFLUSHRASTERSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +typedef void(GLAD_API_PTR *PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDDEXTPROC)(GLdouble coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDDVEXTPROC)(const GLdouble *coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDFEXTPROC)(GLfloat coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDFVEXTPROC)(const GLfloat *coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDHVNVPROC)(const GLhalfNV *fog); +typedef void(GLAD_API_PTR *PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed *param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLFRAMETERMINATORGREMEDYPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFRAMEZOOMSGIXPROC)(GLint factor); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, + const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLenum target, GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLenum target, GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLenum target, + GLuint numsamples, + GLuint pixelindex, + const GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLenum face); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLenum face); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)(GLenum target, + GLenum attachment, + GLuint texture, GLint level, + GLint baseViewIndex, + GLsizei numViews); +typedef void(GLAD_API_PTR *PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, + GLfloat n, GLfloat f); +typedef void(GLAD_API_PTR *PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, + GLfixed n, GLfixed f); +typedef GLuint(GLAD_API_PTR *PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); +typedef void(GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint *fences); +typedef void(GLAD_API_PTR *PFNGLGENFENCESNVPROC)(GLsizei n, GLuint *fences); +typedef GLuint(GLAD_API_PTR *PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); +typedef void(GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint *names); +typedef void(GLAD_API_PTR *PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint *ids); +typedef GLuint(GLAD_API_PTR *PFNGLGENPATHSNVPROC)(GLsizei range); +typedef void(GLAD_API_PTR *PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +typedef void(GLAD_API_PTR *PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +typedef void(GLAD_API_PTR *PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint *tagIds); +typedef void(GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint *semaphores); +typedef GLuint(GLAD_API_PTR *PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, + GLenum range, GLuint components); +typedef void(GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint *arrays); +typedef GLuint(GLAD_API_PTR *PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); +typedef void(GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); +typedef void(GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); +typedef void(GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, + GLuint bufferIndex, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei *length, GLint *size, GLenum *type, + GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, + GLsizei maxLength, GLsizei *length, + GLint *size, GLenum *type, GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, + GLuint index, GLsizei bufSize, + GLsizei *length, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, + GLenum shadertype, GLuint index, + GLsizei bufSize, + GLsizei *length, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, + GLuint index, GLenum pname, + GLint *values); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei *length, GLint *size, GLenum *type, + GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, + GLsizei maxLength, GLsizei *length, + GLint *size, GLenum *type, + GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, GLsizei *length, + GLchar *uniformBlockName); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, + GLuint uniformBlockIndex, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, + GLsizei bufSize, GLsizei *length, + GLchar *uniformName); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, + const GLuint *uniformIndices, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, + GLsizei bufSize, GLsizei *length, + GLsizei *size, GLenum *type, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, + GLsizei maxCount, GLsizei *count, + GLhandleARB *obj); +typedef void(GLAD_API_PTR *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, + GLsizei *count, GLuint *shaders); +typedef GLint(GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, + const GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, + GLsizeiptrARB size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat *equation); +typedef void(GLAD_API_PTR *PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed *equation); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, + void *data); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, + void *table); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, + GLenum variable, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, + GLenum variable, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, + GLfloat *params); +typedef GLuint(GLAD_API_PTR *PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, + GLint lod, void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, + void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, + GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, + GLint lod, void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, + GLenum type, void *image); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, + GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat *v); +typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, + GLenum *sources, GLenum *types, + GLuint *ids, GLenum *severities, + GLsizei *lengths, GLchar *messageLog); +typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGAMDPROC)(GLuint count, GLsizei bufSize, + GLenum *categories, GLenum *severities, + GLuint *ids, GLsizei *lengths, + GLchar *message); +typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, + GLenum *sources, GLenum *types, + GLuint *ids, GLenum *severities, + GLsizei *lengths, GLchar *messageLog); +typedef void(GLAD_API_PTR *PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLdouble *data); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEI_VEXTPROC)(GLenum pname, GLuint index, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); +typedef GLenum(GLAD_API_PTR *PFNGLGETERRORPROC)(void); +typedef void(GLAD_API_PTR *PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, + GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint *queryId); +typedef void(GLAD_API_PTR *PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETFLOATI_VEXTPROC)(GLenum pname, GLuint index, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETFOGFUNCSGISPROC)(GLfloat *points); +typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)(GLenum target, GLenum pname, + GLuint numsamples, + GLuint pixelindex, GLsizei size, + GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, + GLint *params); +typedef GLenum(GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSPROC)(void); +typedef GLenum(GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); +typedef GLhandleARB(GLAD_API_PTR *PFNGLGETHANDLEARBPROC)(GLenum pname); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, void *values); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, + GLfixed *params); +typedef GLuint64(GLAD_API_PTR *PFNGLGETIMAGEHANDLEARBPROC)(GLuint texture, GLint level, + GLboolean layered, GLint layer, + GLenum format); +typedef GLuint64(GLAD_API_PTR *PFNGLGETIMAGEHANDLENVPROC)(GLuint texture, GLint level, + GLboolean layered, GLint layer, + GLenum format); +typedef void(GLAD_API_PTR *PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, + GLsizei *length, GLcharARB *infoLog); +typedef GLint(GLAD_API_PTR *PFNGLGETINSTRUMENTSSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, + GLuint64EXT *result); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT *result); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target, + GLenum internalformat, + GLsizei samples, GLenum pname, + GLsizei count, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, + GLenum pname, GLsizei count, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, + GLenum pname, GLsizei count, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, + GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, + GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, + GLsizei ustride, GLsizei vstride, + GLboolean packed, void *points); +typedef void(GLAD_API_PTR *PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed *v); +typedef void(GLAD_API_PTR *PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)( + GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, void *values); +typedef void(GLAD_API_PTR *PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum format, GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); +typedef void(GLAD_API_PTR *PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat *val); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)( + GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, + GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, + GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, + GLenum target, + GLuint index, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, + GLenum target, + GLuint index, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, + GLenum pname, void *string); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name, + GLsizei bufSize, GLint *stringlen, + GLchar *string); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar *name, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint *nextQueryId); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, + GLsizei *length, GLchar *label); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTLABELEXTPROC)(GLenum type, GLuint object, GLsizei bufSize, + GLsizei *length, GLchar *label); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, + GLsizei *length, GLchar *label); +typedef void(GLAD_API_PTR *PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte *commands); +typedef void(GLAD_API_PTR *PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat *dashArray); +typedef GLfloat(GLAD_API_PTR *PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, + GLsizei numSegments); +typedef void(GLAD_API_PTR *PFNGLGETPATHMETRICRANGENVPROC)(GLbitfield metricQueryMask, + GLuint firstPathName, GLsizei numPaths, + GLsizei stride, GLfloat *metrics); +typedef void(GLAD_API_PTR *PFNGLGETPATHMETRICSNVPROC)(GLbitfield metricQueryMask, GLsizei numPaths, + GLenum pathNameType, const void *paths, + GLuint pathBase, GLsizei stride, + GLfloat *metrics); +typedef void(GLAD_API_PTR *PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, + GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint *value); +typedef void(GLAD_API_PTR *PFNGLGETPATHSPACINGNVPROC)(GLenum pathListMode, GLsizei numPaths, + GLenum pathNameType, const void *paths, + GLuint pathBase, GLfloat advanceScale, + GLfloat kerningScale, GLenum transformType, + GLfloat *returnedSpacing); +typedef void(GLAD_API_PTR *PFNGLGETPERFCOUNTERINFOINTELPROC)( + GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, + GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, + GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, + GLuint64 *rawCounterMaxValue); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, + GLsizei dataSize, GLuint *data, + GLint *bytesWritten); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, + GLenum pname, void *data); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, + GLsizei bufSize, + GLsizei *length, + GLchar *counterString); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint *numCounters, + GLint *maxActiveCounters, + GLsizei counterSize, + GLuint *counters); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, + GLsizei *length, + GLchar *groupString); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint *numGroups, GLsizei groupsSize, + GLuint *groups); +typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYDATAINTELPROC)(GLuint queryHandle, GLuint flags, + GLsizei dataSize, void *data, + GLuint *bytesWritten); +typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar *queryName, GLuint *queryId); +typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYINFOINTELPROC)(GLuint queryId, GLuint queryNameLength, + GLchar *queryName, GLuint *dataSize, + GLuint *noCounters, GLuint *noInstances, + GLuint *capsMask); +typedef void(GLAD_API_PTR *PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed *values); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, + void **data); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERI_VEXTPROC)(GLenum pname, GLuint index, void **params); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERVPROC)(GLenum pname, void **params); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERVEXTPROC)(GLenum pname, void **params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, + GLsizei *length, GLenum *binaryFormat, + void *binary); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, + GLint *params); +typedef GLuint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, + GLenum programInterface, + const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, + GLenum programInterface, + const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, + GLenum programInterface, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, + GLuint index, GLsizei bufSize, + GLsizei *length, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEFVNVPROC)(GLuint program, GLenum programInterface, + GLuint index, GLsizei propCount, + const GLenum *props, GLsizei count, + GLsizei *length, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, + GLuint index, GLsizei propCount, + const GLenum *props, GLsizei count, + GLsizei *length, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, + GLenum pname, GLint *values); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void *string); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte *program); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, + GLuint *param); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, + GLenum pname, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, + GLenum pname, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, + GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, + GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, + GLenum type, void *row, void *column, + void *span); +typedef void(GLAD_API_PTR *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); +typedef void(GLAD_API_PTR *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, + GLenum precisiontype, GLint *range, + GLint *precision); +typedef void(GLAD_API_PTR *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, + GLsizei *length, GLchar *source); +typedef void(GLAD_API_PTR *PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, + GLsizei *length, GLcharARB *source); +typedef void(GLAD_API_PTR *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, + GLenum *rate); +typedef void(GLAD_API_PTR *PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)(GLenum rate, GLuint samples, + GLuint index, + GLint *location); +typedef void(GLAD_API_PTR *PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +typedef GLushort(GLAD_API_PTR *PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); +typedef const GLubyte *(GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name); +typedef const GLubyte *(GLAD_API_PTR *PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +typedef GLuint(GLAD_API_PTR *PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, + const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, + GLenum shadertype, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, + GLsizei *length, GLint *values); +typedef void(GLAD_API_PTR *PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, + GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, + GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, + GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, + GLfixed *params); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, + GLenum type, GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum format, GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint *params); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, GLenum type, GLsizei bufSize, + void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, + GLsizei bufSize, GLsizei *length, + GLsizei *size, GLenum *type, + GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, + GLsizei bufSize, + GLsizei *length, GLsizei *size, + GLenum *type, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, + GLint *location); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, + GLuint index, GLint64 *param); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, + GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); +typedef GLuint(GLAD_API_PTR *PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, + const GLchar *uniformBlockName); +typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, + const GLchar *const *uniformNames, + GLuint *uniformIndices); +typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, + const GLcharARB *name); +typedef GLintptr(GLAD_API_PTR *PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, + GLint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, + GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, + GLubyte *data); +typedef void(GLAD_API_PTR *PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void **data); +typedef GLint(GLAD_API_PTR *PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, + GLenum pname, GLint64 *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, + GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)(GLuint vaobj, GLuint index, + GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, + GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)(GLuint vaobj, GLuint index, + GLenum pname, void **param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, + void **param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, + GLint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, + void **pointer); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, + void **pointer); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, + void **pointer); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, + GLint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint *params); +typedef GLVULKANPROCNV(GLAD_API_PTR *PFNGLGETVKPROCADDRNVPROC)(const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, + GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, + GLsizei bufSize, void *img); +typedef void(GLAD_API_PTR *PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, + GLenum type, GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, + GLenum type, GLsizei bufSize, void *img); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); +typedef void(GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLHINTPGIPROC)(GLenum target, GLint mode); +typedef void(GLAD_API_PTR *PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, + GLenum internalformat, GLboolean sink); +typedef void(GLAD_API_PTR *PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void *params); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, + GLenum handleType, GLint fd); +typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)(GLuint memory, GLuint64 size, + GLenum handleType, void *handle); +typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)(GLuint memory, GLuint64 size, + GLenum handleType, const void *name); +typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, + GLint fd); +typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, + GLenum handleType, void *handle); +typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, + GLenum handleType, + const void *name); +typedef GLsync(GLAD_API_PTR *PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, + GLintptr external_sync, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); +typedef void(GLAD_API_PTR *PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLINDEXXOESPROC)(GLfixed component); +typedef void(GLAD_API_PTR *PFNGLINDEXXVOESPROC)(const GLfixed *component); +typedef void(GLAD_API_PTR *PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +typedef void(GLAD_API_PTR *PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker); +typedef void(GLAD_API_PTR *PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint *buffer); +typedef void(GLAD_API_PTR *PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, + GLuint pathB, GLfloat weight); +typedef void(GLAD_API_PTR *PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, + const GLenum *attachments); +typedef void(GLAD_API_PTR *PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, + GLsizei numAttachments, + const GLenum *attachments); +typedef void(GLAD_API_PTR *PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)( + GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, + const GLenum *attachments, GLint x, + GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth); +typedef GLboolean(GLAD_API_PTR *PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); +typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERARBPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); +typedef GLboolean(GLAD_API_PTR *PFNGLISCOMMANDLISTNVPROC)(GLuint list); +typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); +typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +typedef GLboolean(GLAD_API_PTR *PFNGLISFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLISFENCENVPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject); +typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name); +typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +typedef GLboolean(GLAD_API_PTR *PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISPATHNVPROC)(GLuint path); +typedef GLboolean(GLAD_API_PTR *PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, + GLfloat y); +typedef GLboolean(GLAD_API_PTR *PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMARBPROC)(GLuint program); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMNVPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef GLboolean(GLAD_API_PTR *PFNGLISQUERYPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISQUERYARBPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISSAMPLERPROC)(GLuint sampler); +typedef GLboolean(GLAD_API_PTR *PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore); +typedef GLboolean(GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); +typedef GLboolean(GLAD_API_PTR *PFNGLISSTATENVPROC)(GLuint state); +typedef GLboolean(GLAD_API_PTR *PFNGLISSYNCPROC)(GLsync sync); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREEXTPROC)(GLuint texture); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); +typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXARRAYPROC)(GLuint array); +typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); +typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLLGPUCOPYIMAGESUBDATANVXPROC)( + GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, + GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, + GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, + GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLLGPUINTERLOCKNVXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)(GLbitfield gpuMask, GLuint buffer, + GLintptr offset, GLsizeiptr size, + const void *data); +typedef void(GLAD_API_PTR *PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, + const GLchar *label); +typedef void(GLAD_API_PTR *PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed *param); +typedef void(GLAD_API_PTR *PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); +typedef void(GLAD_API_PTR *PFNGLLINEWIDTHXOESPROC)(GLfixed width); +typedef void(GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); +typedef void(GLAD_API_PTR *PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)( + GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, + const GLuint *states, const GLuint *fbos, GLuint count); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLLOADMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, + const GLubyte *program); +typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLLOGICOPPROC)(GLenum opcode); +typedef void(GLAD_API_PTR *PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAP1XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, + GLint order, GLfixed points); +typedef void(GLAD_API_PTR *PFNGLMAP2XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, + GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, + GLint vorder, GLfixed points); +typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void(GLAD_API_PTR *PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, + GLsizei ustride, GLsizei vstride, + GLint uorder, GLint vorder, + GLboolean packed, const void *points); +typedef void(GLAD_API_PTR *PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2); +typedef void(GLAD_API_PTR *PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, + GLfixed v2); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void *(GLAD_API_PTR *PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void *(GLAD_API_PTR *PFNGLMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level, + GLbitfield access, GLint *stride, + GLenum *layout); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, + GLdouble u2, GLint stride, GLint order, + const GLdouble *points); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, + GLfloat u2, GLint stride, GLint order, + const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, + GLdouble u2, GLint ustride, + GLint uorder, GLdouble v1, GLdouble v2, + GLint vstride, GLint vorder, + const GLdouble *points); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, + GLfloat u2, GLint ustride, GLint uorder, + GLfloat v1, GLfloat v2, GLint vstride, + GLint vorder, const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed *param); +typedef void(GLAD_API_PTR *PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, GLdouble zNear, + GLdouble zFar); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte *indices); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint *indices); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort *indices); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, GLdouble zNear, + GLdouble zFar); +typedef void(GLAD_API_PTR *PFNGLMATRIXPOPEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLMATRIXPUSHEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, + GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); +typedef void(GLAD_API_PTR *PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); +typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); +typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); +typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers); +typedef void(GLAD_API_PTR *PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMINSAMPLESHADINGPROC)(GLfloat value); +typedef void(GLAD_API_PTR *PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); +typedef void(GLAD_API_PTR *PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, + GLboolean sink); +typedef void(GLAD_API_PTR *PFNGLMULTMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, + const GLsizei *count, GLsizei drawcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, const GLint *first, + const GLsizei *count, GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, + GLsizei drawcount, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)(GLenum mode, const void *indirect, + GLsizei primcount, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, + GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)(GLenum mode, + const void *indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)(GLenum mode, + const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint *first, + const GLsizei *count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, + GLenum type, const void *const *indices, + GLsizei drawcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, + GLenum type, + const void *const *indices, + GLsizei drawcount, + const GLint *basevertex); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei *count, + GLenum type, const void *const *indices, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, + const void *indirect, + GLsizei drawcount, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)(GLenum mode, GLenum type, + const void *indirect, + GLsizei primcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, + GLsizei stride, GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)(GLenum mode, GLenum type, + const void *indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, + const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)(GLenum mode, GLenum type, + const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)(GLintptr indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, + GLsizei drawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, + GLuint end, const GLint *first, + const GLsizei *count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum *mode, const GLint *first, + const GLsizei *count, GLsizei primcount, + GLint modestride); +typedef void(GLAD_API_PTR *PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum *mode, + const GLsizei *count, GLenum type, + const void *const *indices, + GLsizei primcount, GLint modestride); +typedef void(GLAD_API_PTR *PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, + GLenum internalformat, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, + GLbyte r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, + GLdouble r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, + GLfloat r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, + GLhalfNV r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, + GLshort r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, + GLfixed r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, + GLbyte r, GLbyte q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, + GLdouble r, GLdouble q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, + GLfloat r, GLfloat q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, + GLhalfNV r, GLhalfNV q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, + GLint q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, + GLshort r, GLshort q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, + GLfixed r, GLfixed q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, + GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLdouble param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLint border, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLsizei width, + GLsizei height, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTICASTBARRIERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)( + GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void(GLAD_API_PTR *PFNGLMULTICASTBUFFERSUBDATANVPROC)(GLbitfield gpuMask, GLuint buffer, + GLintptr offset, GLsizeiptr size, + const void *data); +typedef void(GLAD_API_PTR *PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)( + GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, + GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)( + GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, + GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, + GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void(GLAD_API_PTR *PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, + GLsizei count, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, + GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)(GLuint gpu, GLuint index, + GLfloat xcoeff, + GLfloat ycoeff); +typedef void(GLAD_API_PTR *PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLenum usage); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLenum usage); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, GLuint memory, + GLuint64 memOffset, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEEXTPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)( + GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, const void *data); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, const void *data); +typedef void(GLAD_API_PTR *PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)(GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, + const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLuint framebuffer, + GLuint numsamples, + GLuint pixelindex, + const GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, + GLenum attachment, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLuint texture, GLint level, + GLenum face); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, + GLenum attachment, GLuint texture, + GLint level, GLint layer); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, + GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, + GLuint index, GLdouble x, + GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, + GLuint index, GLfloat x, + GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, + GLuint index, GLint x, + GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, + GLenum target, GLuint index, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, + GLenum target, GLuint index, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLsizei count, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)( + GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, + GLenum format, GLsizei len, + const void *string); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, + GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)( + GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)( + GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDSTRINGARBPROC)(GLenum type, GLint namelen, const GLchar *name, + GLint stringlen, const GLchar *string); +typedef GLuint(GLAD_API_PTR *PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void *pointer, + GLenum usage); +typedef void(GLAD_API_PTR *PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void(GLAD_API_PTR *PFNGLNORMAL3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); +typedef void(GLAD_API_PTR *PFNGLNORMAL3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void **pointer); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, + GLbyte nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, + GLdouble nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, + GLfloat nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, + GLshort nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, + const GLchar *label); +typedef void(GLAD_API_PTR *PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, + const GLchar *label); +typedef GLenum(GLAD_API_PTR *PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, + GLenum option); +typedef GLenum(GLAD_API_PTR *PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, + GLenum option); +typedef void(GLAD_API_PTR *PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, + GLfloat n, GLfloat f); +typedef void(GLAD_API_PTR *PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, + GLfixed n, GLfixed f); +typedef void(GLAD_API_PTR *PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); +typedef void(GLAD_API_PTR *PFNGLPASSTHROUGHXOESPROC)(GLfixed token); +typedef void(GLAD_API_PTR *PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLPATHCOMMANDSNVPROC)(GLuint path, GLsizei numCommands, + const GLubyte *commands, GLsizei numCoords, + GLenum coordType, const void *coords); +typedef void(GLAD_API_PTR *PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, + const void *coords); +typedef void(GLAD_API_PTR *PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); +typedef void(GLAD_API_PTR *PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, + const GLfloat *dashArray); +typedef GLenum(GLAD_API_PTR *PFNGLPATHGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, + GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum(GLAD_API_PTR *PFNGLPATHGLYPHINDEXRANGENVPROC)(GLenum fontTarget, + const void *fontName, + GLbitfield fontStyle, + GLuint pathParameterTemplate, + GLfloat emScale, GLuint *baseAndCount); +typedef void(GLAD_API_PTR *PFNGLPATHGLYPHRANGENVPROC)(GLuint firstPathName, GLenum fontTarget, + const void *fontName, GLbitfield fontStyle, + GLuint firstGlyph, GLsizei numGlyphs, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale); +typedef void(GLAD_API_PTR *PFNGLPATHGLYPHSNVPROC)(GLuint firstPathName, GLenum fontTarget, + const void *fontName, GLbitfield fontStyle, + GLsizei numGlyphs, GLenum type, + const void *charcodes, GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum(GLAD_API_PTR *PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, + GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, + GLfloat emScale); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); +typedef void(GLAD_API_PTR *PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, + const void *pathString); +typedef void(GLAD_API_PTR *PFNGLPATHSUBCOMMANDSNVPROC)(GLuint path, GLsizei commandStart, + GLsizei commandsToDelete, + GLsizei numCommands, const GLubyte *commands, + GLsizei numCoords, GLenum coordType, + const void *coords); +typedef void(GLAD_API_PTR *PFNGLPATHSUBCOORDSNVPROC)(GLuint path, GLsizei coordStart, + GLsizei numCoords, GLenum coordType, + const void *coords); +typedef void(GLAD_API_PTR *PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed *values); +typedef void(GLAD_API_PTR *PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor); +typedef GLboolean(GLAD_API_PTR *PFNGLPOINTALONGPATHNVPROC)(GLuint path, GLsizei startSegment, + GLsizei numSegments, GLfloat distance, + GLfloat *x, GLfloat *y, + GLfloat *tangentX, GLfloat *tangentY); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLPOINTSIZEPROC)(GLfloat size); +typedef void(GLAD_API_PTR *PFNGLPOINTSIZEXOESPROC)(GLfixed size); +typedef GLint(GLAD_API_PTR *PFNGLPOLLASYNCSGIXPROC)(GLuint *markerp); +typedef GLint(GLAD_API_PTR *PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint *marker_p); +typedef void(GLAD_API_PTR *PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, + GLfloat clamp); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, + GLfloat clamp); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); +typedef void(GLAD_API_PTR *PFNGLPOPDEBUGGROUPPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPOPGROUPMARKEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPRESENTFRAMEDUALFILLNVPROC)( + GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, + GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, + GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +typedef void(GLAD_API_PTR *PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, + GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, GLenum type, + GLenum target0, GLuint fill0, GLuint key0, + GLenum target1, GLuint fill1, GLuint key1); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVEBOUNDINGBOXARBPROC)(GLfloat minX, GLfloat minY, + GLfloat minZ, GLfloat minW, + GLfloat maxX, GLfloat maxY, + GLfloat maxZ, GLfloat maxW); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint *textures, + const GLclampf *priorities); +typedef void(GLAD_API_PTR *PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint *textures, + const GLfixed *priorities); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, + const void *binary, GLsizei length); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, + GLuint bindingIndex, + GLuint wordIndex, GLsizei count, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, + GLuint bindingIndex, + GLuint wordIndex, GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint bindingIndex, + GLuint wordIndex, GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, + GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, + GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, + GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, + GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, + GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, + GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, + GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, + GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, + GLint x, GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, + GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, + GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, + GLsizei count, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, + GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, + GLint value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, + GLint value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program, GLint location, + GLenum genMode, GLint components, + const GLfloat *coeffs); +typedef void(GLAD_API_PTR *PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, + const void *string); +typedef void(GLAD_API_PTR *PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, + GLdouble x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, + GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, + GLint64 x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, + GLint64EXT x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, + GLuint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, + GLdouble v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, + GLdouble y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, + GLint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, + GLint64 x, GLint64 y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, + GLint64EXT x, GLint64EXT y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x, GLuint64 y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x, GLuint64EXT y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, + GLdouble v1, GLdouble v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, + GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, + GLint64 x, GLint64 y, GLint64 z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64NVPROC)(GLuint program, GLint location, + GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x, GLuint64 y, GLuint64 z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, + GLdouble v1, GLdouble v2, GLdouble v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DEXTPROC)(GLuint program, GLint location, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2, GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2, GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2, GLint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64ARBPROC)(GLuint program, GLint location, + GLint64 x, GLint64 y, GLint64 z, + GLint64 w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64NVPROC)(GLuint program, GLint location, + GLint64EXT x, GLint64EXT y, GLint64EXT z, + GLint64EXT w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2, GLint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2, GLuint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x, GLuint64 y, GLuint64 z, + GLuint64 w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z, GLuint64EXT w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2, GLuint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, + GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, + GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64 *values); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64 *values); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, + GLuint64EXT value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMUI64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); +typedef void(GLAD_API_PTR *PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, + const GLchar *message); +typedef void(GLAD_API_PTR *PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker); +typedef void(GLAD_API_PTR *PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +typedef GLbitfield(GLAD_API_PTR *PFNGLQUERYMATRIXXOESPROC)(GLfixed *mantissa, GLint *exponent); +typedef void(GLAD_API_PTR *PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, + GLenum pname, GLuint param); +typedef GLint(GLAD_API_PTR *PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint count, + GLint *buffer); +typedef void(GLAD_API_PTR *PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar *tagString); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS4XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLREADBUFFERPROC)(GLenum src); +typedef void(GLAD_API_PTR *PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); +typedef void(GLAD_API_PTR *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + void *data); +typedef void(GLAD_API_PTR *PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + void *data); +typedef void(GLAD_API_PTR *PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void(GLAD_API_PTR *PFNGLRECTXVOESPROC)(const GLfixed *v1, const GLfixed *v2); +typedef void(GLAD_API_PTR *PFNGLREFERENCEPLANESGIXPROC)(const GLdouble *equation); +typedef GLboolean(GLAD_API_PTR *PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key); +typedef void(GLAD_API_PTR *PFNGLRELEASESHADERCOMPILERPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte *code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, + GLfloat g, GLfloat b, + GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *c, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, + GLubyte g, GLubyte b, + GLubyte a, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint *rc, + const GLubyte *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, + GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, + GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, + GLfloat t, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *tc, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint *code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort *code); +typedef void(GLAD_API_PTR *PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLRESETMINMAXEXTPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLRESIZEBUFFERSMESAPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRESOLVEDEPTHVALUESNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); +typedef void(GLAD_API_PTR *PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, + const GLint *param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, + const GLuint *param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, + const GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, + const GLint *param); +typedef void(GLAD_API_PTR *PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, + const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, + GLdouble blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, + GLhalfNV blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, + GLushort blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, + GLint stride, + const void **pointer, + GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, + GLuint group, GLint numCounters, + GLuint *counterList); +typedef void(GLAD_API_PTR *PFNGLSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, + const GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *row, const void *column); +typedef void(GLAD_API_PTR *PFNGLSETFENCEAPPLEPROC)(GLuint fence); +typedef void(GLAD_API_PTR *PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +typedef void(GLAD_API_PTR *PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void *addr); +typedef void(GLAD_API_PTR *PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void *addr); +typedef void(GLAD_API_PTR *PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, + const GLfloat *val); +typedef void(GLAD_API_PTR *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, + GLenum binaryFormat, const void *binary, + GLsizei length); +typedef void(GLAD_API_PTR *PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); +typedef void(GLAD_API_PTR *PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void(GLAD_API_PTR *PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, + GLuint arg3); +typedef void(GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, + const GLchar *const *string, const GLint *length); +typedef void(GLAD_API_PTR *PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, + const GLcharARB **string, const GLint *length); +typedef void(GLAD_API_PTR *PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, + GLuint storageBlockIndex, + GLuint storageBlockBinding); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint first, + GLsizei count, const GLenum *rates); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, + const GLint *locations); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); +typedef void(GLAD_API_PTR *PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, + const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLSIGNALSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, + const GLuint *buffers, + GLuint numTextureBarriers, + const GLuint *textures, + const GLenum *dstLayouts); +typedef void(GLAD_API_PTR *PFNGLSIGNALSEMAPHOREUI64NVXPROC)(GLuint signalGpu, + GLsizei fenceObjectCount, + const GLuint *semaphoreArray, + const GLuint64 *fenceValueArray); +typedef void(GLAD_API_PTR *PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); +typedef void(GLAD_API_PTR *PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +typedef void(GLAD_API_PTR *PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar *pEntryPoint, + GLuint numSpecializationConstants, + const GLuint *pConstantIndex, + const GLuint *pConstantValue); +typedef void(GLAD_API_PTR *PFNGLSPECIALIZESHADERARBPROC)(GLuint shader, const GLchar *pEntryPoint, + GLuint numSpecializationConstants, + const GLuint *pConstantIndex, + const GLuint *pConstantValue); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLSTARTINSTRUMENTSSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, + GLuint stencilClearTag); +typedef void(GLAD_API_PTR *PFNGLSTENCILFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, + GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, + GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, + GLint ref, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, + GLenum dppass); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, + GLenum dppass); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value); +typedef void(GLAD_API_PTR *PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, + GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, + GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, + GLuint mask, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, + GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path, GLint reference, + GLuint mask, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); +typedef void(GLAD_API_PTR *PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void *string); +typedef void(GLAD_API_PTR *PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); +typedef void(GLAD_API_PTR *PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, + GLenum outZ, GLenum outW); +typedef void(GLAD_API_PTR *PFNGLSYNCTEXTUREINTELPROC)(GLuint texture); +typedef void(GLAD_API_PTR *PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3BVEXTPROC)(const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3DVEXTPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3FVEXTPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3IVEXTPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3SVEXTPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); +typedef void(GLAD_API_PTR *PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); +typedef void(GLAD_API_PTR *PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); +typedef GLboolean(GLAD_API_PTR *PFNGLTESTFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLTESTFENCENVPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); +typedef void(GLAD_API_PTR *PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, + GLuint buffer, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint *param); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1BOESPROC)(GLbyte s); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1XOESPROC)(GLfixed s); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, + GLfloat g, GLfloat b, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLfloat *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, + GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLfloat *c, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, + GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLubyte *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, + GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)( + GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, + GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat *tc, + const GLfloat *c, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, + GLfloat q, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, + const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, + const GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLint border, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, + GLenum format, GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLsizei size4d, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXPAGECOMMITMENTARBPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXPAGECOMMITMENTMEMNVPROC)(GLenum target, GLint layer, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLuint memory, GLuint64 offset, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, + const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM1DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM2DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, + GLenum internalFormat, + GLsizei width, GLsizei height, + GLboolean fixedSampleLocations, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM3DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)( + GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, + GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGESPARSEAMDPROC)(GLenum target, GLenum internalFormat, + GLsizei width, GLsizei height, + GLsizei depth, GLsizei layers, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint woffset, + GLsizei width, GLsizei height, GLsizei depth, + GLsizei size4d, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBARRIERPROC)(void); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBARRIERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, + GLenum internalformat, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, + GLuint buffer, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERRANGEEXTPROC)(GLuint texture, GLenum target, + GLenum internalformat, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, + GLboolean blue, GLboolean alpha); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLint border, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)( + GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, + GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)(GLuint texture, GLenum target, + GLsizei samples, + GLint internalFormat, + GLsizei width, GLsizei height, + GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)( + GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, + GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, + GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)( + GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, + GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); +typedef void(GLAD_API_PTR *PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLTEXTURENORMALEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPAGECOMMITMENTEXTPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)(GLuint texture, GLint layer, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLuint memory, + GLuint64 offset, GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, + const GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, + const GLint *param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, + GLenum internalformat, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, + GLsizei levels, GLenum internalformat, + GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, + GLsizei levels, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, + GLsizei levels, GLenum internalformat, + GLsizei width, GLsizei height, + GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)( + GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM1DEXTPROC)(GLuint texture, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM2DEXTPROC)(GLuint texture, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)( + GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, + GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM3DEXTPROC)(GLuint texture, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)( + GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, + GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGESPARSEAMDPROC)(GLuint texture, GLenum target, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLsizei layers, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLsizei width, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, + GLenum internalformat, GLuint minlevel, + GLuint numlevels, GLuint minlayer, + GLuint numlayers); +typedef void(GLAD_API_PTR *PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, + GLenum transform); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint *attribs, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, + GLuint buffer, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)(GLsizei count, + const GLint *attribs, + GLsizei nbuffers, + const GLint *bufstreams, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, + const GLchar *const *varyings, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, + const GLchar *const *varyings, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, + const GLint *locations, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMPATHNVPROC)(GLuint resultPath, GLuint srcPath, + GLenum transformType, + const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, + GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, + GLint64 z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, + GLint64EXT z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, + GLuint64 z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, + GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, + GLfloat v2, GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, + GLint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, + GLint64 w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, + GLint64EXT z, GLint64EXT w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, + GLint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, + GLuint64 z, GLuint64 w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z, GLuint64EXT w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, + GLuint uniformBlockBinding); +typedef void(GLAD_API_PTR *PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, + const GLuint *indices); +typedef void(GLAD_API_PTR *PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNLOCKARRAYSEXTPROC)(void); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPBUFFERPROC)(GLenum target); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPBUFFERARBPROC)(GLenum target); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, + GLsizei size, const void *pointer, + GLenum preserve); +typedef void(GLAD_API_PTR *PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); +typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, + GLuint program); +typedef void(GLAD_API_PTR *PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); +typedef void(GLAD_API_PTR *PFNGLVDPAUFININVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLVDPAUGETSURFACEIVNVPROC)(GLvdpauSurfaceNV surface, GLenum pname, + GLsizei count, GLsizei *length, + GLint *values); +typedef void(GLAD_API_PTR *PFNGLVDPAUINITNVPROC)(const void *vdpDevice, const void *getProcAddress); +typedef GLboolean(GLAD_API_PTR *PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface); +typedef void(GLAD_API_PTR *PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, + const GLvdpauSurfaceNV *surfaces); +typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)( + const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)( + const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)( + const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, + GLboolean isFrameStructure); +typedef void(GLAD_API_PTR *PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access); +typedef void(GLAD_API_PTR *PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, + const GLvdpauSurfaceNV *surfaces); +typedef void(GLAD_API_PTR *PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface); +typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); +typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef void(GLAD_API_PTR *PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, + GLuint buffer, GLuint offset); +typedef void(GLAD_API_PTR *PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, + const void *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort *addr); +typedef void(GLAD_API_PTR *PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y); +typedef void(GLAD_API_PTR *PFNGLVERTEX2BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); +typedef void(GLAD_API_PTR *PFNGLVERTEX2HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEX2XOESPROC)(GLfixed x); +typedef void(GLAD_API_PTR *PFNGLVERTEX2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z); +typedef void(GLAD_API_PTR *PFNGLVERTEX3BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void(GLAD_API_PTR *PFNGLVERTEX3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y); +typedef void(GLAD_API_PTR *PFNGLVERTEX3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEX4BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void(GLAD_API_PTR *PFNGLVERTEX4HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLVERTEX4XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, + GLuint bindingindex); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, + GLint size, GLenum type, + GLboolean normalized, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)(GLuint vaobj, + GLuint bindingindex, + GLuint buffer, GLintptr offset, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, + GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum texunit, GLint size, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLuint bindingindex); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, + GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLint size, GLenum type, + GLboolean normalized, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLuint index, GLint size, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLuint index, GLint size, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)( + GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, + GLuint bindingindex, + GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, + GLuint buffer, GLintptr offset, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, + GLsizei count, const GLuint *buffers, + const GLintptr *offsets, + const GLsizei *strides); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, + GLhalfNV z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, + GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, + GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, + GLubyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, + GLubyte z, GLubyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, + GLhalfNV z, GLhalfNV w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, + GLshort z, GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, + GLubyte z, GLubyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, + GLenum type, GLboolean normalized, + GLsizei stride, GLuint buffer, + GLuint offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, + GLboolean normalized, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBFORMATNVPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, + GLuint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, + GLint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, + GLint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, + GLenum type, GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, + GLuint64EXT y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, + GLint64EXT z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, + GLuint64EXT y, GLuint64EXT z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, + GLint64EXT z, GLint64EXT w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4UI64NVPROC)(GLuint index, GLuint64EXT x, + GLuint64EXT y, GLuint64EXT z, + GLuint64EXT w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, + GLenum type, GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, + const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDARBPROC)(GLint count); +typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, + GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, + GLint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, + GLshort z, GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat *weight); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV *weight); +typedef GLenum(GLAD_API_PTR *PFNGLVIDEOCAPTURENVPROC)(GLuint video_capture_slot, + GLuint *sequence_num, + GLuint64EXT *capture_time); +typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, + GLfloat h); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, + GLfloat ycoeff); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTSWIZZLENVPROC)(GLuint index, GLenum swizzlex, + GLenum swizzley, GLenum swizzlez, + GLenum swizzlew); +typedef void(GLAD_API_PTR *PFNGLWAITSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, + const GLuint *buffers, + GLuint numTextureBarriers, + const GLuint *textures, + const GLenum *srcLayouts); +typedef void(GLAD_API_PTR *PFNGLWAITSEMAPHOREUI64NVXPROC)(GLuint waitGpu, GLsizei fenceObjectCount, + const GLuint *semaphoreArray, + const GLuint64 *fenceValueArray); +typedef void(GLAD_API_PTR *PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void(GLAD_API_PTR *PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +typedef void(GLAD_API_PTR *PFNGLWEIGHTPATHSNVPROC)(GLuint resultPath, GLsizei numPaths, + const GLuint *paths, const GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTIVARBPROC)(GLint size, const GLint *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort *weights); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DVARBPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FVARBPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IVARBPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IVMESAPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SVARBPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SVMESAPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DVARBPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FVARBPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IVARBPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IVMESAPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SVARBPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SVMESAPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4IVMESAPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4SVMESAPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, + const GLint *box); +typedef void(GLAD_API_PTR *PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, + GLenum outZ, GLenum outW); + +typedef struct GladGLContext { + PFNGLACCUMXOESPROC AccumxOES; + PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC AcquireKeyedMutexWin32EXT; + PFNGLACTIVEPROGRAMEXTPROC ActiveProgramEXT; + PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram; + PFNGLACTIVESTENCILFACEEXTPROC ActiveStencilFaceEXT; + PFNGLACTIVETEXTUREPROC ActiveTexture; + PFNGLACTIVETEXTUREARBPROC ActiveTextureARB; + PFNGLACTIVEVARYINGNVPROC ActiveVaryingNV; + PFNGLALPHAFRAGMENTOP1ATIPROC AlphaFragmentOp1ATI; + PFNGLALPHAFRAGMENTOP2ATIPROC AlphaFragmentOp2ATI; + PFNGLALPHAFRAGMENTOP3ATIPROC AlphaFragmentOp3ATI; + PFNGLALPHAFUNCXOESPROC AlphaFuncxOES; + PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC AlphaToCoverageDitherControlNV; + PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC ApplyFramebufferAttachmentCMAAINTEL; + PFNGLAPPLYTEXTUREEXTPROC ApplyTextureEXT; + PFNGLAREPROGRAMSRESIDENTNVPROC AreProgramsResidentNV; + PFNGLARETEXTURESRESIDENTEXTPROC AreTexturesResidentEXT; + PFNGLARRAYELEMENTEXTPROC ArrayElementEXT; + PFNGLARRAYOBJECTATIPROC ArrayObjectATI; + PFNGLASYNCCOPYBUFFERSUBDATANVXPROC AsyncCopyBufferSubDataNVX; + PFNGLASYNCCOPYIMAGESUBDATANVXPROC AsyncCopyImageSubDataNVX; + PFNGLASYNCMARKERSGIXPROC AsyncMarkerSGIX; + PFNGLATTACHOBJECTARBPROC AttachObjectARB; + PFNGLATTACHSHADERPROC AttachShader; + PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender; + PFNGLBEGINCONDITIONALRENDERNVPROC BeginConditionalRenderNV; + PFNGLBEGINCONDITIONALRENDERNVXPROC BeginConditionalRenderNVX; + PFNGLBEGINFRAGMENTSHADERATIPROC BeginFragmentShaderATI; + PFNGLBEGINOCCLUSIONQUERYNVPROC BeginOcclusionQueryNV; + PFNGLBEGINPERFMONITORAMDPROC BeginPerfMonitorAMD; + PFNGLBEGINPERFQUERYINTELPROC BeginPerfQueryINTEL; + PFNGLBEGINQUERYPROC BeginQuery; + PFNGLBEGINQUERYARBPROC BeginQueryARB; + PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed; + PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback; + PFNGLBEGINTRANSFORMFEEDBACKEXTPROC BeginTransformFeedbackEXT; + PFNGLBEGINTRANSFORMFEEDBACKNVPROC BeginTransformFeedbackNV; + PFNGLBEGINVERTEXSHADEREXTPROC BeginVertexShaderEXT; + PFNGLBEGINVIDEOCAPTURENVPROC BeginVideoCaptureNV; + PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation; + PFNGLBINDATTRIBLOCATIONARBPROC BindAttribLocationARB; + PFNGLBINDBUFFERPROC BindBuffer; + PFNGLBINDBUFFERARBPROC BindBufferARB; + PFNGLBINDBUFFERBASEPROC BindBufferBase; + PFNGLBINDBUFFERBASEEXTPROC BindBufferBaseEXT; + PFNGLBINDBUFFERBASENVPROC BindBufferBaseNV; + PFNGLBINDBUFFEROFFSETEXTPROC BindBufferOffsetEXT; + PFNGLBINDBUFFEROFFSETNVPROC BindBufferOffsetNV; + PFNGLBINDBUFFERRANGEPROC BindBufferRange; + PFNGLBINDBUFFERRANGEEXTPROC BindBufferRangeEXT; + PFNGLBINDBUFFERRANGENVPROC BindBufferRangeNV; + PFNGLBINDBUFFERSBASEPROC BindBuffersBase; + PFNGLBINDBUFFERSRANGEPROC BindBuffersRange; + PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation; + PFNGLBINDFRAGDATALOCATIONEXTPROC BindFragDataLocationEXT; + PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed; + PFNGLBINDFRAGMENTSHADERATIPROC BindFragmentShaderATI; + PFNGLBINDFRAMEBUFFERPROC BindFramebuffer; + PFNGLBINDFRAMEBUFFEREXTPROC BindFramebufferEXT; + PFNGLBINDIMAGETEXTUREPROC BindImageTexture; + PFNGLBINDIMAGETEXTUREEXTPROC BindImageTextureEXT; + PFNGLBINDIMAGETEXTURESPROC BindImageTextures; + PFNGLBINDLIGHTPARAMETEREXTPROC BindLightParameterEXT; + PFNGLBINDMATERIALPARAMETEREXTPROC BindMaterialParameterEXT; + PFNGLBINDMULTITEXTUREEXTPROC BindMultiTextureEXT; + PFNGLBINDPARAMETEREXTPROC BindParameterEXT; + PFNGLBINDPROGRAMARBPROC BindProgramARB; + PFNGLBINDPROGRAMNVPROC BindProgramNV; + PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline; + PFNGLBINDRENDERBUFFERPROC BindRenderbuffer; + PFNGLBINDRENDERBUFFEREXTPROC BindRenderbufferEXT; + PFNGLBINDSAMPLERPROC BindSampler; + PFNGLBINDSAMPLERSPROC BindSamplers; + PFNGLBINDSHADINGRATEIMAGENVPROC BindShadingRateImageNV; + PFNGLBINDTEXGENPARAMETEREXTPROC BindTexGenParameterEXT; + PFNGLBINDTEXTUREPROC BindTexture; + PFNGLBINDTEXTUREEXTPROC BindTextureEXT; + PFNGLBINDTEXTUREUNITPROC BindTextureUnit; + PFNGLBINDTEXTUREUNITPARAMETEREXTPROC BindTextureUnitParameterEXT; + PFNGLBINDTEXTURESPROC BindTextures; + PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback; + PFNGLBINDTRANSFORMFEEDBACKNVPROC BindTransformFeedbackNV; + PFNGLBINDVERTEXARRAYPROC BindVertexArray; + PFNGLBINDVERTEXARRAYAPPLEPROC BindVertexArrayAPPLE; + PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer; + PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers; + PFNGLBINDVERTEXSHADEREXTPROC BindVertexShaderEXT; + PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC BindVideoCaptureStreamBufferNV; + PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC BindVideoCaptureStreamTextureNV; + PFNGLBINORMAL3BEXTPROC Binormal3bEXT; + PFNGLBINORMAL3BVEXTPROC Binormal3bvEXT; + PFNGLBINORMAL3DEXTPROC Binormal3dEXT; + PFNGLBINORMAL3DVEXTPROC Binormal3dvEXT; + PFNGLBINORMAL3FEXTPROC Binormal3fEXT; + PFNGLBINORMAL3FVEXTPROC Binormal3fvEXT; + PFNGLBINORMAL3IEXTPROC Binormal3iEXT; + PFNGLBINORMAL3IVEXTPROC Binormal3ivEXT; + PFNGLBINORMAL3SEXTPROC Binormal3sEXT; + PFNGLBINORMAL3SVEXTPROC Binormal3svEXT; + PFNGLBINORMALPOINTEREXTPROC BinormalPointerEXT; + PFNGLBITMAPXOESPROC BitmapxOES; + PFNGLBLENDBARRIERKHRPROC BlendBarrierKHR; + PFNGLBLENDBARRIERNVPROC BlendBarrierNV; + PFNGLBLENDCOLORPROC BlendColor; + PFNGLBLENDCOLOREXTPROC BlendColorEXT; + PFNGLBLENDCOLORXOESPROC BlendColorxOES; + PFNGLBLENDEQUATIONPROC BlendEquation; + PFNGLBLENDEQUATIONEXTPROC BlendEquationEXT; + PFNGLBLENDEQUATIONINDEXEDAMDPROC BlendEquationIndexedAMD; + PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate; + PFNGLBLENDEQUATIONSEPARATEEXTPROC BlendEquationSeparateEXT; + PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC BlendEquationSeparateIndexedAMD; + PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei; + PFNGLBLENDEQUATIONSEPARATEIARBPROC BlendEquationSeparateiARB; + PFNGLBLENDEQUATIONIPROC BlendEquationi; + PFNGLBLENDEQUATIONIARBPROC BlendEquationiARB; + PFNGLBLENDFUNCPROC BlendFunc; + PFNGLBLENDFUNCINDEXEDAMDPROC BlendFuncIndexedAMD; + PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate; + PFNGLBLENDFUNCSEPARATEEXTPROC BlendFuncSeparateEXT; + PFNGLBLENDFUNCSEPARATEINGRPROC BlendFuncSeparateINGR; + PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC BlendFuncSeparateIndexedAMD; + PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei; + PFNGLBLENDFUNCSEPARATEIARBPROC BlendFuncSeparateiARB; + PFNGLBLENDFUNCIPROC BlendFunci; + PFNGLBLENDFUNCIARBPROC BlendFunciARB; + PFNGLBLENDPARAMETERINVPROC BlendParameteriNV; + PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer; + PFNGLBLITFRAMEBUFFEREXTPROC BlitFramebufferEXT; + PFNGLBLITFRAMEBUFFERLAYEREXTPROC BlitFramebufferLayerEXT; + PFNGLBLITFRAMEBUFFERLAYERSEXTPROC BlitFramebufferLayersEXT; + PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer; + PFNGLBUFFERADDRESSRANGENVPROC BufferAddressRangeNV; + PFNGLBUFFERATTACHMEMORYNVPROC BufferAttachMemoryNV; + PFNGLBUFFERDATAPROC BufferData; + PFNGLBUFFERDATAARBPROC BufferDataARB; + PFNGLBUFFERPAGECOMMITMENTARBPROC BufferPageCommitmentARB; + PFNGLBUFFERPAGECOMMITMENTMEMNVPROC BufferPageCommitmentMemNV; + PFNGLBUFFERPARAMETERIAPPLEPROC BufferParameteriAPPLE; + PFNGLBUFFERSTORAGEPROC BufferStorage; + PFNGLBUFFERSTORAGEEXTERNALEXTPROC BufferStorageExternalEXT; + PFNGLBUFFERSTORAGEMEMEXTPROC BufferStorageMemEXT; + PFNGLBUFFERSUBDATAPROC BufferSubData; + PFNGLBUFFERSUBDATAARBPROC BufferSubDataARB; + PFNGLCALLCOMMANDLISTNVPROC CallCommandListNV; + PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus; + PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC CheckFramebufferStatusEXT; + PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus; + PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC CheckNamedFramebufferStatusEXT; + PFNGLCLAMPCOLORPROC ClampColor; + PFNGLCLAMPCOLORARBPROC ClampColorARB; + PFNGLCLEARPROC Clear; + PFNGLCLEARACCUMXOESPROC ClearAccumxOES; + PFNGLCLEARBUFFERDATAPROC ClearBufferData; + PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData; + PFNGLCLEARBUFFERFIPROC ClearBufferfi; + PFNGLCLEARBUFFERFVPROC ClearBufferfv; + PFNGLCLEARBUFFERIVPROC ClearBufferiv; + PFNGLCLEARBUFFERUIVPROC ClearBufferuiv; + PFNGLCLEARCOLORPROC ClearColor; + PFNGLCLEARCOLORIIEXTPROC ClearColorIiEXT; + PFNGLCLEARCOLORIUIEXTPROC ClearColorIuiEXT; + PFNGLCLEARCOLORXOESPROC ClearColorxOES; + PFNGLCLEARDEPTHPROC ClearDepth; + PFNGLCLEARDEPTHDNVPROC ClearDepthdNV; + PFNGLCLEARDEPTHFPROC ClearDepthf; + PFNGLCLEARDEPTHFOESPROC ClearDepthfOES; + PFNGLCLEARDEPTHXOESPROC ClearDepthxOES; + PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData; + PFNGLCLEARNAMEDBUFFERDATAEXTPROC ClearNamedBufferDataEXT; + PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData; + PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC ClearNamedBufferSubDataEXT; + PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi; + PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv; + PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv; + PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC ClearNamedFramebufferuiv; + PFNGLCLEARSTENCILPROC ClearStencil; + PFNGLCLEARTEXIMAGEPROC ClearTexImage; + PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage; + PFNGLCLIENTACTIVETEXTUREARBPROC ClientActiveTextureARB; + PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC ClientActiveVertexStreamATI; + PFNGLCLIENTATTRIBDEFAULTEXTPROC ClientAttribDefaultEXT; + PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC ClientWaitSemaphoreui64NVX; + PFNGLCLIENTWAITSYNCPROC ClientWaitSync; + PFNGLCLIPCONTROLPROC ClipControl; + PFNGLCLIPPLANEFOESPROC ClipPlanefOES; + PFNGLCLIPPLANEXOESPROC ClipPlanexOES; + PFNGLCOLOR3FVERTEX3FSUNPROC Color3fVertex3fSUN; + PFNGLCOLOR3FVERTEX3FVSUNPROC Color3fVertex3fvSUN; + PFNGLCOLOR3HNVPROC Color3hNV; + PFNGLCOLOR3HVNVPROC Color3hvNV; + PFNGLCOLOR3XOESPROC Color3xOES; + PFNGLCOLOR3XVOESPROC Color3xvOES; + PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC Color4fNormal3fVertex3fSUN; + PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC Color4fNormal3fVertex3fvSUN; + PFNGLCOLOR4HNVPROC Color4hNV; + PFNGLCOLOR4HVNVPROC Color4hvNV; + PFNGLCOLOR4UBVERTEX2FSUNPROC Color4ubVertex2fSUN; + PFNGLCOLOR4UBVERTEX2FVSUNPROC Color4ubVertex2fvSUN; + PFNGLCOLOR4UBVERTEX3FSUNPROC Color4ubVertex3fSUN; + PFNGLCOLOR4UBVERTEX3FVSUNPROC Color4ubVertex3fvSUN; + PFNGLCOLOR4XOESPROC Color4xOES; + PFNGLCOLOR4XVOESPROC Color4xvOES; + PFNGLCOLORFORMATNVPROC ColorFormatNV; + PFNGLCOLORFRAGMENTOP1ATIPROC ColorFragmentOp1ATI; + PFNGLCOLORFRAGMENTOP2ATIPROC ColorFragmentOp2ATI; + PFNGLCOLORFRAGMENTOP3ATIPROC ColorFragmentOp3ATI; + PFNGLCOLORMASKPROC ColorMask; + PFNGLCOLORMASKINDEXEDEXTPROC ColorMaskIndexedEXT; + PFNGLCOLORMASKIPROC ColorMaski; + PFNGLCOLORPOINTEREXTPROC ColorPointerEXT; + PFNGLCOLORPOINTERLISTIBMPROC ColorPointerListIBM; + PFNGLCOLORPOINTERVINTELPROC ColorPointervINTEL; + PFNGLCOLORSUBTABLEEXTPROC ColorSubTableEXT; + PFNGLCOLORTABLEEXTPROC ColorTableEXT; + PFNGLCOLORTABLEPARAMETERFVSGIPROC ColorTableParameterfvSGI; + PFNGLCOLORTABLEPARAMETERIVSGIPROC ColorTableParameterivSGI; + PFNGLCOLORTABLESGIPROC ColorTableSGI; + PFNGLCOMBINERINPUTNVPROC CombinerInputNV; + PFNGLCOMBINEROUTPUTNVPROC CombinerOutputNV; + PFNGLCOMBINERPARAMETERFNVPROC CombinerParameterfNV; + PFNGLCOMBINERPARAMETERFVNVPROC CombinerParameterfvNV; + PFNGLCOMBINERPARAMETERINVPROC CombinerParameteriNV; + PFNGLCOMBINERPARAMETERIVNVPROC CombinerParameterivNV; + PFNGLCOMBINERSTAGEPARAMETERFVNVPROC CombinerStageParameterfvNV; + PFNGLCOMMANDLISTSEGMENTSNVPROC CommandListSegmentsNV; + PFNGLCOMPILECOMMANDLISTNVPROC CompileCommandListNV; + PFNGLCOMPILESHADERPROC CompileShader; + PFNGLCOMPILESHADERARBPROC CompileShaderARB; + PFNGLCOMPILESHADERINCLUDEARBPROC CompileShaderIncludeARB; + PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC CompressedMultiTexImage1DEXT; + PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC CompressedMultiTexImage2DEXT; + PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC CompressedMultiTexImage3DEXT; + PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC CompressedMultiTexSubImage1DEXT; + PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC CompressedMultiTexSubImage2DEXT; + PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC CompressedMultiTexSubImage3DEXT; + PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D; + PFNGLCOMPRESSEDTEXIMAGE1DARBPROC CompressedTexImage1DARB; + PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D; + PFNGLCOMPRESSEDTEXIMAGE2DARBPROC CompressedTexImage2DARB; + PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D; + PFNGLCOMPRESSEDTEXIMAGE3DARBPROC CompressedTexImage3DARB; + PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D; + PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC CompressedTexSubImage1DARB; + PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D; + PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC CompressedTexSubImage2DARB; + PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D; + PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC CompressedTexSubImage3DARB; + PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC CompressedTextureImage1DEXT; + PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC CompressedTextureImage2DEXT; + PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC CompressedTextureImage3DEXT; + PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC CompressedTextureSubImage1DEXT; + PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC CompressedTextureSubImage2DEXT; + PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC CompressedTextureSubImage3DEXT; + PFNGLCONSERVATIVERASTERPARAMETERFNVPROC ConservativeRasterParameterfNV; + PFNGLCONSERVATIVERASTERPARAMETERINVPROC ConservativeRasterParameteriNV; + PFNGLCONVOLUTIONFILTER1DEXTPROC ConvolutionFilter1DEXT; + PFNGLCONVOLUTIONFILTER2DEXTPROC ConvolutionFilter2DEXT; + PFNGLCONVOLUTIONPARAMETERFEXTPROC ConvolutionParameterfEXT; + PFNGLCONVOLUTIONPARAMETERFVEXTPROC ConvolutionParameterfvEXT; + PFNGLCONVOLUTIONPARAMETERIEXTPROC ConvolutionParameteriEXT; + PFNGLCONVOLUTIONPARAMETERIVEXTPROC ConvolutionParameterivEXT; + PFNGLCONVOLUTIONPARAMETERXOESPROC ConvolutionParameterxOES; + PFNGLCONVOLUTIONPARAMETERXVOESPROC ConvolutionParameterxvOES; + PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData; + PFNGLCOPYCOLORSUBTABLEEXTPROC CopyColorSubTableEXT; + PFNGLCOPYCOLORTABLESGIPROC CopyColorTableSGI; + PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC CopyConvolutionFilter1DEXT; + PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC CopyConvolutionFilter2DEXT; + PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData; + PFNGLCOPYIMAGESUBDATANVPROC CopyImageSubDataNV; + PFNGLCOPYMULTITEXIMAGE1DEXTPROC CopyMultiTexImage1DEXT; + PFNGLCOPYMULTITEXIMAGE2DEXTPROC CopyMultiTexImage2DEXT; + PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC CopyMultiTexSubImage1DEXT; + PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC CopyMultiTexSubImage2DEXT; + PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC CopyMultiTexSubImage3DEXT; + PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData; + PFNGLCOPYPATHNVPROC CopyPathNV; + PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D; + PFNGLCOPYTEXIMAGE1DEXTPROC CopyTexImage1DEXT; + PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D; + PFNGLCOPYTEXIMAGE2DEXTPROC CopyTexImage2DEXT; + PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D; + PFNGLCOPYTEXSUBIMAGE1DEXTPROC CopyTexSubImage1DEXT; + PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D; + PFNGLCOPYTEXSUBIMAGE2DEXTPROC CopyTexSubImage2DEXT; + PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D; + PFNGLCOPYTEXSUBIMAGE3DEXTPROC CopyTexSubImage3DEXT; + PFNGLCOPYTEXTUREIMAGE1DEXTPROC CopyTextureImage1DEXT; + PFNGLCOPYTEXTUREIMAGE2DEXTPROC CopyTextureImage2DEXT; + PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D; + PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC CopyTextureSubImage1DEXT; + PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D; + PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC CopyTextureSubImage2DEXT; + PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D; + PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC CopyTextureSubImage3DEXT; + PFNGLCOVERFILLPATHINSTANCEDNVPROC CoverFillPathInstancedNV; + PFNGLCOVERFILLPATHNVPROC CoverFillPathNV; + PFNGLCOVERSTROKEPATHINSTANCEDNVPROC CoverStrokePathInstancedNV; + PFNGLCOVERSTROKEPATHNVPROC CoverStrokePathNV; + PFNGLCOVERAGEMODULATIONNVPROC CoverageModulationNV; + PFNGLCOVERAGEMODULATIONTABLENVPROC CoverageModulationTableNV; + PFNGLCREATEBUFFERSPROC CreateBuffers; + PFNGLCREATECOMMANDLISTSNVPROC CreateCommandListsNV; + PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers; + PFNGLCREATEMEMORYOBJECTSEXTPROC CreateMemoryObjectsEXT; + PFNGLCREATEPERFQUERYINTELPROC CreatePerfQueryINTEL; + PFNGLCREATEPROGRAMPROC CreateProgram; + PFNGLCREATEPROGRAMOBJECTARBPROC CreateProgramObjectARB; + PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines; + PFNGLCREATEPROGRESSFENCENVXPROC CreateProgressFenceNVX; + PFNGLCREATEQUERIESPROC CreateQueries; + PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers; + PFNGLCREATESAMPLERSPROC CreateSamplers; + PFNGLCREATESEMAPHORESNVPROC CreateSemaphoresNV; + PFNGLCREATESHADERPROC CreateShader; + PFNGLCREATESHADEROBJECTARBPROC CreateShaderObjectARB; + PFNGLCREATESHADERPROGRAMEXTPROC CreateShaderProgramEXT; + PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv; + PFNGLCREATESTATESNVPROC CreateStatesNV; + PFNGLCREATESYNCFROMCLEVENTARBPROC CreateSyncFromCLeventARB; + PFNGLCREATETEXTURESPROC CreateTextures; + PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks; + PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays; + PFNGLCULLFACEPROC CullFace; + PFNGLCULLPARAMETERDVEXTPROC CullParameterdvEXT; + PFNGLCULLPARAMETERFVEXTPROC CullParameterfvEXT; + PFNGLCURRENTPALETTEMATRIXARBPROC CurrentPaletteMatrixARB; + PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback; + PFNGLDEBUGMESSAGECALLBACKAMDPROC DebugMessageCallbackAMD; + PFNGLDEBUGMESSAGECALLBACKARBPROC DebugMessageCallbackARB; + PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl; + PFNGLDEBUGMESSAGECONTROLARBPROC DebugMessageControlARB; + PFNGLDEBUGMESSAGEENABLEAMDPROC DebugMessageEnableAMD; + PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert; + PFNGLDEBUGMESSAGEINSERTAMDPROC DebugMessageInsertAMD; + PFNGLDEBUGMESSAGEINSERTARBPROC DebugMessageInsertARB; + PFNGLDEFORMSGIXPROC DeformSGIX; + PFNGLDEFORMATIONMAP3DSGIXPROC DeformationMap3dSGIX; + PFNGLDEFORMATIONMAP3FSGIXPROC DeformationMap3fSGIX; + PFNGLDELETEASYNCMARKERSSGIXPROC DeleteAsyncMarkersSGIX; + PFNGLDELETEBUFFERSPROC DeleteBuffers; + PFNGLDELETEBUFFERSARBPROC DeleteBuffersARB; + PFNGLDELETECOMMANDLISTSNVPROC DeleteCommandListsNV; + PFNGLDELETEFENCESAPPLEPROC DeleteFencesAPPLE; + PFNGLDELETEFENCESNVPROC DeleteFencesNV; + PFNGLDELETEFRAGMENTSHADERATIPROC DeleteFragmentShaderATI; + PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers; + PFNGLDELETEFRAMEBUFFERSEXTPROC DeleteFramebuffersEXT; + PFNGLDELETEMEMORYOBJECTSEXTPROC DeleteMemoryObjectsEXT; + PFNGLDELETENAMEDSTRINGARBPROC DeleteNamedStringARB; + PFNGLDELETENAMESAMDPROC DeleteNamesAMD; + PFNGLDELETEOBJECTARBPROC DeleteObjectARB; + PFNGLDELETEOCCLUSIONQUERIESNVPROC DeleteOcclusionQueriesNV; + PFNGLDELETEPATHSNVPROC DeletePathsNV; + PFNGLDELETEPERFMONITORSAMDPROC DeletePerfMonitorsAMD; + PFNGLDELETEPERFQUERYINTELPROC DeletePerfQueryINTEL; + PFNGLDELETEPROGRAMPROC DeleteProgram; + PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines; + PFNGLDELETEPROGRAMSARBPROC DeleteProgramsARB; + PFNGLDELETEPROGRAMSNVPROC DeleteProgramsNV; + PFNGLDELETEQUERIESPROC DeleteQueries; + PFNGLDELETEQUERIESARBPROC DeleteQueriesARB; + PFNGLDELETEQUERYRESOURCETAGNVPROC DeleteQueryResourceTagNV; + PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers; + PFNGLDELETERENDERBUFFERSEXTPROC DeleteRenderbuffersEXT; + PFNGLDELETESAMPLERSPROC DeleteSamplers; + PFNGLDELETESEMAPHORESEXTPROC DeleteSemaphoresEXT; + PFNGLDELETESHADERPROC DeleteShader; + PFNGLDELETESTATESNVPROC DeleteStatesNV; + PFNGLDELETESYNCPROC DeleteSync; + PFNGLDELETETEXTURESPROC DeleteTextures; + PFNGLDELETETEXTURESEXTPROC DeleteTexturesEXT; + PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks; + PFNGLDELETETRANSFORMFEEDBACKSNVPROC DeleteTransformFeedbacksNV; + PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays; + PFNGLDELETEVERTEXARRAYSAPPLEPROC DeleteVertexArraysAPPLE; + PFNGLDELETEVERTEXSHADEREXTPROC DeleteVertexShaderEXT; + PFNGLDEPTHBOUNDSEXTPROC DepthBoundsEXT; + PFNGLDEPTHBOUNDSDNVPROC DepthBoundsdNV; + PFNGLDEPTHFUNCPROC DepthFunc; + PFNGLDEPTHMASKPROC DepthMask; + PFNGLDEPTHRANGEPROC DepthRange; + PFNGLDEPTHRANGEARRAYDVNVPROC DepthRangeArraydvNV; + PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv; + PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed; + PFNGLDEPTHRANGEINDEXEDDNVPROC DepthRangeIndexeddNV; + PFNGLDEPTHRANGEDNVPROC DepthRangedNV; + PFNGLDEPTHRANGEFPROC DepthRangef; + PFNGLDEPTHRANGEFOESPROC DepthRangefOES; + PFNGLDEPTHRANGEXOESPROC DepthRangexOES; + PFNGLDETACHOBJECTARBPROC DetachObjectARB; + PFNGLDETACHSHADERPROC DetachShader; + PFNGLDETAILTEXFUNCSGISPROC DetailTexFuncSGIS; + PFNGLDISABLEPROC Disable; + PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC DisableClientStateIndexedEXT; + PFNGLDISABLECLIENTSTATEIEXTPROC DisableClientStateiEXT; + PFNGLDISABLEINDEXEDEXTPROC DisableIndexedEXT; + PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC DisableVariantClientStateEXT; + PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib; + PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC DisableVertexArrayAttribEXT; + PFNGLDISABLEVERTEXARRAYEXTPROC DisableVertexArrayEXT; + PFNGLDISABLEVERTEXATTRIBAPPLEPROC DisableVertexAttribAPPLE; + PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray; + PFNGLDISABLEVERTEXATTRIBARRAYARBPROC DisableVertexAttribArrayARB; + PFNGLDISABLEIPROC Disablei; + PFNGLDISPATCHCOMPUTEPROC DispatchCompute; + PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC DispatchComputeGroupSizeARB; + PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect; + PFNGLDRAWARRAYSPROC DrawArrays; + PFNGLDRAWARRAYSEXTPROC DrawArraysEXT; + PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect; + PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced; + PFNGLDRAWARRAYSINSTANCEDARBPROC DrawArraysInstancedARB; + PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance; + PFNGLDRAWARRAYSINSTANCEDEXTPROC DrawArraysInstancedEXT; + PFNGLDRAWBUFFERPROC DrawBuffer; + PFNGLDRAWBUFFERSPROC DrawBuffers; + PFNGLDRAWBUFFERSARBPROC DrawBuffersARB; + PFNGLDRAWBUFFERSATIPROC DrawBuffersATI; + PFNGLDRAWCOMMANDSADDRESSNVPROC DrawCommandsAddressNV; + PFNGLDRAWCOMMANDSNVPROC DrawCommandsNV; + PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC DrawCommandsStatesAddressNV; + PFNGLDRAWCOMMANDSSTATESNVPROC DrawCommandsStatesNV; + PFNGLDRAWELEMENTARRAYAPPLEPROC DrawElementArrayAPPLE; + PFNGLDRAWELEMENTARRAYATIPROC DrawElementArrayATI; + PFNGLDRAWELEMENTSPROC DrawElements; + PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex; + PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect; + PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced; + PFNGLDRAWELEMENTSINSTANCEDARBPROC DrawElementsInstancedARB; + PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance; + PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex; + PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC + DrawElementsInstancedBaseVertexBaseInstance; + PFNGLDRAWELEMENTSINSTANCEDEXTPROC DrawElementsInstancedEXT; + PFNGLDRAWMESHARRAYSSUNPROC DrawMeshArraysSUN; + PFNGLDRAWMESHTASKSINDIRECTNVPROC DrawMeshTasksIndirectNV; + PFNGLDRAWMESHTASKSNVPROC DrawMeshTasksNV; + PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC DrawRangeElementArrayAPPLE; + PFNGLDRAWRANGEELEMENTARRAYATIPROC DrawRangeElementArrayATI; + PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements; + PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex; + PFNGLDRAWRANGEELEMENTSEXTPROC DrawRangeElementsEXT; + PFNGLDRAWTEXTURENVPROC DrawTextureNV; + PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback; + PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced; + PFNGLDRAWTRANSFORMFEEDBACKNVPROC DrawTransformFeedbackNV; + PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream; + PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced; + PFNGLDRAWVKIMAGENVPROC DrawVkImageNV; + PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC EGLImageTargetTexStorageEXT; + PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC EGLImageTargetTextureStorageEXT; + PFNGLEDGEFLAGFORMATNVPROC EdgeFlagFormatNV; + PFNGLEDGEFLAGPOINTEREXTPROC EdgeFlagPointerEXT; + PFNGLEDGEFLAGPOINTERLISTIBMPROC EdgeFlagPointerListIBM; + PFNGLELEMENTPOINTERAPPLEPROC ElementPointerAPPLE; + PFNGLELEMENTPOINTERATIPROC ElementPointerATI; + PFNGLENABLEPROC Enable; + PFNGLENABLECLIENTSTATEINDEXEDEXTPROC EnableClientStateIndexedEXT; + PFNGLENABLECLIENTSTATEIEXTPROC EnableClientStateiEXT; + PFNGLENABLEINDEXEDEXTPROC EnableIndexedEXT; + PFNGLENABLEVARIANTCLIENTSTATEEXTPROC EnableVariantClientStateEXT; + PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib; + PFNGLENABLEVERTEXARRAYATTRIBEXTPROC EnableVertexArrayAttribEXT; + PFNGLENABLEVERTEXARRAYEXTPROC EnableVertexArrayEXT; + PFNGLENABLEVERTEXATTRIBAPPLEPROC EnableVertexAttribAPPLE; + PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray; + PFNGLENABLEVERTEXATTRIBARRAYARBPROC EnableVertexAttribArrayARB; + PFNGLENABLEIPROC Enablei; + PFNGLENDCONDITIONALRENDERPROC EndConditionalRender; + PFNGLENDCONDITIONALRENDERNVPROC EndConditionalRenderNV; + PFNGLENDCONDITIONALRENDERNVXPROC EndConditionalRenderNVX; + PFNGLENDFRAGMENTSHADERATIPROC EndFragmentShaderATI; + PFNGLENDOCCLUSIONQUERYNVPROC EndOcclusionQueryNV; + PFNGLENDPERFMONITORAMDPROC EndPerfMonitorAMD; + PFNGLENDPERFQUERYINTELPROC EndPerfQueryINTEL; + PFNGLENDQUERYPROC EndQuery; + PFNGLENDQUERYARBPROC EndQueryARB; + PFNGLENDQUERYINDEXEDPROC EndQueryIndexed; + PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback; + PFNGLENDTRANSFORMFEEDBACKEXTPROC EndTransformFeedbackEXT; + PFNGLENDTRANSFORMFEEDBACKNVPROC EndTransformFeedbackNV; + PFNGLENDVERTEXSHADEREXTPROC EndVertexShaderEXT; + PFNGLENDVIDEOCAPTURENVPROC EndVideoCaptureNV; + PFNGLEVALCOORD1XOESPROC EvalCoord1xOES; + PFNGLEVALCOORD1XVOESPROC EvalCoord1xvOES; + PFNGLEVALCOORD2XOESPROC EvalCoord2xOES; + PFNGLEVALCOORD2XVOESPROC EvalCoord2xvOES; + PFNGLEVALMAPSNVPROC EvalMapsNV; + PFNGLEVALUATEDEPTHVALUESARBPROC EvaluateDepthValuesARB; + PFNGLEXECUTEPROGRAMNVPROC ExecuteProgramNV; + PFNGLEXTRACTCOMPONENTEXTPROC ExtractComponentEXT; + PFNGLFEEDBACKBUFFERXOESPROC FeedbackBufferxOES; + PFNGLFENCESYNCPROC FenceSync; + PFNGLFINALCOMBINERINPUTNVPROC FinalCombinerInputNV; + PFNGLFINISHPROC Finish; + PFNGLFINISHASYNCSGIXPROC FinishAsyncSGIX; + PFNGLFINISHFENCEAPPLEPROC FinishFenceAPPLE; + PFNGLFINISHFENCENVPROC FinishFenceNV; + PFNGLFINISHOBJECTAPPLEPROC FinishObjectAPPLE; + PFNGLFINISHTEXTURESUNXPROC FinishTextureSUNX; + PFNGLFLUSHPROC Flush; + PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange; + PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC FlushMappedBufferRangeAPPLE; + PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange; + PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC FlushMappedNamedBufferRangeEXT; + PFNGLFLUSHPIXELDATARANGENVPROC FlushPixelDataRangeNV; + PFNGLFLUSHRASTERSGIXPROC FlushRasterSGIX; + PFNGLFLUSHSTATICDATAIBMPROC FlushStaticDataIBM; + PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC FlushVertexArrayRangeAPPLE; + PFNGLFLUSHVERTEXARRAYRANGENVPROC FlushVertexArrayRangeNV; + PFNGLFOGCOORDFORMATNVPROC FogCoordFormatNV; + PFNGLFOGCOORDPOINTEREXTPROC FogCoordPointerEXT; + PFNGLFOGCOORDPOINTERLISTIBMPROC FogCoordPointerListIBM; + PFNGLFOGCOORDDEXTPROC FogCoorddEXT; + PFNGLFOGCOORDDVEXTPROC FogCoorddvEXT; + PFNGLFOGCOORDFEXTPROC FogCoordfEXT; + PFNGLFOGCOORDFVEXTPROC FogCoordfvEXT; + PFNGLFOGCOORDHNVPROC FogCoordhNV; + PFNGLFOGCOORDHVNVPROC FogCoordhvNV; + PFNGLFOGFUNCSGISPROC FogFuncSGIS; + PFNGLFOGXOESPROC FogxOES; + PFNGLFOGXVOESPROC FogxvOES; + PFNGLFRAGMENTCOLORMATERIALSGIXPROC FragmentColorMaterialSGIX; + PFNGLFRAGMENTCOVERAGECOLORNVPROC FragmentCoverageColorNV; + PFNGLFRAGMENTLIGHTMODELFSGIXPROC FragmentLightModelfSGIX; + PFNGLFRAGMENTLIGHTMODELFVSGIXPROC FragmentLightModelfvSGIX; + PFNGLFRAGMENTLIGHTMODELISGIXPROC FragmentLightModeliSGIX; + PFNGLFRAGMENTLIGHTMODELIVSGIXPROC FragmentLightModelivSGIX; + PFNGLFRAGMENTLIGHTFSGIXPROC FragmentLightfSGIX; + PFNGLFRAGMENTLIGHTFVSGIXPROC FragmentLightfvSGIX; + PFNGLFRAGMENTLIGHTISGIXPROC FragmentLightiSGIX; + PFNGLFRAGMENTLIGHTIVSGIXPROC FragmentLightivSGIX; + PFNGLFRAGMENTMATERIALFSGIXPROC FragmentMaterialfSGIX; + PFNGLFRAGMENTMATERIALFVSGIXPROC FragmentMaterialfvSGIX; + PFNGLFRAGMENTMATERIALISGIXPROC FragmentMaterialiSGIX; + PFNGLFRAGMENTMATERIALIVSGIXPROC FragmentMaterialivSGIX; + PFNGLFRAMETERMINATORGREMEDYPROC FrameTerminatorGREMEDY; + PFNGLFRAMEZOOMSGIXPROC FrameZoomSGIX; + PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC FramebufferDrawBufferEXT; + PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC FramebufferDrawBuffersEXT; + PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC FramebufferFetchBarrierEXT; + PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri; + PFNGLFRAMEBUFFERPARAMETERIMESAPROC FramebufferParameteriMESA; + PFNGLFRAMEBUFFERREADBUFFEREXTPROC FramebufferReadBufferEXT; + PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer; + PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC FramebufferRenderbufferEXT; + PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC FramebufferSampleLocationsfvARB; + PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC FramebufferSampleLocationsfvNV; + PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC FramebufferSamplePositionsfvAMD; + PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture; + PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D; + PFNGLFRAMEBUFFERTEXTURE1DEXTPROC FramebufferTexture1DEXT; + PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D; + PFNGLFRAMEBUFFERTEXTURE2DEXTPROC FramebufferTexture2DEXT; + PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D; + PFNGLFRAMEBUFFERTEXTURE3DEXTPROC FramebufferTexture3DEXT; + PFNGLFRAMEBUFFERTEXTUREARBPROC FramebufferTextureARB; + PFNGLFRAMEBUFFERTEXTUREEXTPROC FramebufferTextureEXT; + PFNGLFRAMEBUFFERTEXTUREFACEARBPROC FramebufferTextureFaceARB; + PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC FramebufferTextureFaceEXT; + PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer; + PFNGLFRAMEBUFFERTEXTURELAYERARBPROC FramebufferTextureLayerARB; + PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC FramebufferTextureLayerEXT; + PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC FramebufferTextureMultiviewOVR; + PFNGLFREEOBJECTBUFFERATIPROC FreeObjectBufferATI; + PFNGLFRONTFACEPROC FrontFace; + PFNGLFRUSTUMFOESPROC FrustumfOES; + PFNGLFRUSTUMXOESPROC FrustumxOES; + PFNGLGENASYNCMARKERSSGIXPROC GenAsyncMarkersSGIX; + PFNGLGENBUFFERSPROC GenBuffers; + PFNGLGENBUFFERSARBPROC GenBuffersARB; + PFNGLGENFENCESAPPLEPROC GenFencesAPPLE; + PFNGLGENFENCESNVPROC GenFencesNV; + PFNGLGENFRAGMENTSHADERSATIPROC GenFragmentShadersATI; + PFNGLGENFRAMEBUFFERSPROC GenFramebuffers; + PFNGLGENFRAMEBUFFERSEXTPROC GenFramebuffersEXT; + PFNGLGENNAMESAMDPROC GenNamesAMD; + PFNGLGENOCCLUSIONQUERIESNVPROC GenOcclusionQueriesNV; + PFNGLGENPATHSNVPROC GenPathsNV; + PFNGLGENPERFMONITORSAMDPROC GenPerfMonitorsAMD; + PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines; + PFNGLGENPROGRAMSARBPROC GenProgramsARB; + PFNGLGENPROGRAMSNVPROC GenProgramsNV; + PFNGLGENQUERIESPROC GenQueries; + PFNGLGENQUERIESARBPROC GenQueriesARB; + PFNGLGENQUERYRESOURCETAGNVPROC GenQueryResourceTagNV; + PFNGLGENRENDERBUFFERSPROC GenRenderbuffers; + PFNGLGENRENDERBUFFERSEXTPROC GenRenderbuffersEXT; + PFNGLGENSAMPLERSPROC GenSamplers; + PFNGLGENSEMAPHORESEXTPROC GenSemaphoresEXT; + PFNGLGENSYMBOLSEXTPROC GenSymbolsEXT; + PFNGLGENTEXTURESPROC GenTextures; + PFNGLGENTEXTURESEXTPROC GenTexturesEXT; + PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks; + PFNGLGENTRANSFORMFEEDBACKSNVPROC GenTransformFeedbacksNV; + PFNGLGENVERTEXARRAYSPROC GenVertexArrays; + PFNGLGENVERTEXARRAYSAPPLEPROC GenVertexArraysAPPLE; + PFNGLGENVERTEXSHADERSEXTPROC GenVertexShadersEXT; + PFNGLGENERATEMIPMAPPROC GenerateMipmap; + PFNGLGENERATEMIPMAPEXTPROC GenerateMipmapEXT; + PFNGLGENERATEMULTITEXMIPMAPEXTPROC GenerateMultiTexMipmapEXT; + PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap; + PFNGLGENERATETEXTUREMIPMAPEXTPROC GenerateTextureMipmapEXT; + PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv; + PFNGLGETACTIVEATTRIBPROC GetActiveAttrib; + PFNGLGETACTIVEATTRIBARBPROC GetActiveAttribARB; + PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName; + PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName; + PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv; + PFNGLGETACTIVEUNIFORMPROC GetActiveUniform; + PFNGLGETACTIVEUNIFORMARBPROC GetActiveUniformARB; + PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName; + PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv; + PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName; + PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv; + PFNGLGETACTIVEVARYINGNVPROC GetActiveVaryingNV; + PFNGLGETARRAYOBJECTFVATIPROC GetArrayObjectfvATI; + PFNGLGETARRAYOBJECTIVATIPROC GetArrayObjectivATI; + PFNGLGETATTACHEDOBJECTSARBPROC GetAttachedObjectsARB; + PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders; + PFNGLGETATTRIBLOCATIONPROC GetAttribLocation; + PFNGLGETATTRIBLOCATIONARBPROC GetAttribLocationARB; + PFNGLGETBOOLEANINDEXEDVEXTPROC GetBooleanIndexedvEXT; + PFNGLGETBOOLEANI_VPROC GetBooleani_v; + PFNGLGETBOOLEANVPROC GetBooleanv; + PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v; + PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv; + PFNGLGETBUFFERPARAMETERIVARBPROC GetBufferParameterivARB; + PFNGLGETBUFFERPARAMETERUI64VNVPROC GetBufferParameterui64vNV; + PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv; + PFNGLGETBUFFERPOINTERVARBPROC GetBufferPointervARB; + PFNGLGETBUFFERSUBDATAPROC GetBufferSubData; + PFNGLGETBUFFERSUBDATAARBPROC GetBufferSubDataARB; + PFNGLGETCLIPPLANEFOESPROC GetClipPlanefOES; + PFNGLGETCLIPPLANEXOESPROC GetClipPlanexOES; + PFNGLGETCOLORTABLEEXTPROC GetColorTableEXT; + PFNGLGETCOLORTABLEPARAMETERFVEXTPROC GetColorTableParameterfvEXT; + PFNGLGETCOLORTABLEPARAMETERFVSGIPROC GetColorTableParameterfvSGI; + PFNGLGETCOLORTABLEPARAMETERIVEXTPROC GetColorTableParameterivEXT; + PFNGLGETCOLORTABLEPARAMETERIVSGIPROC GetColorTableParameterivSGI; + PFNGLGETCOLORTABLESGIPROC GetColorTableSGI; + PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GetCombinerInputParameterfvNV; + PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GetCombinerInputParameterivNV; + PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GetCombinerOutputParameterfvNV; + PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GetCombinerOutputParameterivNV; + PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GetCombinerStageParameterfvNV; + PFNGLGETCOMMANDHEADERNVPROC GetCommandHeaderNV; + PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC GetCompressedMultiTexImageEXT; + PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage; + PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB; + PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage; + PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC GetCompressedTextureImageEXT; + PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage; + PFNGLGETCONVOLUTIONFILTEREXTPROC GetConvolutionFilterEXT; + PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC GetConvolutionParameterfvEXT; + PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC GetConvolutionParameterivEXT; + PFNGLGETCONVOLUTIONPARAMETERXVOESPROC GetConvolutionParameterxvOES; + PFNGLGETCOVERAGEMODULATIONTABLENVPROC GetCoverageModulationTableNV; + PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog; + PFNGLGETDEBUGMESSAGELOGAMDPROC GetDebugMessageLogAMD; + PFNGLGETDEBUGMESSAGELOGARBPROC GetDebugMessageLogARB; + PFNGLGETDETAILTEXFUNCSGISPROC GetDetailTexFuncSGIS; + PFNGLGETDOUBLEINDEXEDVEXTPROC GetDoubleIndexedvEXT; + PFNGLGETDOUBLEI_VPROC GetDoublei_v; + PFNGLGETDOUBLEI_VEXTPROC GetDoublei_vEXT; + PFNGLGETDOUBLEVPROC GetDoublev; + PFNGLGETERRORPROC GetError; + PFNGLGETFENCEIVNVPROC GetFenceivNV; + PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GetFinalCombinerInputParameterfvNV; + PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GetFinalCombinerInputParameterivNV; + PFNGLGETFIRSTPERFQUERYIDINTELPROC GetFirstPerfQueryIdINTEL; + PFNGLGETFIXEDVOESPROC GetFixedvOES; + PFNGLGETFLOATINDEXEDVEXTPROC GetFloatIndexedvEXT; + PFNGLGETFLOATI_VPROC GetFloati_v; + PFNGLGETFLOATI_VEXTPROC GetFloati_vEXT; + PFNGLGETFLOATVPROC GetFloatv; + PFNGLGETFOGFUNCSGISPROC GetFogFuncSGIS; + PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex; + PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation; + PFNGLGETFRAGDATALOCATIONEXTPROC GetFragDataLocationEXT; + PFNGLGETFRAGMENTLIGHTFVSGIXPROC GetFragmentLightfvSGIX; + PFNGLGETFRAGMENTLIGHTIVSGIXPROC GetFragmentLightivSGIX; + PFNGLGETFRAGMENTMATERIALFVSGIXPROC GetFragmentMaterialfvSGIX; + PFNGLGETFRAGMENTMATERIALIVSGIXPROC GetFragmentMaterialivSGIX; + PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv; + PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GetFramebufferAttachmentParameterivEXT; + PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC GetFramebufferParameterfvAMD; + PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv; + PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC GetFramebufferParameterivEXT; + PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC GetFramebufferParameterivMESA; + PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus; + PFNGLGETGRAPHICSRESETSTATUSARBPROC GetGraphicsResetStatusARB; + PFNGLGETHANDLEARBPROC GetHandleARB; + PFNGLGETHISTOGRAMEXTPROC GetHistogramEXT; + PFNGLGETHISTOGRAMPARAMETERFVEXTPROC GetHistogramParameterfvEXT; + PFNGLGETHISTOGRAMPARAMETERIVEXTPROC GetHistogramParameterivEXT; + PFNGLGETHISTOGRAMPARAMETERXVOESPROC GetHistogramParameterxvOES; + PFNGLGETIMAGEHANDLEARBPROC GetImageHandleARB; + PFNGLGETIMAGEHANDLENVPROC GetImageHandleNV; + PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC GetImageTransformParameterfvHP; + PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC GetImageTransformParameterivHP; + PFNGLGETINFOLOGARBPROC GetInfoLogARB; + PFNGLGETINSTRUMENTSSGIXPROC GetInstrumentsSGIX; + PFNGLGETINTEGER64I_VPROC GetInteger64i_v; + PFNGLGETINTEGER64VPROC GetInteger64v; + PFNGLGETINTEGERINDEXEDVEXTPROC GetIntegerIndexedvEXT; + PFNGLGETINTEGERI_VPROC GetIntegeri_v; + PFNGLGETINTEGERUI64I_VNVPROC GetIntegerui64i_vNV; + PFNGLGETINTEGERUI64VNVPROC GetIntegerui64vNV; + PFNGLGETINTEGERVPROC GetIntegerv; + PFNGLGETINTERNALFORMATSAMPLEIVNVPROC GetInternalformatSampleivNV; + PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v; + PFNGLGETINTERNALFORMATIVPROC GetInternalformativ; + PFNGLGETINVARIANTBOOLEANVEXTPROC GetInvariantBooleanvEXT; + PFNGLGETINVARIANTFLOATVEXTPROC GetInvariantFloatvEXT; + PFNGLGETINVARIANTINTEGERVEXTPROC GetInvariantIntegervEXT; + PFNGLGETLIGHTXOESPROC GetLightxOES; + PFNGLGETLISTPARAMETERFVSGIXPROC GetListParameterfvSGIX; + PFNGLGETLISTPARAMETERIVSGIXPROC GetListParameterivSGIX; + PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC GetLocalConstantBooleanvEXT; + PFNGLGETLOCALCONSTANTFLOATVEXTPROC GetLocalConstantFloatvEXT; + PFNGLGETLOCALCONSTANTINTEGERVEXTPROC GetLocalConstantIntegervEXT; + PFNGLGETMAPATTRIBPARAMETERFVNVPROC GetMapAttribParameterfvNV; + PFNGLGETMAPATTRIBPARAMETERIVNVPROC GetMapAttribParameterivNV; + PFNGLGETMAPCONTROLPOINTSNVPROC GetMapControlPointsNV; + PFNGLGETMAPPARAMETERFVNVPROC GetMapParameterfvNV; + PFNGLGETMAPPARAMETERIVNVPROC GetMapParameterivNV; + PFNGLGETMAPXVOESPROC GetMapxvOES; + PFNGLGETMATERIALXOESPROC GetMaterialxOES; + PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC GetMemoryObjectDetachedResourcesuivNV; + PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC GetMemoryObjectParameterivEXT; + PFNGLGETMINMAXEXTPROC GetMinmaxEXT; + PFNGLGETMINMAXPARAMETERFVEXTPROC GetMinmaxParameterfvEXT; + PFNGLGETMINMAXPARAMETERIVEXTPROC GetMinmaxParameterivEXT; + PFNGLGETMULTITEXENVFVEXTPROC GetMultiTexEnvfvEXT; + PFNGLGETMULTITEXENVIVEXTPROC GetMultiTexEnvivEXT; + PFNGLGETMULTITEXGENDVEXTPROC GetMultiTexGendvEXT; + PFNGLGETMULTITEXGENFVEXTPROC GetMultiTexGenfvEXT; + PFNGLGETMULTITEXGENIVEXTPROC GetMultiTexGenivEXT; + PFNGLGETMULTITEXIMAGEEXTPROC GetMultiTexImageEXT; + PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC GetMultiTexLevelParameterfvEXT; + PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC GetMultiTexLevelParameterivEXT; + PFNGLGETMULTITEXPARAMETERIIVEXTPROC GetMultiTexParameterIivEXT; + PFNGLGETMULTITEXPARAMETERIUIVEXTPROC GetMultiTexParameterIuivEXT; + PFNGLGETMULTITEXPARAMETERFVEXTPROC GetMultiTexParameterfvEXT; + PFNGLGETMULTITEXPARAMETERIVEXTPROC GetMultiTexParameterivEXT; + PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv; + PFNGLGETMULTISAMPLEFVNVPROC GetMultisamplefvNV; + PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v; + PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv; + PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC GetNamedBufferParameterivEXT; + PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC GetNamedBufferParameterui64vNV; + PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv; + PFNGLGETNAMEDBUFFERPOINTERVEXTPROC GetNamedBufferPointervEXT; + PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData; + PFNGLGETNAMEDBUFFERSUBDATAEXTPROC GetNamedBufferSubDataEXT; + PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv; + PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC + GetNamedFramebufferAttachmentParameterivEXT; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC GetNamedFramebufferParameterfvAMD; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC GetNamedFramebufferParameterivEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC GetNamedProgramLocalParameterIivEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC GetNamedProgramLocalParameterIuivEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC GetNamedProgramLocalParameterdvEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC GetNamedProgramLocalParameterfvEXT; + PFNGLGETNAMEDPROGRAMSTRINGEXTPROC GetNamedProgramStringEXT; + PFNGLGETNAMEDPROGRAMIVEXTPROC GetNamedProgramivEXT; + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv; + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC GetNamedRenderbufferParameterivEXT; + PFNGLGETNAMEDSTRINGARBPROC GetNamedStringARB; + PFNGLGETNAMEDSTRINGIVARBPROC GetNamedStringivARB; + PFNGLGETNEXTPERFQUERYIDINTELPROC GetNextPerfQueryIdINTEL; + PFNGLGETOBJECTBUFFERFVATIPROC GetObjectBufferfvATI; + PFNGLGETOBJECTBUFFERIVATIPROC GetObjectBufferivATI; + PFNGLGETOBJECTLABELPROC GetObjectLabel; + PFNGLGETOBJECTLABELEXTPROC GetObjectLabelEXT; + PFNGLGETOBJECTPARAMETERFVARBPROC GetObjectParameterfvARB; + PFNGLGETOBJECTPARAMETERIVAPPLEPROC GetObjectParameterivAPPLE; + PFNGLGETOBJECTPARAMETERIVARBPROC GetObjectParameterivARB; + PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel; + PFNGLGETOCCLUSIONQUERYIVNVPROC GetOcclusionQueryivNV; + PFNGLGETOCCLUSIONQUERYUIVNVPROC GetOcclusionQueryuivNV; + PFNGLGETPATHCOMMANDSNVPROC GetPathCommandsNV; + PFNGLGETPATHCOORDSNVPROC GetPathCoordsNV; + PFNGLGETPATHDASHARRAYNVPROC GetPathDashArrayNV; + PFNGLGETPATHLENGTHNVPROC GetPathLengthNV; + PFNGLGETPATHMETRICRANGENVPROC GetPathMetricRangeNV; + PFNGLGETPATHMETRICSNVPROC GetPathMetricsNV; + PFNGLGETPATHPARAMETERFVNVPROC GetPathParameterfvNV; + PFNGLGETPATHPARAMETERIVNVPROC GetPathParameterivNV; + PFNGLGETPATHSPACINGNVPROC GetPathSpacingNV; + PFNGLGETPERFCOUNTERINFOINTELPROC GetPerfCounterInfoINTEL; + PFNGLGETPERFMONITORCOUNTERDATAAMDPROC GetPerfMonitorCounterDataAMD; + PFNGLGETPERFMONITORCOUNTERINFOAMDPROC GetPerfMonitorCounterInfoAMD; + PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC GetPerfMonitorCounterStringAMD; + PFNGLGETPERFMONITORCOUNTERSAMDPROC GetPerfMonitorCountersAMD; + PFNGLGETPERFMONITORGROUPSTRINGAMDPROC GetPerfMonitorGroupStringAMD; + PFNGLGETPERFMONITORGROUPSAMDPROC GetPerfMonitorGroupsAMD; + PFNGLGETPERFQUERYDATAINTELPROC GetPerfQueryDataINTEL; + PFNGLGETPERFQUERYIDBYNAMEINTELPROC GetPerfQueryIdByNameINTEL; + PFNGLGETPERFQUERYINFOINTELPROC GetPerfQueryInfoINTEL; + PFNGLGETPIXELMAPXVPROC GetPixelMapxv; + PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC GetPixelTexGenParameterfvSGIS; + PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC GetPixelTexGenParameterivSGIS; + PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC GetPixelTransformParameterfvEXT; + PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC GetPixelTransformParameterivEXT; + PFNGLGETPOINTERINDEXEDVEXTPROC GetPointerIndexedvEXT; + PFNGLGETPOINTERI_VEXTPROC GetPointeri_vEXT; + PFNGLGETPOINTERVPROC GetPointerv; + PFNGLGETPOINTERVEXTPROC GetPointervEXT; + PFNGLGETPROGRAMBINARYPROC GetProgramBinary; + PFNGLGETPROGRAMENVPARAMETERIIVNVPROC GetProgramEnvParameterIivNV; + PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC GetProgramEnvParameterIuivNV; + PFNGLGETPROGRAMENVPARAMETERDVARBPROC GetProgramEnvParameterdvARB; + PFNGLGETPROGRAMENVPARAMETERFVARBPROC GetProgramEnvParameterfvARB; + PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog; + PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv; + PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC GetProgramLocalParameterIivNV; + PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC GetProgramLocalParameterIuivNV; + PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GetProgramLocalParameterdvARB; + PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GetProgramLocalParameterfvARB; + PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC GetProgramNamedParameterdvNV; + PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC GetProgramNamedParameterfvNV; + PFNGLGETPROGRAMPARAMETERDVNVPROC GetProgramParameterdvNV; + PFNGLGETPROGRAMPARAMETERFVNVPROC GetProgramParameterfvNV; + PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog; + PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv; + PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex; + PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation; + PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex; + PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName; + PFNGLGETPROGRAMRESOURCEFVNVPROC GetProgramResourcefvNV; + PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv; + PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv; + PFNGLGETPROGRAMSTRINGARBPROC GetProgramStringARB; + PFNGLGETPROGRAMSTRINGNVPROC GetProgramStringNV; + PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC GetProgramSubroutineParameteruivNV; + PFNGLGETPROGRAMIVPROC GetProgramiv; + PFNGLGETPROGRAMIVARBPROC GetProgramivARB; + PFNGLGETPROGRAMIVNVPROC GetProgramivNV; + PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v; + PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv; + PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v; + PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv; + PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv; + PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v; + PFNGLGETQUERYOBJECTI64VEXTPROC GetQueryObjecti64vEXT; + PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv; + PFNGLGETQUERYOBJECTIVARBPROC GetQueryObjectivARB; + PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v; + PFNGLGETQUERYOBJECTUI64VEXTPROC GetQueryObjectui64vEXT; + PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv; + PFNGLGETQUERYOBJECTUIVARBPROC GetQueryObjectuivARB; + PFNGLGETQUERYIVPROC GetQueryiv; + PFNGLGETQUERYIVARBPROC GetQueryivARB; + PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv; + PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC GetRenderbufferParameterivEXT; + PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv; + PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv; + PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv; + PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv; + PFNGLGETSEMAPHOREPARAMETERIVNVPROC GetSemaphoreParameterivNV; + PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC GetSemaphoreParameterui64vEXT; + PFNGLGETSEPARABLEFILTEREXTPROC GetSeparableFilterEXT; + PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog; + PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat; + PFNGLGETSHADERSOURCEPROC GetShaderSource; + PFNGLGETSHADERSOURCEARBPROC GetShaderSourceARB; + PFNGLGETSHADERIVPROC GetShaderiv; + PFNGLGETSHADINGRATEIMAGEPALETTENVPROC GetShadingRateImagePaletteNV; + PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC GetShadingRateSampleLocationivNV; + PFNGLGETSHARPENTEXFUNCSGISPROC GetSharpenTexFuncSGIS; + PFNGLGETSTAGEINDEXNVPROC GetStageIndexNV; + PFNGLGETSTRINGPROC GetString; + PFNGLGETSTRINGIPROC GetStringi; + PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex; + PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation; + PFNGLGETSYNCIVPROC GetSynciv; + PFNGLGETTEXBUMPPARAMETERFVATIPROC GetTexBumpParameterfvATI; + PFNGLGETTEXBUMPPARAMETERIVATIPROC GetTexBumpParameterivATI; + PFNGLGETTEXENVXVOESPROC GetTexEnvxvOES; + PFNGLGETTEXFILTERFUNCSGISPROC GetTexFilterFuncSGIS; + PFNGLGETTEXGENXVOESPROC GetTexGenxvOES; + PFNGLGETTEXIMAGEPROC GetTexImage; + PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv; + PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv; + PFNGLGETTEXLEVELPARAMETERXVOESPROC GetTexLevelParameterxvOES; + PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv; + PFNGLGETTEXPARAMETERIIVEXTPROC GetTexParameterIivEXT; + PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv; + PFNGLGETTEXPARAMETERIUIVEXTPROC GetTexParameterIuivEXT; + PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC GetTexParameterPointervAPPLE; + PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv; + PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv; + PFNGLGETTEXPARAMETERXVOESPROC GetTexParameterxvOES; + PFNGLGETTEXTUREHANDLEARBPROC GetTextureHandleARB; + PFNGLGETTEXTUREHANDLENVPROC GetTextureHandleNV; + PFNGLGETTEXTUREIMAGEPROC GetTextureImage; + PFNGLGETTEXTUREIMAGEEXTPROC GetTextureImageEXT; + PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv; + PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC GetTextureLevelParameterfvEXT; + PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv; + PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC GetTextureLevelParameterivEXT; + PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv; + PFNGLGETTEXTUREPARAMETERIIVEXTPROC GetTextureParameterIivEXT; + PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv; + PFNGLGETTEXTUREPARAMETERIUIVEXTPROC GetTextureParameterIuivEXT; + PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv; + PFNGLGETTEXTUREPARAMETERFVEXTPROC GetTextureParameterfvEXT; + PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv; + PFNGLGETTEXTUREPARAMETERIVEXTPROC GetTextureParameterivEXT; + PFNGLGETTEXTURESAMPLERHANDLEARBPROC GetTextureSamplerHandleARB; + PFNGLGETTEXTURESAMPLERHANDLENVPROC GetTextureSamplerHandleNV; + PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage; + PFNGLGETTRACKMATRIXIVNVPROC GetTrackMatrixivNV; + PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying; + PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC GetTransformFeedbackVaryingEXT; + PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC GetTransformFeedbackVaryingNV; + PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v; + PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v; + PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv; + PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex; + PFNGLGETUNIFORMBUFFERSIZEEXTPROC GetUniformBufferSizeEXT; + PFNGLGETUNIFORMINDICESPROC GetUniformIndices; + PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation; + PFNGLGETUNIFORMLOCATIONARBPROC GetUniformLocationARB; + PFNGLGETUNIFORMOFFSETEXTPROC GetUniformOffsetEXT; + PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv; + PFNGLGETUNIFORMDVPROC GetUniformdv; + PFNGLGETUNIFORMFVPROC GetUniformfv; + PFNGLGETUNIFORMFVARBPROC GetUniformfvARB; + PFNGLGETUNIFORMI64VARBPROC GetUniformi64vARB; + PFNGLGETUNIFORMI64VNVPROC GetUniformi64vNV; + PFNGLGETUNIFORMIVPROC GetUniformiv; + PFNGLGETUNIFORMIVARBPROC GetUniformivARB; + PFNGLGETUNIFORMUI64VARBPROC GetUniformui64vARB; + PFNGLGETUNIFORMUI64VNVPROC GetUniformui64vNV; + PFNGLGETUNIFORMUIVPROC GetUniformuiv; + PFNGLGETUNIFORMUIVEXTPROC GetUniformuivEXT; + PFNGLGETUNSIGNEDBYTEI_VEXTPROC GetUnsignedBytei_vEXT; + PFNGLGETUNSIGNEDBYTEVEXTPROC GetUnsignedBytevEXT; + PFNGLGETVARIANTARRAYOBJECTFVATIPROC GetVariantArrayObjectfvATI; + PFNGLGETVARIANTARRAYOBJECTIVATIPROC GetVariantArrayObjectivATI; + PFNGLGETVARIANTBOOLEANVEXTPROC GetVariantBooleanvEXT; + PFNGLGETVARIANTFLOATVEXTPROC GetVariantFloatvEXT; + PFNGLGETVARIANTINTEGERVEXTPROC GetVariantIntegervEXT; + PFNGLGETVARIANTPOINTERVEXTPROC GetVariantPointervEXT; + PFNGLGETVARYINGLOCATIONNVPROC GetVaryingLocationNV; + PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv; + PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv; + PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC GetVertexArrayIntegeri_vEXT; + PFNGLGETVERTEXARRAYINTEGERVEXTPROC GetVertexArrayIntegervEXT; + PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC GetVertexArrayPointeri_vEXT; + PFNGLGETVERTEXARRAYPOINTERVEXTPROC GetVertexArrayPointervEXT; + PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv; + PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC GetVertexAttribArrayObjectfvATI; + PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC GetVertexAttribArrayObjectivATI; + PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv; + PFNGLGETVERTEXATTRIBIIVEXTPROC GetVertexAttribIivEXT; + PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv; + PFNGLGETVERTEXATTRIBIUIVEXTPROC GetVertexAttribIuivEXT; + PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv; + PFNGLGETVERTEXATTRIBLDVEXTPROC GetVertexAttribLdvEXT; + PFNGLGETVERTEXATTRIBLI64VNVPROC GetVertexAttribLi64vNV; + PFNGLGETVERTEXATTRIBLUI64VARBPROC GetVertexAttribLui64vARB; + PFNGLGETVERTEXATTRIBLUI64VNVPROC GetVertexAttribLui64vNV; + PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv; + PFNGLGETVERTEXATTRIBPOINTERVARBPROC GetVertexAttribPointervARB; + PFNGLGETVERTEXATTRIBPOINTERVNVPROC GetVertexAttribPointervNV; + PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv; + PFNGLGETVERTEXATTRIBDVARBPROC GetVertexAttribdvARB; + PFNGLGETVERTEXATTRIBDVNVPROC GetVertexAttribdvNV; + PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv; + PFNGLGETVERTEXATTRIBFVARBPROC GetVertexAttribfvARB; + PFNGLGETVERTEXATTRIBFVNVPROC GetVertexAttribfvNV; + PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv; + PFNGLGETVERTEXATTRIBIVARBPROC GetVertexAttribivARB; + PFNGLGETVERTEXATTRIBIVNVPROC GetVertexAttribivNV; + PFNGLGETVIDEOCAPTURESTREAMDVNVPROC GetVideoCaptureStreamdvNV; + PFNGLGETVIDEOCAPTURESTREAMFVNVPROC GetVideoCaptureStreamfvNV; + PFNGLGETVIDEOCAPTURESTREAMIVNVPROC GetVideoCaptureStreamivNV; + PFNGLGETVIDEOCAPTUREIVNVPROC GetVideoCaptureivNV; + PFNGLGETVIDEOI64VNVPROC GetVideoi64vNV; + PFNGLGETVIDEOIVNVPROC GetVideoivNV; + PFNGLGETVIDEOUI64VNVPROC GetVideoui64vNV; + PFNGLGETVIDEOUIVNVPROC GetVideouivNV; + PFNGLGETVKPROCADDRNVPROC GetVkProcAddrNV; + PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage; + PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC GetnCompressedTexImageARB; + PFNGLGETNTEXIMAGEPROC GetnTexImage; + PFNGLGETNTEXIMAGEARBPROC GetnTexImageARB; + PFNGLGETNUNIFORMDVPROC GetnUniformdv; + PFNGLGETNUNIFORMDVARBPROC GetnUniformdvARB; + PFNGLGETNUNIFORMFVPROC GetnUniformfv; + PFNGLGETNUNIFORMFVARBPROC GetnUniformfvARB; + PFNGLGETNUNIFORMI64VARBPROC GetnUniformi64vARB; + PFNGLGETNUNIFORMIVPROC GetnUniformiv; + PFNGLGETNUNIFORMIVARBPROC GetnUniformivARB; + PFNGLGETNUNIFORMUI64VARBPROC GetnUniformui64vARB; + PFNGLGETNUNIFORMUIVPROC GetnUniformuiv; + PFNGLGETNUNIFORMUIVARBPROC GetnUniformuivARB; + PFNGLGLOBALALPHAFACTORBSUNPROC GlobalAlphaFactorbSUN; + PFNGLGLOBALALPHAFACTORDSUNPROC GlobalAlphaFactordSUN; + PFNGLGLOBALALPHAFACTORFSUNPROC GlobalAlphaFactorfSUN; + PFNGLGLOBALALPHAFACTORISUNPROC GlobalAlphaFactoriSUN; + PFNGLGLOBALALPHAFACTORSSUNPROC GlobalAlphaFactorsSUN; + PFNGLGLOBALALPHAFACTORUBSUNPROC GlobalAlphaFactorubSUN; + PFNGLGLOBALALPHAFACTORUISUNPROC GlobalAlphaFactoruiSUN; + PFNGLGLOBALALPHAFACTORUSSUNPROC GlobalAlphaFactorusSUN; + PFNGLHINTPROC Hint; + PFNGLHINTPGIPROC HintPGI; + PFNGLHISTOGRAMEXTPROC HistogramEXT; + PFNGLIGLOOINTERFACESGIXPROC IglooInterfaceSGIX; + PFNGLIMAGETRANSFORMPARAMETERFHPPROC ImageTransformParameterfHP; + PFNGLIMAGETRANSFORMPARAMETERFVHPPROC ImageTransformParameterfvHP; + PFNGLIMAGETRANSFORMPARAMETERIHPPROC ImageTransformParameteriHP; + PFNGLIMAGETRANSFORMPARAMETERIVHPPROC ImageTransformParameterivHP; + PFNGLIMPORTMEMORYFDEXTPROC ImportMemoryFdEXT; + PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC ImportMemoryWin32HandleEXT; + PFNGLIMPORTMEMORYWIN32NAMEEXTPROC ImportMemoryWin32NameEXT; + PFNGLIMPORTSEMAPHOREFDEXTPROC ImportSemaphoreFdEXT; + PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC ImportSemaphoreWin32HandleEXT; + PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC ImportSemaphoreWin32NameEXT; + PFNGLIMPORTSYNCEXTPROC ImportSyncEXT; + PFNGLINDEXFORMATNVPROC IndexFormatNV; + PFNGLINDEXFUNCEXTPROC IndexFuncEXT; + PFNGLINDEXMATERIALEXTPROC IndexMaterialEXT; + PFNGLINDEXPOINTEREXTPROC IndexPointerEXT; + PFNGLINDEXPOINTERLISTIBMPROC IndexPointerListIBM; + PFNGLINDEXXOESPROC IndexxOES; + PFNGLINDEXXVOESPROC IndexxvOES; + PFNGLINSERTCOMPONENTEXTPROC InsertComponentEXT; + PFNGLINSERTEVENTMARKEREXTPROC InsertEventMarkerEXT; + PFNGLINSTRUMENTSBUFFERSGIXPROC InstrumentsBufferSGIX; + PFNGLINTERPOLATEPATHSNVPROC InterpolatePathsNV; + PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData; + PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData; + PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer; + PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC InvalidateNamedFramebufferData; + PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC InvalidateNamedFramebufferSubData; + PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer; + PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage; + PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage; + PFNGLISASYNCMARKERSGIXPROC IsAsyncMarkerSGIX; + PFNGLISBUFFERPROC IsBuffer; + PFNGLISBUFFERARBPROC IsBufferARB; + PFNGLISBUFFERRESIDENTNVPROC IsBufferResidentNV; + PFNGLISCOMMANDLISTNVPROC IsCommandListNV; + PFNGLISENABLEDPROC IsEnabled; + PFNGLISENABLEDINDEXEDEXTPROC IsEnabledIndexedEXT; + PFNGLISENABLEDIPROC IsEnabledi; + PFNGLISFENCEAPPLEPROC IsFenceAPPLE; + PFNGLISFENCENVPROC IsFenceNV; + PFNGLISFRAMEBUFFERPROC IsFramebuffer; + PFNGLISFRAMEBUFFEREXTPROC IsFramebufferEXT; + PFNGLISIMAGEHANDLERESIDENTARBPROC IsImageHandleResidentARB; + PFNGLISIMAGEHANDLERESIDENTNVPROC IsImageHandleResidentNV; + PFNGLISMEMORYOBJECTEXTPROC IsMemoryObjectEXT; + PFNGLISNAMEAMDPROC IsNameAMD; + PFNGLISNAMEDBUFFERRESIDENTNVPROC IsNamedBufferResidentNV; + PFNGLISNAMEDSTRINGARBPROC IsNamedStringARB; + PFNGLISOBJECTBUFFERATIPROC IsObjectBufferATI; + PFNGLISOCCLUSIONQUERYNVPROC IsOcclusionQueryNV; + PFNGLISPATHNVPROC IsPathNV; + PFNGLISPOINTINFILLPATHNVPROC IsPointInFillPathNV; + PFNGLISPOINTINSTROKEPATHNVPROC IsPointInStrokePathNV; + PFNGLISPROGRAMPROC IsProgram; + PFNGLISPROGRAMARBPROC IsProgramARB; + PFNGLISPROGRAMNVPROC IsProgramNV; + PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline; + PFNGLISQUERYPROC IsQuery; + PFNGLISQUERYARBPROC IsQueryARB; + PFNGLISRENDERBUFFERPROC IsRenderbuffer; + PFNGLISRENDERBUFFEREXTPROC IsRenderbufferEXT; + PFNGLISSAMPLERPROC IsSampler; + PFNGLISSEMAPHOREEXTPROC IsSemaphoreEXT; + PFNGLISSHADERPROC IsShader; + PFNGLISSTATENVPROC IsStateNV; + PFNGLISSYNCPROC IsSync; + PFNGLISTEXTUREPROC IsTexture; + PFNGLISTEXTUREEXTPROC IsTextureEXT; + PFNGLISTEXTUREHANDLERESIDENTARBPROC IsTextureHandleResidentARB; + PFNGLISTEXTUREHANDLERESIDENTNVPROC IsTextureHandleResidentNV; + PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback; + PFNGLISTRANSFORMFEEDBACKNVPROC IsTransformFeedbackNV; + PFNGLISVARIANTENABLEDEXTPROC IsVariantEnabledEXT; + PFNGLISVERTEXARRAYPROC IsVertexArray; + PFNGLISVERTEXARRAYAPPLEPROC IsVertexArrayAPPLE; + PFNGLISVERTEXATTRIBENABLEDAPPLEPROC IsVertexAttribEnabledAPPLE; + PFNGLLGPUCOPYIMAGESUBDATANVXPROC LGPUCopyImageSubDataNVX; + PFNGLLGPUINTERLOCKNVXPROC LGPUInterlockNVX; + PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC LGPUNamedBufferSubDataNVX; + PFNGLLABELOBJECTEXTPROC LabelObjectEXT; + PFNGLLIGHTENVISGIXPROC LightEnviSGIX; + PFNGLLIGHTMODELXOESPROC LightModelxOES; + PFNGLLIGHTMODELXVOESPROC LightModelxvOES; + PFNGLLIGHTXOESPROC LightxOES; + PFNGLLIGHTXVOESPROC LightxvOES; + PFNGLLINEWIDTHPROC LineWidth; + PFNGLLINEWIDTHXOESPROC LineWidthxOES; + PFNGLLINKPROGRAMPROC LinkProgram; + PFNGLLINKPROGRAMARBPROC LinkProgramARB; + PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC ListDrawCommandsStatesClientNV; + PFNGLLISTPARAMETERFSGIXPROC ListParameterfSGIX; + PFNGLLISTPARAMETERFVSGIXPROC ListParameterfvSGIX; + PFNGLLISTPARAMETERISGIXPROC ListParameteriSGIX; + PFNGLLISTPARAMETERIVSGIXPROC ListParameterivSGIX; + PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC LoadIdentityDeformationMapSGIX; + PFNGLLOADMATRIXXOESPROC LoadMatrixxOES; + PFNGLLOADPROGRAMNVPROC LoadProgramNV; + PFNGLLOADTRANSPOSEMATRIXDARBPROC LoadTransposeMatrixdARB; + PFNGLLOADTRANSPOSEMATRIXFARBPROC LoadTransposeMatrixfARB; + PFNGLLOADTRANSPOSEMATRIXXOESPROC LoadTransposeMatrixxOES; + PFNGLLOCKARRAYSEXTPROC LockArraysEXT; + PFNGLLOGICOPPROC LogicOp; + PFNGLMAKEBUFFERNONRESIDENTNVPROC MakeBufferNonResidentNV; + PFNGLMAKEBUFFERRESIDENTNVPROC MakeBufferResidentNV; + PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC MakeImageHandleNonResidentARB; + PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC MakeImageHandleNonResidentNV; + PFNGLMAKEIMAGEHANDLERESIDENTARBPROC MakeImageHandleResidentARB; + PFNGLMAKEIMAGEHANDLERESIDENTNVPROC MakeImageHandleResidentNV; + PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC MakeNamedBufferNonResidentNV; + PFNGLMAKENAMEDBUFFERRESIDENTNVPROC MakeNamedBufferResidentNV; + PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC MakeTextureHandleNonResidentARB; + PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC MakeTextureHandleNonResidentNV; + PFNGLMAKETEXTUREHANDLERESIDENTARBPROC MakeTextureHandleResidentARB; + PFNGLMAKETEXTUREHANDLERESIDENTNVPROC MakeTextureHandleResidentNV; + PFNGLMAP1XOESPROC Map1xOES; + PFNGLMAP2XOESPROC Map2xOES; + PFNGLMAPBUFFERPROC MapBuffer; + PFNGLMAPBUFFERARBPROC MapBufferARB; + PFNGLMAPBUFFERRANGEPROC MapBufferRange; + PFNGLMAPCONTROLPOINTSNVPROC MapControlPointsNV; + PFNGLMAPGRID1XOESPROC MapGrid1xOES; + PFNGLMAPGRID2XOESPROC MapGrid2xOES; + PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer; + PFNGLMAPNAMEDBUFFEREXTPROC MapNamedBufferEXT; + PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange; + PFNGLMAPNAMEDBUFFERRANGEEXTPROC MapNamedBufferRangeEXT; + PFNGLMAPOBJECTBUFFERATIPROC MapObjectBufferATI; + PFNGLMAPPARAMETERFVNVPROC MapParameterfvNV; + PFNGLMAPPARAMETERIVNVPROC MapParameterivNV; + PFNGLMAPTEXTURE2DINTELPROC MapTexture2DINTEL; + PFNGLMAPVERTEXATTRIB1DAPPLEPROC MapVertexAttrib1dAPPLE; + PFNGLMAPVERTEXATTRIB1FAPPLEPROC MapVertexAttrib1fAPPLE; + PFNGLMAPVERTEXATTRIB2DAPPLEPROC MapVertexAttrib2dAPPLE; + PFNGLMAPVERTEXATTRIB2FAPPLEPROC MapVertexAttrib2fAPPLE; + PFNGLMATERIALXOESPROC MaterialxOES; + PFNGLMATERIALXVOESPROC MaterialxvOES; + PFNGLMATRIXFRUSTUMEXTPROC MatrixFrustumEXT; + PFNGLMATRIXINDEXPOINTERARBPROC MatrixIndexPointerARB; + PFNGLMATRIXINDEXUBVARBPROC MatrixIndexubvARB; + PFNGLMATRIXINDEXUIVARBPROC MatrixIndexuivARB; + PFNGLMATRIXINDEXUSVARBPROC MatrixIndexusvARB; + PFNGLMATRIXLOAD3X2FNVPROC MatrixLoad3x2fNV; + PFNGLMATRIXLOAD3X3FNVPROC MatrixLoad3x3fNV; + PFNGLMATRIXLOADIDENTITYEXTPROC MatrixLoadIdentityEXT; + PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC MatrixLoadTranspose3x3fNV; + PFNGLMATRIXLOADTRANSPOSEDEXTPROC MatrixLoadTransposedEXT; + PFNGLMATRIXLOADTRANSPOSEFEXTPROC MatrixLoadTransposefEXT; + PFNGLMATRIXLOADDEXTPROC MatrixLoaddEXT; + PFNGLMATRIXLOADFEXTPROC MatrixLoadfEXT; + PFNGLMATRIXMULT3X2FNVPROC MatrixMult3x2fNV; + PFNGLMATRIXMULT3X3FNVPROC MatrixMult3x3fNV; + PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC MatrixMultTranspose3x3fNV; + PFNGLMATRIXMULTTRANSPOSEDEXTPROC MatrixMultTransposedEXT; + PFNGLMATRIXMULTTRANSPOSEFEXTPROC MatrixMultTransposefEXT; + PFNGLMATRIXMULTDEXTPROC MatrixMultdEXT; + PFNGLMATRIXMULTFEXTPROC MatrixMultfEXT; + PFNGLMATRIXORTHOEXTPROC MatrixOrthoEXT; + PFNGLMATRIXPOPEXTPROC MatrixPopEXT; + PFNGLMATRIXPUSHEXTPROC MatrixPushEXT; + PFNGLMATRIXROTATEDEXTPROC MatrixRotatedEXT; + PFNGLMATRIXROTATEFEXTPROC MatrixRotatefEXT; + PFNGLMATRIXSCALEDEXTPROC MatrixScaledEXT; + PFNGLMATRIXSCALEFEXTPROC MatrixScalefEXT; + PFNGLMATRIXTRANSLATEDEXTPROC MatrixTranslatedEXT; + PFNGLMATRIXTRANSLATEFEXTPROC MatrixTranslatefEXT; + PFNGLMAXSHADERCOMPILERTHREADSARBPROC MaxShaderCompilerThreadsARB; + PFNGLMAXSHADERCOMPILERTHREADSKHRPROC MaxShaderCompilerThreadsKHR; + PFNGLMEMORYBARRIERPROC MemoryBarrier; + PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion; + PFNGLMEMORYBARRIEREXTPROC MemoryBarrierEXT; + PFNGLMEMORYOBJECTPARAMETERIVEXTPROC MemoryObjectParameterivEXT; + PFNGLMINSAMPLESHADINGPROC MinSampleShading; + PFNGLMINSAMPLESHADINGARBPROC MinSampleShadingARB; + PFNGLMINMAXEXTPROC MinmaxEXT; + PFNGLMULTMATRIXXOESPROC MultMatrixxOES; + PFNGLMULTTRANSPOSEMATRIXDARBPROC MultTransposeMatrixdARB; + PFNGLMULTTRANSPOSEMATRIXFARBPROC MultTransposeMatrixfARB; + PFNGLMULTTRANSPOSEMATRIXXOESPROC MultTransposeMatrixxOES; + PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays; + PFNGLMULTIDRAWARRAYSEXTPROC MultiDrawArraysEXT; + PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect; + PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC MultiDrawArraysIndirectAMD; + PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC MultiDrawArraysIndirectBindlessCountNV; + PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC MultiDrawArraysIndirectBindlessNV; + PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount; + PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC MultiDrawArraysIndirectCountARB; + PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC MultiDrawElementArrayAPPLE; + PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements; + PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex; + PFNGLMULTIDRAWELEMENTSEXTPROC MultiDrawElementsEXT; + PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect; + PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC MultiDrawElementsIndirectAMD; + PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC MultiDrawElementsIndirectBindlessCountNV; + PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC MultiDrawElementsIndirectBindlessNV; + PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount; + PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC MultiDrawElementsIndirectCountARB; + PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC MultiDrawMeshTasksIndirectCountNV; + PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC MultiDrawMeshTasksIndirectNV; + PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC MultiDrawRangeElementArrayAPPLE; + PFNGLMULTIMODEDRAWARRAYSIBMPROC MultiModeDrawArraysIBM; + PFNGLMULTIMODEDRAWELEMENTSIBMPROC MultiModeDrawElementsIBM; + PFNGLMULTITEXBUFFEREXTPROC MultiTexBufferEXT; + PFNGLMULTITEXCOORD1BOESPROC MultiTexCoord1bOES; + PFNGLMULTITEXCOORD1BVOESPROC MultiTexCoord1bvOES; + PFNGLMULTITEXCOORD1DARBPROC MultiTexCoord1dARB; + PFNGLMULTITEXCOORD1DVARBPROC MultiTexCoord1dvARB; + PFNGLMULTITEXCOORD1FARBPROC MultiTexCoord1fARB; + PFNGLMULTITEXCOORD1FVARBPROC MultiTexCoord1fvARB; + PFNGLMULTITEXCOORD1HNVPROC MultiTexCoord1hNV; + PFNGLMULTITEXCOORD1HVNVPROC MultiTexCoord1hvNV; + PFNGLMULTITEXCOORD1IARBPROC MultiTexCoord1iARB; + PFNGLMULTITEXCOORD1IVARBPROC MultiTexCoord1ivARB; + PFNGLMULTITEXCOORD1SARBPROC MultiTexCoord1sARB; + PFNGLMULTITEXCOORD1SVARBPROC MultiTexCoord1svARB; + PFNGLMULTITEXCOORD1XOESPROC MultiTexCoord1xOES; + PFNGLMULTITEXCOORD1XVOESPROC MultiTexCoord1xvOES; + PFNGLMULTITEXCOORD2BOESPROC MultiTexCoord2bOES; + PFNGLMULTITEXCOORD2BVOESPROC MultiTexCoord2bvOES; + PFNGLMULTITEXCOORD2DARBPROC MultiTexCoord2dARB; + PFNGLMULTITEXCOORD2DVARBPROC MultiTexCoord2dvARB; + PFNGLMULTITEXCOORD2FARBPROC MultiTexCoord2fARB; + PFNGLMULTITEXCOORD2FVARBPROC MultiTexCoord2fvARB; + PFNGLMULTITEXCOORD2HNVPROC MultiTexCoord2hNV; + PFNGLMULTITEXCOORD2HVNVPROC MultiTexCoord2hvNV; + PFNGLMULTITEXCOORD2IARBPROC MultiTexCoord2iARB; + PFNGLMULTITEXCOORD2IVARBPROC MultiTexCoord2ivARB; + PFNGLMULTITEXCOORD2SARBPROC MultiTexCoord2sARB; + PFNGLMULTITEXCOORD2SVARBPROC MultiTexCoord2svARB; + PFNGLMULTITEXCOORD2XOESPROC MultiTexCoord2xOES; + PFNGLMULTITEXCOORD2XVOESPROC MultiTexCoord2xvOES; + PFNGLMULTITEXCOORD3BOESPROC MultiTexCoord3bOES; + PFNGLMULTITEXCOORD3BVOESPROC MultiTexCoord3bvOES; + PFNGLMULTITEXCOORD3DARBPROC MultiTexCoord3dARB; + PFNGLMULTITEXCOORD3DVARBPROC MultiTexCoord3dvARB; + PFNGLMULTITEXCOORD3FARBPROC MultiTexCoord3fARB; + PFNGLMULTITEXCOORD3FVARBPROC MultiTexCoord3fvARB; + PFNGLMULTITEXCOORD3HNVPROC MultiTexCoord3hNV; + PFNGLMULTITEXCOORD3HVNVPROC MultiTexCoord3hvNV; + PFNGLMULTITEXCOORD3IARBPROC MultiTexCoord3iARB; + PFNGLMULTITEXCOORD3IVARBPROC MultiTexCoord3ivARB; + PFNGLMULTITEXCOORD3SARBPROC MultiTexCoord3sARB; + PFNGLMULTITEXCOORD3SVARBPROC MultiTexCoord3svARB; + PFNGLMULTITEXCOORD3XOESPROC MultiTexCoord3xOES; + PFNGLMULTITEXCOORD3XVOESPROC MultiTexCoord3xvOES; + PFNGLMULTITEXCOORD4BOESPROC MultiTexCoord4bOES; + PFNGLMULTITEXCOORD4BVOESPROC MultiTexCoord4bvOES; + PFNGLMULTITEXCOORD4DARBPROC MultiTexCoord4dARB; + PFNGLMULTITEXCOORD4DVARBPROC MultiTexCoord4dvARB; + PFNGLMULTITEXCOORD4FARBPROC MultiTexCoord4fARB; + PFNGLMULTITEXCOORD4FVARBPROC MultiTexCoord4fvARB; + PFNGLMULTITEXCOORD4HNVPROC MultiTexCoord4hNV; + PFNGLMULTITEXCOORD4HVNVPROC MultiTexCoord4hvNV; + PFNGLMULTITEXCOORD4IARBPROC MultiTexCoord4iARB; + PFNGLMULTITEXCOORD4IVARBPROC MultiTexCoord4ivARB; + PFNGLMULTITEXCOORD4SARBPROC MultiTexCoord4sARB; + PFNGLMULTITEXCOORD4SVARBPROC MultiTexCoord4svARB; + PFNGLMULTITEXCOORD4XOESPROC MultiTexCoord4xOES; + PFNGLMULTITEXCOORD4XVOESPROC MultiTexCoord4xvOES; + PFNGLMULTITEXCOORDPOINTEREXTPROC MultiTexCoordPointerEXT; + PFNGLMULTITEXENVFEXTPROC MultiTexEnvfEXT; + PFNGLMULTITEXENVFVEXTPROC MultiTexEnvfvEXT; + PFNGLMULTITEXENVIEXTPROC MultiTexEnviEXT; + PFNGLMULTITEXENVIVEXTPROC MultiTexEnvivEXT; + PFNGLMULTITEXGENDEXTPROC MultiTexGendEXT; + PFNGLMULTITEXGENDVEXTPROC MultiTexGendvEXT; + PFNGLMULTITEXGENFEXTPROC MultiTexGenfEXT; + PFNGLMULTITEXGENFVEXTPROC MultiTexGenfvEXT; + PFNGLMULTITEXGENIEXTPROC MultiTexGeniEXT; + PFNGLMULTITEXGENIVEXTPROC MultiTexGenivEXT; + PFNGLMULTITEXIMAGE1DEXTPROC MultiTexImage1DEXT; + PFNGLMULTITEXIMAGE2DEXTPROC MultiTexImage2DEXT; + PFNGLMULTITEXIMAGE3DEXTPROC MultiTexImage3DEXT; + PFNGLMULTITEXPARAMETERIIVEXTPROC MultiTexParameterIivEXT; + PFNGLMULTITEXPARAMETERIUIVEXTPROC MultiTexParameterIuivEXT; + PFNGLMULTITEXPARAMETERFEXTPROC MultiTexParameterfEXT; + PFNGLMULTITEXPARAMETERFVEXTPROC MultiTexParameterfvEXT; + PFNGLMULTITEXPARAMETERIEXTPROC MultiTexParameteriEXT; + PFNGLMULTITEXPARAMETERIVEXTPROC MultiTexParameterivEXT; + PFNGLMULTITEXRENDERBUFFEREXTPROC MultiTexRenderbufferEXT; + PFNGLMULTITEXSUBIMAGE1DEXTPROC MultiTexSubImage1DEXT; + PFNGLMULTITEXSUBIMAGE2DEXTPROC MultiTexSubImage2DEXT; + PFNGLMULTITEXSUBIMAGE3DEXTPROC MultiTexSubImage3DEXT; + PFNGLMULTICASTBARRIERNVPROC MulticastBarrierNV; + PFNGLMULTICASTBLITFRAMEBUFFERNVPROC MulticastBlitFramebufferNV; + PFNGLMULTICASTBUFFERSUBDATANVPROC MulticastBufferSubDataNV; + PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC MulticastCopyBufferSubDataNV; + PFNGLMULTICASTCOPYIMAGESUBDATANVPROC MulticastCopyImageSubDataNV; + PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC MulticastFramebufferSampleLocationsfvNV; + PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC MulticastGetQueryObjecti64vNV; + PFNGLMULTICASTGETQUERYOBJECTIVNVPROC MulticastGetQueryObjectivNV; + PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC MulticastGetQueryObjectui64vNV; + PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC MulticastGetQueryObjectuivNV; + PFNGLMULTICASTSCISSORARRAYVNVXPROC MulticastScissorArrayvNVX; + PFNGLMULTICASTVIEWPORTARRAYVNVXPROC MulticastViewportArrayvNVX; + PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC MulticastViewportPositionWScaleNVX; + PFNGLMULTICASTWAITSYNCNVPROC MulticastWaitSyncNV; + PFNGLNAMEDBUFFERATTACHMEMORYNVPROC NamedBufferAttachMemoryNV; + PFNGLNAMEDBUFFERDATAPROC NamedBufferData; + PFNGLNAMEDBUFFERDATAEXTPROC NamedBufferDataEXT; + PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC NamedBufferPageCommitmentARB; + PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC NamedBufferPageCommitmentEXT; + PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC NamedBufferPageCommitmentMemNV; + PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage; + PFNGLNAMEDBUFFERSTORAGEEXTPROC NamedBufferStorageEXT; + PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC NamedBufferStorageExternalEXT; + PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC NamedBufferStorageMemEXT; + PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData; + PFNGLNAMEDBUFFERSUBDATAEXTPROC NamedBufferSubDataEXT; + PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC NamedCopyBufferSubDataEXT; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers; + PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri; + PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC NamedFramebufferParameteriEXT; + PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer; + PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer; + PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC NamedFramebufferRenderbufferEXT; + PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC NamedFramebufferSampleLocationsfvARB; + PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC NamedFramebufferSampleLocationsfvNV; + PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC NamedFramebufferSamplePositionsfvAMD; + PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture; + PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC NamedFramebufferTexture1DEXT; + PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC NamedFramebufferTexture2DEXT; + PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC NamedFramebufferTexture3DEXT; + PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC NamedFramebufferTextureEXT; + PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC NamedFramebufferTextureFaceEXT; + PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer; + PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC NamedFramebufferTextureLayerEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC NamedProgramLocalParameter4dEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC NamedProgramLocalParameter4dvEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC NamedProgramLocalParameter4fEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC NamedProgramLocalParameter4fvEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC NamedProgramLocalParameterI4iEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC NamedProgramLocalParameterI4ivEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC NamedProgramLocalParameterI4uiEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC NamedProgramLocalParameterI4uivEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC NamedProgramLocalParameters4fvEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC NamedProgramLocalParametersI4ivEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC NamedProgramLocalParametersI4uivEXT; + PFNGLNAMEDPROGRAMSTRINGEXTPROC NamedProgramStringEXT; + PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage; + PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC NamedRenderbufferStorageEXT; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC + NamedRenderbufferStorageMultisampleAdvancedAMD; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC + NamedRenderbufferStorageMultisampleCoverageEXT; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC NamedRenderbufferStorageMultisampleEXT; + PFNGLNAMEDSTRINGARBPROC NamedStringARB; + PFNGLNEWOBJECTBUFFERATIPROC NewObjectBufferATI; + PFNGLNORMAL3FVERTEX3FSUNPROC Normal3fVertex3fSUN; + PFNGLNORMAL3FVERTEX3FVSUNPROC Normal3fVertex3fvSUN; + PFNGLNORMAL3HNVPROC Normal3hNV; + PFNGLNORMAL3HVNVPROC Normal3hvNV; + PFNGLNORMAL3XOESPROC Normal3xOES; + PFNGLNORMAL3XVOESPROC Normal3xvOES; + PFNGLNORMALFORMATNVPROC NormalFormatNV; + PFNGLNORMALPOINTEREXTPROC NormalPointerEXT; + PFNGLNORMALPOINTERLISTIBMPROC NormalPointerListIBM; + PFNGLNORMALPOINTERVINTELPROC NormalPointervINTEL; + PFNGLNORMALSTREAM3BATIPROC NormalStream3bATI; + PFNGLNORMALSTREAM3BVATIPROC NormalStream3bvATI; + PFNGLNORMALSTREAM3DATIPROC NormalStream3dATI; + PFNGLNORMALSTREAM3DVATIPROC NormalStream3dvATI; + PFNGLNORMALSTREAM3FATIPROC NormalStream3fATI; + PFNGLNORMALSTREAM3FVATIPROC NormalStream3fvATI; + PFNGLNORMALSTREAM3IATIPROC NormalStream3iATI; + PFNGLNORMALSTREAM3IVATIPROC NormalStream3ivATI; + PFNGLNORMALSTREAM3SATIPROC NormalStream3sATI; + PFNGLNORMALSTREAM3SVATIPROC NormalStream3svATI; + PFNGLOBJECTLABELPROC ObjectLabel; + PFNGLOBJECTPTRLABELPROC ObjectPtrLabel; + PFNGLOBJECTPURGEABLEAPPLEPROC ObjectPurgeableAPPLE; + PFNGLOBJECTUNPURGEABLEAPPLEPROC ObjectUnpurgeableAPPLE; + PFNGLORTHOFOESPROC OrthofOES; + PFNGLORTHOXOESPROC OrthoxOES; + PFNGLPNTRIANGLESFATIPROC PNTrianglesfATI; + PFNGLPNTRIANGLESIATIPROC PNTrianglesiATI; + PFNGLPASSTEXCOORDATIPROC PassTexCoordATI; + PFNGLPASSTHROUGHXOESPROC PassThroughxOES; + PFNGLPATCHPARAMETERFVPROC PatchParameterfv; + PFNGLPATCHPARAMETERIPROC PatchParameteri; + PFNGLPATHCOMMANDSNVPROC PathCommandsNV; + PFNGLPATHCOORDSNVPROC PathCoordsNV; + PFNGLPATHCOVERDEPTHFUNCNVPROC PathCoverDepthFuncNV; + PFNGLPATHDASHARRAYNVPROC PathDashArrayNV; + PFNGLPATHGLYPHINDEXARRAYNVPROC PathGlyphIndexArrayNV; + PFNGLPATHGLYPHINDEXRANGENVPROC PathGlyphIndexRangeNV; + PFNGLPATHGLYPHRANGENVPROC PathGlyphRangeNV; + PFNGLPATHGLYPHSNVPROC PathGlyphsNV; + PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC PathMemoryGlyphIndexArrayNV; + PFNGLPATHPARAMETERFNVPROC PathParameterfNV; + PFNGLPATHPARAMETERFVNVPROC PathParameterfvNV; + PFNGLPATHPARAMETERINVPROC PathParameteriNV; + PFNGLPATHPARAMETERIVNVPROC PathParameterivNV; + PFNGLPATHSTENCILDEPTHOFFSETNVPROC PathStencilDepthOffsetNV; + PFNGLPATHSTENCILFUNCNVPROC PathStencilFuncNV; + PFNGLPATHSTRINGNVPROC PathStringNV; + PFNGLPATHSUBCOMMANDSNVPROC PathSubCommandsNV; + PFNGLPATHSUBCOORDSNVPROC PathSubCoordsNV; + PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback; + PFNGLPAUSETRANSFORMFEEDBACKNVPROC PauseTransformFeedbackNV; + PFNGLPIXELDATARANGENVPROC PixelDataRangeNV; + PFNGLPIXELMAPXPROC PixelMapx; + PFNGLPIXELSTOREFPROC PixelStoref; + PFNGLPIXELSTOREIPROC PixelStorei; + PFNGLPIXELSTOREXPROC PixelStorex; + PFNGLPIXELTEXGENPARAMETERFSGISPROC PixelTexGenParameterfSGIS; + PFNGLPIXELTEXGENPARAMETERFVSGISPROC PixelTexGenParameterfvSGIS; + PFNGLPIXELTEXGENPARAMETERISGISPROC PixelTexGenParameteriSGIS; + PFNGLPIXELTEXGENPARAMETERIVSGISPROC PixelTexGenParameterivSGIS; + PFNGLPIXELTEXGENSGIXPROC PixelTexGenSGIX; + PFNGLPIXELTRANSFERXOESPROC PixelTransferxOES; + PFNGLPIXELTRANSFORMPARAMETERFEXTPROC PixelTransformParameterfEXT; + PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC PixelTransformParameterfvEXT; + PFNGLPIXELTRANSFORMPARAMETERIEXTPROC PixelTransformParameteriEXT; + PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC PixelTransformParameterivEXT; + PFNGLPIXELZOOMXOESPROC PixelZoomxOES; + PFNGLPOINTALONGPATHNVPROC PointAlongPathNV; + PFNGLPOINTPARAMETERFPROC PointParameterf; + PFNGLPOINTPARAMETERFARBPROC PointParameterfARB; + PFNGLPOINTPARAMETERFEXTPROC PointParameterfEXT; + PFNGLPOINTPARAMETERFSGISPROC PointParameterfSGIS; + PFNGLPOINTPARAMETERFVPROC PointParameterfv; + PFNGLPOINTPARAMETERFVARBPROC PointParameterfvARB; + PFNGLPOINTPARAMETERFVEXTPROC PointParameterfvEXT; + PFNGLPOINTPARAMETERFVSGISPROC PointParameterfvSGIS; + PFNGLPOINTPARAMETERIPROC PointParameteri; + PFNGLPOINTPARAMETERINVPROC PointParameteriNV; + PFNGLPOINTPARAMETERIVPROC PointParameteriv; + PFNGLPOINTPARAMETERIVNVPROC PointParameterivNV; + PFNGLPOINTPARAMETERXVOESPROC PointParameterxvOES; + PFNGLPOINTSIZEPROC PointSize; + PFNGLPOINTSIZEXOESPROC PointSizexOES; + PFNGLPOLLASYNCSGIXPROC PollAsyncSGIX; + PFNGLPOLLINSTRUMENTSSGIXPROC PollInstrumentsSGIX; + PFNGLPOLYGONMODEPROC PolygonMode; + PFNGLPOLYGONOFFSETPROC PolygonOffset; + PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp; + PFNGLPOLYGONOFFSETCLAMPEXTPROC PolygonOffsetClampEXT; + PFNGLPOLYGONOFFSETEXTPROC PolygonOffsetEXT; + PFNGLPOLYGONOFFSETXOESPROC PolygonOffsetxOES; + PFNGLPOPDEBUGGROUPPROC PopDebugGroup; + PFNGLPOPGROUPMARKEREXTPROC PopGroupMarkerEXT; + PFNGLPRESENTFRAMEDUALFILLNVPROC PresentFrameDualFillNV; + PFNGLPRESENTFRAMEKEYEDNVPROC PresentFrameKeyedNV; + PFNGLPRIMITIVEBOUNDINGBOXARBPROC PrimitiveBoundingBoxARB; + PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex; + PFNGLPRIMITIVERESTARTINDEXNVPROC PrimitiveRestartIndexNV; + PFNGLPRIMITIVERESTARTNVPROC PrimitiveRestartNV; + PFNGLPRIORITIZETEXTURESEXTPROC PrioritizeTexturesEXT; + PFNGLPRIORITIZETEXTURESXOESPROC PrioritizeTexturesxOES; + PFNGLPROGRAMBINARYPROC ProgramBinary; + PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC ProgramBufferParametersIivNV; + PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC ProgramBufferParametersIuivNV; + PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC ProgramBufferParametersfvNV; + PFNGLPROGRAMENVPARAMETER4DARBPROC ProgramEnvParameter4dARB; + PFNGLPROGRAMENVPARAMETER4DVARBPROC ProgramEnvParameter4dvARB; + PFNGLPROGRAMENVPARAMETER4FARBPROC ProgramEnvParameter4fARB; + PFNGLPROGRAMENVPARAMETER4FVARBPROC ProgramEnvParameter4fvARB; + PFNGLPROGRAMENVPARAMETERI4INVPROC ProgramEnvParameterI4iNV; + PFNGLPROGRAMENVPARAMETERI4IVNVPROC ProgramEnvParameterI4ivNV; + PFNGLPROGRAMENVPARAMETERI4UINVPROC ProgramEnvParameterI4uiNV; + PFNGLPROGRAMENVPARAMETERI4UIVNVPROC ProgramEnvParameterI4uivNV; + PFNGLPROGRAMENVPARAMETERS4FVEXTPROC ProgramEnvParameters4fvEXT; + PFNGLPROGRAMENVPARAMETERSI4IVNVPROC ProgramEnvParametersI4ivNV; + PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC ProgramEnvParametersI4uivNV; + PFNGLPROGRAMLOCALPARAMETER4DARBPROC ProgramLocalParameter4dARB; + PFNGLPROGRAMLOCALPARAMETER4DVARBPROC ProgramLocalParameter4dvARB; + PFNGLPROGRAMLOCALPARAMETER4FARBPROC ProgramLocalParameter4fARB; + PFNGLPROGRAMLOCALPARAMETER4FVARBPROC ProgramLocalParameter4fvARB; + PFNGLPROGRAMLOCALPARAMETERI4INVPROC ProgramLocalParameterI4iNV; + PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC ProgramLocalParameterI4ivNV; + PFNGLPROGRAMLOCALPARAMETERI4UINVPROC ProgramLocalParameterI4uiNV; + PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC ProgramLocalParameterI4uivNV; + PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC ProgramLocalParameters4fvEXT; + PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC ProgramLocalParametersI4ivNV; + PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC ProgramLocalParametersI4uivNV; + PFNGLPROGRAMNAMEDPARAMETER4DNVPROC ProgramNamedParameter4dNV; + PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC ProgramNamedParameter4dvNV; + PFNGLPROGRAMNAMEDPARAMETER4FNVPROC ProgramNamedParameter4fNV; + PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC ProgramNamedParameter4fvNV; + PFNGLPROGRAMPARAMETER4DNVPROC ProgramParameter4dNV; + PFNGLPROGRAMPARAMETER4DVNVPROC ProgramParameter4dvNV; + PFNGLPROGRAMPARAMETER4FNVPROC ProgramParameter4fNV; + PFNGLPROGRAMPARAMETER4FVNVPROC ProgramParameter4fvNV; + PFNGLPROGRAMPARAMETERIPROC ProgramParameteri; + PFNGLPROGRAMPARAMETERIARBPROC ProgramParameteriARB; + PFNGLPROGRAMPARAMETERIEXTPROC ProgramParameteriEXT; + PFNGLPROGRAMPARAMETERS4DVNVPROC ProgramParameters4dvNV; + PFNGLPROGRAMPARAMETERS4FVNVPROC ProgramParameters4fvNV; + PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC ProgramPathFragmentInputGenNV; + PFNGLPROGRAMSTRINGARBPROC ProgramStringARB; + PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC ProgramSubroutineParametersuivNV; + PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d; + PFNGLPROGRAMUNIFORM1DEXTPROC ProgramUniform1dEXT; + PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv; + PFNGLPROGRAMUNIFORM1DVEXTPROC ProgramUniform1dvEXT; + PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f; + PFNGLPROGRAMUNIFORM1FEXTPROC ProgramUniform1fEXT; + PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv; + PFNGLPROGRAMUNIFORM1FVEXTPROC ProgramUniform1fvEXT; + PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i; + PFNGLPROGRAMUNIFORM1I64ARBPROC ProgramUniform1i64ARB; + PFNGLPROGRAMUNIFORM1I64NVPROC ProgramUniform1i64NV; + PFNGLPROGRAMUNIFORM1I64VARBPROC ProgramUniform1i64vARB; + PFNGLPROGRAMUNIFORM1I64VNVPROC ProgramUniform1i64vNV; + PFNGLPROGRAMUNIFORM1IEXTPROC ProgramUniform1iEXT; + PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv; + PFNGLPROGRAMUNIFORM1IVEXTPROC ProgramUniform1ivEXT; + PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui; + PFNGLPROGRAMUNIFORM1UI64ARBPROC ProgramUniform1ui64ARB; + PFNGLPROGRAMUNIFORM1UI64NVPROC ProgramUniform1ui64NV; + PFNGLPROGRAMUNIFORM1UI64VARBPROC ProgramUniform1ui64vARB; + PFNGLPROGRAMUNIFORM1UI64VNVPROC ProgramUniform1ui64vNV; + PFNGLPROGRAMUNIFORM1UIEXTPROC ProgramUniform1uiEXT; + PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv; + PFNGLPROGRAMUNIFORM1UIVEXTPROC ProgramUniform1uivEXT; + PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d; + PFNGLPROGRAMUNIFORM2DEXTPROC ProgramUniform2dEXT; + PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv; + PFNGLPROGRAMUNIFORM2DVEXTPROC ProgramUniform2dvEXT; + PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f; + PFNGLPROGRAMUNIFORM2FEXTPROC ProgramUniform2fEXT; + PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv; + PFNGLPROGRAMUNIFORM2FVEXTPROC ProgramUniform2fvEXT; + PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i; + PFNGLPROGRAMUNIFORM2I64ARBPROC ProgramUniform2i64ARB; + PFNGLPROGRAMUNIFORM2I64NVPROC ProgramUniform2i64NV; + PFNGLPROGRAMUNIFORM2I64VARBPROC ProgramUniform2i64vARB; + PFNGLPROGRAMUNIFORM2I64VNVPROC ProgramUniform2i64vNV; + PFNGLPROGRAMUNIFORM2IEXTPROC ProgramUniform2iEXT; + PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv; + PFNGLPROGRAMUNIFORM2IVEXTPROC ProgramUniform2ivEXT; + PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui; + PFNGLPROGRAMUNIFORM2UI64ARBPROC ProgramUniform2ui64ARB; + PFNGLPROGRAMUNIFORM2UI64NVPROC ProgramUniform2ui64NV; + PFNGLPROGRAMUNIFORM2UI64VARBPROC ProgramUniform2ui64vARB; + PFNGLPROGRAMUNIFORM2UI64VNVPROC ProgramUniform2ui64vNV; + PFNGLPROGRAMUNIFORM2UIEXTPROC ProgramUniform2uiEXT; + PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv; + PFNGLPROGRAMUNIFORM2UIVEXTPROC ProgramUniform2uivEXT; + PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d; + PFNGLPROGRAMUNIFORM3DEXTPROC ProgramUniform3dEXT; + PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv; + PFNGLPROGRAMUNIFORM3DVEXTPROC ProgramUniform3dvEXT; + PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f; + PFNGLPROGRAMUNIFORM3FEXTPROC ProgramUniform3fEXT; + PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv; + PFNGLPROGRAMUNIFORM3FVEXTPROC ProgramUniform3fvEXT; + PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i; + PFNGLPROGRAMUNIFORM3I64ARBPROC ProgramUniform3i64ARB; + PFNGLPROGRAMUNIFORM3I64NVPROC ProgramUniform3i64NV; + PFNGLPROGRAMUNIFORM3I64VARBPROC ProgramUniform3i64vARB; + PFNGLPROGRAMUNIFORM3I64VNVPROC ProgramUniform3i64vNV; + PFNGLPROGRAMUNIFORM3IEXTPROC ProgramUniform3iEXT; + PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv; + PFNGLPROGRAMUNIFORM3IVEXTPROC ProgramUniform3ivEXT; + PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui; + PFNGLPROGRAMUNIFORM3UI64ARBPROC ProgramUniform3ui64ARB; + PFNGLPROGRAMUNIFORM3UI64NVPROC ProgramUniform3ui64NV; + PFNGLPROGRAMUNIFORM3UI64VARBPROC ProgramUniform3ui64vARB; + PFNGLPROGRAMUNIFORM3UI64VNVPROC ProgramUniform3ui64vNV; + PFNGLPROGRAMUNIFORM3UIEXTPROC ProgramUniform3uiEXT; + PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv; + PFNGLPROGRAMUNIFORM3UIVEXTPROC ProgramUniform3uivEXT; + PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d; + PFNGLPROGRAMUNIFORM4DEXTPROC ProgramUniform4dEXT; + PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv; + PFNGLPROGRAMUNIFORM4DVEXTPROC ProgramUniform4dvEXT; + PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f; + PFNGLPROGRAMUNIFORM4FEXTPROC ProgramUniform4fEXT; + PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv; + PFNGLPROGRAMUNIFORM4FVEXTPROC ProgramUniform4fvEXT; + PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i; + PFNGLPROGRAMUNIFORM4I64ARBPROC ProgramUniform4i64ARB; + PFNGLPROGRAMUNIFORM4I64NVPROC ProgramUniform4i64NV; + PFNGLPROGRAMUNIFORM4I64VARBPROC ProgramUniform4i64vARB; + PFNGLPROGRAMUNIFORM4I64VNVPROC ProgramUniform4i64vNV; + PFNGLPROGRAMUNIFORM4IEXTPROC ProgramUniform4iEXT; + PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv; + PFNGLPROGRAMUNIFORM4IVEXTPROC ProgramUniform4ivEXT; + PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui; + PFNGLPROGRAMUNIFORM4UI64ARBPROC ProgramUniform4ui64ARB; + PFNGLPROGRAMUNIFORM4UI64NVPROC ProgramUniform4ui64NV; + PFNGLPROGRAMUNIFORM4UI64VARBPROC ProgramUniform4ui64vARB; + PFNGLPROGRAMUNIFORM4UI64VNVPROC ProgramUniform4ui64vNV; + PFNGLPROGRAMUNIFORM4UIEXTPROC ProgramUniform4uiEXT; + PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv; + PFNGLPROGRAMUNIFORM4UIVEXTPROC ProgramUniform4uivEXT; + PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC ProgramUniformHandleui64ARB; + PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC ProgramUniformHandleui64NV; + PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC ProgramUniformHandleui64vARB; + PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC ProgramUniformHandleui64vNV; + PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv; + PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC ProgramUniformMatrix2dvEXT; + PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv; + PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC ProgramUniformMatrix2fvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv; + PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC ProgramUniformMatrix2x3dvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv; + PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC ProgramUniformMatrix2x3fvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv; + PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC ProgramUniformMatrix2x4dvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv; + PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC ProgramUniformMatrix2x4fvEXT; + PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv; + PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC ProgramUniformMatrix3dvEXT; + PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv; + PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC ProgramUniformMatrix3fvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv; + PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC ProgramUniformMatrix3x2dvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv; + PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC ProgramUniformMatrix3x2fvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv; + PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC ProgramUniformMatrix3x4dvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv; + PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC ProgramUniformMatrix3x4fvEXT; + PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv; + PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC ProgramUniformMatrix4dvEXT; + PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv; + PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC ProgramUniformMatrix4fvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv; + PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC ProgramUniformMatrix4x2dvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv; + PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC ProgramUniformMatrix4x2fvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv; + PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC ProgramUniformMatrix4x3dvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv; + PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC ProgramUniformMatrix4x3fvEXT; + PFNGLPROGRAMUNIFORMUI64NVPROC ProgramUniformui64NV; + PFNGLPROGRAMUNIFORMUI64VNVPROC ProgramUniformui64vNV; + PFNGLPROGRAMVERTEXLIMITNVPROC ProgramVertexLimitNV; + PFNGLPROVOKINGVERTEXPROC ProvokingVertex; + PFNGLPROVOKINGVERTEXEXTPROC ProvokingVertexEXT; + PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC PushClientAttribDefaultEXT; + PFNGLPUSHDEBUGGROUPPROC PushDebugGroup; + PFNGLPUSHGROUPMARKEREXTPROC PushGroupMarkerEXT; + PFNGLQUERYCOUNTERPROC QueryCounter; + PFNGLQUERYMATRIXXOESPROC QueryMatrixxOES; + PFNGLQUERYOBJECTPARAMETERUIAMDPROC QueryObjectParameteruiAMD; + PFNGLQUERYRESOURCENVPROC QueryResourceNV; + PFNGLQUERYRESOURCETAGNVPROC QueryResourceTagNV; + PFNGLRASTERPOS2XOESPROC RasterPos2xOES; + PFNGLRASTERPOS2XVOESPROC RasterPos2xvOES; + PFNGLRASTERPOS3XOESPROC RasterPos3xOES; + PFNGLRASTERPOS3XVOESPROC RasterPos3xvOES; + PFNGLRASTERPOS4XOESPROC RasterPos4xOES; + PFNGLRASTERPOS4XVOESPROC RasterPos4xvOES; + PFNGLRASTERSAMPLESEXTPROC RasterSamplesEXT; + PFNGLREADBUFFERPROC ReadBuffer; + PFNGLREADINSTRUMENTSSGIXPROC ReadInstrumentsSGIX; + PFNGLREADPIXELSPROC ReadPixels; + PFNGLREADNPIXELSPROC ReadnPixels; + PFNGLREADNPIXELSARBPROC ReadnPixelsARB; + PFNGLRECTXOESPROC RectxOES; + PFNGLRECTXVOESPROC RectxvOES; + PFNGLREFERENCEPLANESGIXPROC ReferencePlaneSGIX; + PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC ReleaseKeyedMutexWin32EXT; + PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler; + PFNGLRENDERGPUMASKNVPROC RenderGpuMaskNV; + PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage; + PFNGLRENDERBUFFERSTORAGEEXTPROC RenderbufferStorageEXT; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC RenderbufferStorageMultisampleAdvancedAMD; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC RenderbufferStorageMultisampleCoverageNV; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC RenderbufferStorageMultisampleEXT; + PFNGLREPLACEMENTCODEPOINTERSUNPROC ReplacementCodePointerSUN; + PFNGLREPLACEMENTCODEUBSUNPROC ReplacementCodeubSUN; + PFNGLREPLACEMENTCODEUBVSUNPROC ReplacementCodeubvSUN; + PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC ReplacementCodeuiColor3fVertex3fSUN; + PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC ReplacementCodeuiColor3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC + ReplacementCodeuiColor4fNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC + ReplacementCodeuiColor4fNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC ReplacementCodeuiColor4ubVertex3fSUN; + PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC ReplacementCodeuiColor4ubVertex3fvSUN; + PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC ReplacementCodeuiNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC ReplacementCodeuiNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUISUNPROC ReplacementCodeuiSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC + ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC + ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC + ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC + ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC ReplacementCodeuiTexCoord2fVertex3fSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC ReplacementCodeuiTexCoord2fVertex3fvSUN; + PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC ReplacementCodeuiVertex3fSUN; + PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC ReplacementCodeuiVertex3fvSUN; + PFNGLREPLACEMENTCODEUIVSUNPROC ReplacementCodeuivSUN; + PFNGLREPLACEMENTCODEUSSUNPROC ReplacementCodeusSUN; + PFNGLREPLACEMENTCODEUSVSUNPROC ReplacementCodeusvSUN; + PFNGLREQUESTRESIDENTPROGRAMSNVPROC RequestResidentProgramsNV; + PFNGLRESETHISTOGRAMEXTPROC ResetHistogramEXT; + PFNGLRESETMEMORYOBJECTPARAMETERNVPROC ResetMemoryObjectParameterNV; + PFNGLRESETMINMAXEXTPROC ResetMinmaxEXT; + PFNGLRESIZEBUFFERSMESAPROC ResizeBuffersMESA; + PFNGLRESOLVEDEPTHVALUESNVPROC ResolveDepthValuesNV; + PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback; + PFNGLRESUMETRANSFORMFEEDBACKNVPROC ResumeTransformFeedbackNV; + PFNGLROTATEXOESPROC RotatexOES; + PFNGLSAMPLECOVERAGEPROC SampleCoverage; + PFNGLSAMPLECOVERAGEARBPROC SampleCoverageARB; + PFNGLSAMPLEMAPATIPROC SampleMapATI; + PFNGLSAMPLEMASKEXTPROC SampleMaskEXT; + PFNGLSAMPLEMASKINDEXEDNVPROC SampleMaskIndexedNV; + PFNGLSAMPLEMASKSGISPROC SampleMaskSGIS; + PFNGLSAMPLEMASKIPROC SampleMaski; + PFNGLSAMPLEPATTERNEXTPROC SamplePatternEXT; + PFNGLSAMPLEPATTERNSGISPROC SamplePatternSGIS; + PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv; + PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv; + PFNGLSAMPLERPARAMETERFPROC SamplerParameterf; + PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv; + PFNGLSAMPLERPARAMETERIPROC SamplerParameteri; + PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv; + PFNGLSCALEXOESPROC ScalexOES; + PFNGLSCISSORPROC Scissor; + PFNGLSCISSORARRAYVPROC ScissorArrayv; + PFNGLSCISSOREXCLUSIVEARRAYVNVPROC ScissorExclusiveArrayvNV; + PFNGLSCISSOREXCLUSIVENVPROC ScissorExclusiveNV; + PFNGLSCISSORINDEXEDPROC ScissorIndexed; + PFNGLSCISSORINDEXEDVPROC ScissorIndexedv; + PFNGLSECONDARYCOLOR3BEXTPROC SecondaryColor3bEXT; + PFNGLSECONDARYCOLOR3BVEXTPROC SecondaryColor3bvEXT; + PFNGLSECONDARYCOLOR3DEXTPROC SecondaryColor3dEXT; + PFNGLSECONDARYCOLOR3DVEXTPROC SecondaryColor3dvEXT; + PFNGLSECONDARYCOLOR3FEXTPROC SecondaryColor3fEXT; + PFNGLSECONDARYCOLOR3FVEXTPROC SecondaryColor3fvEXT; + PFNGLSECONDARYCOLOR3HNVPROC SecondaryColor3hNV; + PFNGLSECONDARYCOLOR3HVNVPROC SecondaryColor3hvNV; + PFNGLSECONDARYCOLOR3IEXTPROC SecondaryColor3iEXT; + PFNGLSECONDARYCOLOR3IVEXTPROC SecondaryColor3ivEXT; + PFNGLSECONDARYCOLOR3SEXTPROC SecondaryColor3sEXT; + PFNGLSECONDARYCOLOR3SVEXTPROC SecondaryColor3svEXT; + PFNGLSECONDARYCOLOR3UBEXTPROC SecondaryColor3ubEXT; + PFNGLSECONDARYCOLOR3UBVEXTPROC SecondaryColor3ubvEXT; + PFNGLSECONDARYCOLOR3UIEXTPROC SecondaryColor3uiEXT; + PFNGLSECONDARYCOLOR3UIVEXTPROC SecondaryColor3uivEXT; + PFNGLSECONDARYCOLOR3USEXTPROC SecondaryColor3usEXT; + PFNGLSECONDARYCOLOR3USVEXTPROC SecondaryColor3usvEXT; + PFNGLSECONDARYCOLORFORMATNVPROC SecondaryColorFormatNV; + PFNGLSECONDARYCOLORPOINTEREXTPROC SecondaryColorPointerEXT; + PFNGLSECONDARYCOLORPOINTERLISTIBMPROC SecondaryColorPointerListIBM; + PFNGLSELECTPERFMONITORCOUNTERSAMDPROC SelectPerfMonitorCountersAMD; + PFNGLSEMAPHOREPARAMETERIVNVPROC SemaphoreParameterivNV; + PFNGLSEMAPHOREPARAMETERUI64VEXTPROC SemaphoreParameterui64vEXT; + PFNGLSEPARABLEFILTER2DEXTPROC SeparableFilter2DEXT; + PFNGLSETFENCEAPPLEPROC SetFenceAPPLE; + PFNGLSETFENCENVPROC SetFenceNV; + PFNGLSETFRAGMENTSHADERCONSTANTATIPROC SetFragmentShaderConstantATI; + PFNGLSETINVARIANTEXTPROC SetInvariantEXT; + PFNGLSETLOCALCONSTANTEXTPROC SetLocalConstantEXT; + PFNGLSETMULTISAMPLEFVAMDPROC SetMultisamplefvAMD; + PFNGLSHADERBINARYPROC ShaderBinary; + PFNGLSHADEROP1EXTPROC ShaderOp1EXT; + PFNGLSHADEROP2EXTPROC ShaderOp2EXT; + PFNGLSHADEROP3EXTPROC ShaderOp3EXT; + PFNGLSHADERSOURCEPROC ShaderSource; + PFNGLSHADERSOURCEARBPROC ShaderSourceARB; + PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding; + PFNGLSHADINGRATEIMAGEBARRIERNVPROC ShadingRateImageBarrierNV; + PFNGLSHADINGRATEIMAGEPALETTENVPROC ShadingRateImagePaletteNV; + PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC ShadingRateSampleOrderCustomNV; + PFNGLSHADINGRATESAMPLEORDERNVPROC ShadingRateSampleOrderNV; + PFNGLSHARPENTEXFUNCSGISPROC SharpenTexFuncSGIS; + PFNGLSIGNALSEMAPHOREEXTPROC SignalSemaphoreEXT; + PFNGLSIGNALSEMAPHOREUI64NVXPROC SignalSemaphoreui64NVX; + PFNGLSIGNALVKFENCENVPROC SignalVkFenceNV; + PFNGLSIGNALVKSEMAPHORENVPROC SignalVkSemaphoreNV; + PFNGLSPECIALIZESHADERPROC SpecializeShader; + PFNGLSPECIALIZESHADERARBPROC SpecializeShaderARB; + PFNGLSPRITEPARAMETERFSGIXPROC SpriteParameterfSGIX; + PFNGLSPRITEPARAMETERFVSGIXPROC SpriteParameterfvSGIX; + PFNGLSPRITEPARAMETERISGIXPROC SpriteParameteriSGIX; + PFNGLSPRITEPARAMETERIVSGIXPROC SpriteParameterivSGIX; + PFNGLSTARTINSTRUMENTSSGIXPROC StartInstrumentsSGIX; + PFNGLSTATECAPTURENVPROC StateCaptureNV; + PFNGLSTENCILCLEARTAGEXTPROC StencilClearTagEXT; + PFNGLSTENCILFILLPATHINSTANCEDNVPROC StencilFillPathInstancedNV; + PFNGLSTENCILFILLPATHNVPROC StencilFillPathNV; + PFNGLSTENCILFUNCPROC StencilFunc; + PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate; + PFNGLSTENCILFUNCSEPARATEATIPROC StencilFuncSeparateATI; + PFNGLSTENCILMASKPROC StencilMask; + PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate; + PFNGLSTENCILOPPROC StencilOp; + PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate; + PFNGLSTENCILOPSEPARATEATIPROC StencilOpSeparateATI; + PFNGLSTENCILOPVALUEAMDPROC StencilOpValueAMD; + PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC StencilStrokePathInstancedNV; + PFNGLSTENCILSTROKEPATHNVPROC StencilStrokePathNV; + PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC StencilThenCoverFillPathInstancedNV; + PFNGLSTENCILTHENCOVERFILLPATHNVPROC StencilThenCoverFillPathNV; + PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC StencilThenCoverStrokePathInstancedNV; + PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC StencilThenCoverStrokePathNV; + PFNGLSTOPINSTRUMENTSSGIXPROC StopInstrumentsSGIX; + PFNGLSTRINGMARKERGREMEDYPROC StringMarkerGREMEDY; + PFNGLSUBPIXELPRECISIONBIASNVPROC SubpixelPrecisionBiasNV; + PFNGLSWIZZLEEXTPROC SwizzleEXT; + PFNGLSYNCTEXTUREINTELPROC SyncTextureINTEL; + PFNGLTAGSAMPLEBUFFERSGIXPROC TagSampleBufferSGIX; + PFNGLTANGENT3BEXTPROC Tangent3bEXT; + PFNGLTANGENT3BVEXTPROC Tangent3bvEXT; + PFNGLTANGENT3DEXTPROC Tangent3dEXT; + PFNGLTANGENT3DVEXTPROC Tangent3dvEXT; + PFNGLTANGENT3FEXTPROC Tangent3fEXT; + PFNGLTANGENT3FVEXTPROC Tangent3fvEXT; + PFNGLTANGENT3IEXTPROC Tangent3iEXT; + PFNGLTANGENT3IVEXTPROC Tangent3ivEXT; + PFNGLTANGENT3SEXTPROC Tangent3sEXT; + PFNGLTANGENT3SVEXTPROC Tangent3svEXT; + PFNGLTANGENTPOINTEREXTPROC TangentPointerEXT; + PFNGLTBUFFERMASK3DFXPROC TbufferMask3DFX; + PFNGLTESSELLATIONFACTORAMDPROC TessellationFactorAMD; + PFNGLTESSELLATIONMODEAMDPROC TessellationModeAMD; + PFNGLTESTFENCEAPPLEPROC TestFenceAPPLE; + PFNGLTESTFENCENVPROC TestFenceNV; + PFNGLTESTOBJECTAPPLEPROC TestObjectAPPLE; + PFNGLTEXATTACHMEMORYNVPROC TexAttachMemoryNV; + PFNGLTEXBUFFERPROC TexBuffer; + PFNGLTEXBUFFERARBPROC TexBufferARB; + PFNGLTEXBUFFEREXTPROC TexBufferEXT; + PFNGLTEXBUFFERRANGEPROC TexBufferRange; + PFNGLTEXBUMPPARAMETERFVATIPROC TexBumpParameterfvATI; + PFNGLTEXBUMPPARAMETERIVATIPROC TexBumpParameterivATI; + PFNGLTEXCOORD1BOESPROC TexCoord1bOES; + PFNGLTEXCOORD1BVOESPROC TexCoord1bvOES; + PFNGLTEXCOORD1HNVPROC TexCoord1hNV; + PFNGLTEXCOORD1HVNVPROC TexCoord1hvNV; + PFNGLTEXCOORD1XOESPROC TexCoord1xOES; + PFNGLTEXCOORD1XVOESPROC TexCoord1xvOES; + PFNGLTEXCOORD2BOESPROC TexCoord2bOES; + PFNGLTEXCOORD2BVOESPROC TexCoord2bvOES; + PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC TexCoord2fColor3fVertex3fSUN; + PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC TexCoord2fColor3fVertex3fvSUN; + PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC TexCoord2fColor4fNormal3fVertex3fSUN; + PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC TexCoord2fColor4fNormal3fVertex3fvSUN; + PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC TexCoord2fColor4ubVertex3fSUN; + PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC TexCoord2fColor4ubVertex3fvSUN; + PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC TexCoord2fNormal3fVertex3fSUN; + PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC TexCoord2fNormal3fVertex3fvSUN; + PFNGLTEXCOORD2FVERTEX3FSUNPROC TexCoord2fVertex3fSUN; + PFNGLTEXCOORD2FVERTEX3FVSUNPROC TexCoord2fVertex3fvSUN; + PFNGLTEXCOORD2HNVPROC TexCoord2hNV; + PFNGLTEXCOORD2HVNVPROC TexCoord2hvNV; + PFNGLTEXCOORD2XOESPROC TexCoord2xOES; + PFNGLTEXCOORD2XVOESPROC TexCoord2xvOES; + PFNGLTEXCOORD3BOESPROC TexCoord3bOES; + PFNGLTEXCOORD3BVOESPROC TexCoord3bvOES; + PFNGLTEXCOORD3HNVPROC TexCoord3hNV; + PFNGLTEXCOORD3HVNVPROC TexCoord3hvNV; + PFNGLTEXCOORD3XOESPROC TexCoord3xOES; + PFNGLTEXCOORD3XVOESPROC TexCoord3xvOES; + PFNGLTEXCOORD4BOESPROC TexCoord4bOES; + PFNGLTEXCOORD4BVOESPROC TexCoord4bvOES; + PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC TexCoord4fColor4fNormal3fVertex4fSUN; + PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC TexCoord4fColor4fNormal3fVertex4fvSUN; + PFNGLTEXCOORD4FVERTEX4FSUNPROC TexCoord4fVertex4fSUN; + PFNGLTEXCOORD4FVERTEX4FVSUNPROC TexCoord4fVertex4fvSUN; + PFNGLTEXCOORD4HNVPROC TexCoord4hNV; + PFNGLTEXCOORD4HVNVPROC TexCoord4hvNV; + PFNGLTEXCOORD4XOESPROC TexCoord4xOES; + PFNGLTEXCOORD4XVOESPROC TexCoord4xvOES; + PFNGLTEXCOORDFORMATNVPROC TexCoordFormatNV; + PFNGLTEXCOORDPOINTEREXTPROC TexCoordPointerEXT; + PFNGLTEXCOORDPOINTERLISTIBMPROC TexCoordPointerListIBM; + PFNGLTEXCOORDPOINTERVINTELPROC TexCoordPointervINTEL; + PFNGLTEXENVXOESPROC TexEnvxOES; + PFNGLTEXENVXVOESPROC TexEnvxvOES; + PFNGLTEXFILTERFUNCSGISPROC TexFilterFuncSGIS; + PFNGLTEXGENXOESPROC TexGenxOES; + PFNGLTEXGENXVOESPROC TexGenxvOES; + PFNGLTEXIMAGE1DPROC TexImage1D; + PFNGLTEXIMAGE2DPROC TexImage2D; + PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample; + PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC TexImage2DMultisampleCoverageNV; + PFNGLTEXIMAGE3DPROC TexImage3D; + PFNGLTEXIMAGE3DEXTPROC TexImage3DEXT; + PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample; + PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC TexImage3DMultisampleCoverageNV; + PFNGLTEXIMAGE4DSGISPROC TexImage4DSGIS; + PFNGLTEXPAGECOMMITMENTARBPROC TexPageCommitmentARB; + PFNGLTEXPAGECOMMITMENTMEMNVPROC TexPageCommitmentMemNV; + PFNGLTEXPARAMETERIIVPROC TexParameterIiv; + PFNGLTEXPARAMETERIIVEXTPROC TexParameterIivEXT; + PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv; + PFNGLTEXPARAMETERIUIVEXTPROC TexParameterIuivEXT; + PFNGLTEXPARAMETERFPROC TexParameterf; + PFNGLTEXPARAMETERFVPROC TexParameterfv; + PFNGLTEXPARAMETERIPROC TexParameteri; + PFNGLTEXPARAMETERIVPROC TexParameteriv; + PFNGLTEXPARAMETERXOESPROC TexParameterxOES; + PFNGLTEXPARAMETERXVOESPROC TexParameterxvOES; + PFNGLTEXRENDERBUFFERNVPROC TexRenderbufferNV; + PFNGLTEXSTORAGE1DPROC TexStorage1D; + PFNGLTEXSTORAGE1DEXTPROC TexStorage1DEXT; + PFNGLTEXSTORAGE2DPROC TexStorage2D; + PFNGLTEXSTORAGE2DEXTPROC TexStorage2DEXT; + PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample; + PFNGLTEXSTORAGE3DPROC TexStorage3D; + PFNGLTEXSTORAGE3DEXTPROC TexStorage3DEXT; + PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample; + PFNGLTEXSTORAGEMEM1DEXTPROC TexStorageMem1DEXT; + PFNGLTEXSTORAGEMEM2DEXTPROC TexStorageMem2DEXT; + PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC TexStorageMem2DMultisampleEXT; + PFNGLTEXSTORAGEMEM3DEXTPROC TexStorageMem3DEXT; + PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC TexStorageMem3DMultisampleEXT; + PFNGLTEXSTORAGESPARSEAMDPROC TexStorageSparseAMD; + PFNGLTEXSUBIMAGE1DPROC TexSubImage1D; + PFNGLTEXSUBIMAGE1DEXTPROC TexSubImage1DEXT; + PFNGLTEXSUBIMAGE2DPROC TexSubImage2D; + PFNGLTEXSUBIMAGE2DEXTPROC TexSubImage2DEXT; + PFNGLTEXSUBIMAGE3DPROC TexSubImage3D; + PFNGLTEXSUBIMAGE3DEXTPROC TexSubImage3DEXT; + PFNGLTEXSUBIMAGE4DSGISPROC TexSubImage4DSGIS; + PFNGLTEXTUREATTACHMEMORYNVPROC TextureAttachMemoryNV; + PFNGLTEXTUREBARRIERPROC TextureBarrier; + PFNGLTEXTUREBARRIERNVPROC TextureBarrierNV; + PFNGLTEXTUREBUFFERPROC TextureBuffer; + PFNGLTEXTUREBUFFEREXTPROC TextureBufferEXT; + PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange; + PFNGLTEXTUREBUFFERRANGEEXTPROC TextureBufferRangeEXT; + PFNGLTEXTURECOLORMASKSGISPROC TextureColorMaskSGIS; + PFNGLTEXTUREIMAGE1DEXTPROC TextureImage1DEXT; + PFNGLTEXTUREIMAGE2DEXTPROC TextureImage2DEXT; + PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC TextureImage2DMultisampleCoverageNV; + PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC TextureImage2DMultisampleNV; + PFNGLTEXTUREIMAGE3DEXTPROC TextureImage3DEXT; + PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC TextureImage3DMultisampleCoverageNV; + PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC TextureImage3DMultisampleNV; + PFNGLTEXTURELIGHTEXTPROC TextureLightEXT; + PFNGLTEXTUREMATERIALEXTPROC TextureMaterialEXT; + PFNGLTEXTURENORMALEXTPROC TextureNormalEXT; + PFNGLTEXTUREPAGECOMMITMENTEXTPROC TexturePageCommitmentEXT; + PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC TexturePageCommitmentMemNV; + PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv; + PFNGLTEXTUREPARAMETERIIVEXTPROC TextureParameterIivEXT; + PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv; + PFNGLTEXTUREPARAMETERIUIVEXTPROC TextureParameterIuivEXT; + PFNGLTEXTUREPARAMETERFPROC TextureParameterf; + PFNGLTEXTUREPARAMETERFEXTPROC TextureParameterfEXT; + PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv; + PFNGLTEXTUREPARAMETERFVEXTPROC TextureParameterfvEXT; + PFNGLTEXTUREPARAMETERIPROC TextureParameteri; + PFNGLTEXTUREPARAMETERIEXTPROC TextureParameteriEXT; + PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv; + PFNGLTEXTUREPARAMETERIVEXTPROC TextureParameterivEXT; + PFNGLTEXTURERANGEAPPLEPROC TextureRangeAPPLE; + PFNGLTEXTURERENDERBUFFEREXTPROC TextureRenderbufferEXT; + PFNGLTEXTURESTORAGE1DPROC TextureStorage1D; + PFNGLTEXTURESTORAGE1DEXTPROC TextureStorage1DEXT; + PFNGLTEXTURESTORAGE2DPROC TextureStorage2D; + PFNGLTEXTURESTORAGE2DEXTPROC TextureStorage2DEXT; + PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample; + PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC TextureStorage2DMultisampleEXT; + PFNGLTEXTURESTORAGE3DPROC TextureStorage3D; + PFNGLTEXTURESTORAGE3DEXTPROC TextureStorage3DEXT; + PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample; + PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC TextureStorage3DMultisampleEXT; + PFNGLTEXTURESTORAGEMEM1DEXTPROC TextureStorageMem1DEXT; + PFNGLTEXTURESTORAGEMEM2DEXTPROC TextureStorageMem2DEXT; + PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC TextureStorageMem2DMultisampleEXT; + PFNGLTEXTURESTORAGEMEM3DEXTPROC TextureStorageMem3DEXT; + PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC TextureStorageMem3DMultisampleEXT; + PFNGLTEXTURESTORAGESPARSEAMDPROC TextureStorageSparseAMD; + PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D; + PFNGLTEXTURESUBIMAGE1DEXTPROC TextureSubImage1DEXT; + PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D; + PFNGLTEXTURESUBIMAGE2DEXTPROC TextureSubImage2DEXT; + PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D; + PFNGLTEXTURESUBIMAGE3DEXTPROC TextureSubImage3DEXT; + PFNGLTEXTUREVIEWPROC TextureView; + PFNGLTRACKMATRIXNVPROC TrackMatrixNV; + PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC TransformFeedbackAttribsNV; + PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase; + PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange; + PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC TransformFeedbackStreamAttribsNV; + PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings; + PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC TransformFeedbackVaryingsEXT; + PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC TransformFeedbackVaryingsNV; + PFNGLTRANSFORMPATHNVPROC TransformPathNV; + PFNGLTRANSLATEXOESPROC TranslatexOES; + PFNGLUNIFORM1DPROC Uniform1d; + PFNGLUNIFORM1DVPROC Uniform1dv; + PFNGLUNIFORM1FPROC Uniform1f; + PFNGLUNIFORM1FARBPROC Uniform1fARB; + PFNGLUNIFORM1FVPROC Uniform1fv; + PFNGLUNIFORM1FVARBPROC Uniform1fvARB; + PFNGLUNIFORM1IPROC Uniform1i; + PFNGLUNIFORM1I64ARBPROC Uniform1i64ARB; + PFNGLUNIFORM1I64NVPROC Uniform1i64NV; + PFNGLUNIFORM1I64VARBPROC Uniform1i64vARB; + PFNGLUNIFORM1I64VNVPROC Uniform1i64vNV; + PFNGLUNIFORM1IARBPROC Uniform1iARB; + PFNGLUNIFORM1IVPROC Uniform1iv; + PFNGLUNIFORM1IVARBPROC Uniform1ivARB; + PFNGLUNIFORM1UIPROC Uniform1ui; + PFNGLUNIFORM1UI64ARBPROC Uniform1ui64ARB; + PFNGLUNIFORM1UI64NVPROC Uniform1ui64NV; + PFNGLUNIFORM1UI64VARBPROC Uniform1ui64vARB; + PFNGLUNIFORM1UI64VNVPROC Uniform1ui64vNV; + PFNGLUNIFORM1UIEXTPROC Uniform1uiEXT; + PFNGLUNIFORM1UIVPROC Uniform1uiv; + PFNGLUNIFORM1UIVEXTPROC Uniform1uivEXT; + PFNGLUNIFORM2DPROC Uniform2d; + PFNGLUNIFORM2DVPROC Uniform2dv; + PFNGLUNIFORM2FPROC Uniform2f; + PFNGLUNIFORM2FARBPROC Uniform2fARB; + PFNGLUNIFORM2FVPROC Uniform2fv; + PFNGLUNIFORM2FVARBPROC Uniform2fvARB; + PFNGLUNIFORM2IPROC Uniform2i; + PFNGLUNIFORM2I64ARBPROC Uniform2i64ARB; + PFNGLUNIFORM2I64NVPROC Uniform2i64NV; + PFNGLUNIFORM2I64VARBPROC Uniform2i64vARB; + PFNGLUNIFORM2I64VNVPROC Uniform2i64vNV; + PFNGLUNIFORM2IARBPROC Uniform2iARB; + PFNGLUNIFORM2IVPROC Uniform2iv; + PFNGLUNIFORM2IVARBPROC Uniform2ivARB; + PFNGLUNIFORM2UIPROC Uniform2ui; + PFNGLUNIFORM2UI64ARBPROC Uniform2ui64ARB; + PFNGLUNIFORM2UI64NVPROC Uniform2ui64NV; + PFNGLUNIFORM2UI64VARBPROC Uniform2ui64vARB; + PFNGLUNIFORM2UI64VNVPROC Uniform2ui64vNV; + PFNGLUNIFORM2UIEXTPROC Uniform2uiEXT; + PFNGLUNIFORM2UIVPROC Uniform2uiv; + PFNGLUNIFORM2UIVEXTPROC Uniform2uivEXT; + PFNGLUNIFORM3DPROC Uniform3d; + PFNGLUNIFORM3DVPROC Uniform3dv; + PFNGLUNIFORM3FPROC Uniform3f; + PFNGLUNIFORM3FARBPROC Uniform3fARB; + PFNGLUNIFORM3FVPROC Uniform3fv; + PFNGLUNIFORM3FVARBPROC Uniform3fvARB; + PFNGLUNIFORM3IPROC Uniform3i; + PFNGLUNIFORM3I64ARBPROC Uniform3i64ARB; + PFNGLUNIFORM3I64NVPROC Uniform3i64NV; + PFNGLUNIFORM3I64VARBPROC Uniform3i64vARB; + PFNGLUNIFORM3I64VNVPROC Uniform3i64vNV; + PFNGLUNIFORM3IARBPROC Uniform3iARB; + PFNGLUNIFORM3IVPROC Uniform3iv; + PFNGLUNIFORM3IVARBPROC Uniform3ivARB; + PFNGLUNIFORM3UIPROC Uniform3ui; + PFNGLUNIFORM3UI64ARBPROC Uniform3ui64ARB; + PFNGLUNIFORM3UI64NVPROC Uniform3ui64NV; + PFNGLUNIFORM3UI64VARBPROC Uniform3ui64vARB; + PFNGLUNIFORM3UI64VNVPROC Uniform3ui64vNV; + PFNGLUNIFORM3UIEXTPROC Uniform3uiEXT; + PFNGLUNIFORM3UIVPROC Uniform3uiv; + PFNGLUNIFORM3UIVEXTPROC Uniform3uivEXT; + PFNGLUNIFORM4DPROC Uniform4d; + PFNGLUNIFORM4DVPROC Uniform4dv; + PFNGLUNIFORM4FPROC Uniform4f; + PFNGLUNIFORM4FARBPROC Uniform4fARB; + PFNGLUNIFORM4FVPROC Uniform4fv; + PFNGLUNIFORM4FVARBPROC Uniform4fvARB; + PFNGLUNIFORM4IPROC Uniform4i; + PFNGLUNIFORM4I64ARBPROC Uniform4i64ARB; + PFNGLUNIFORM4I64NVPROC Uniform4i64NV; + PFNGLUNIFORM4I64VARBPROC Uniform4i64vARB; + PFNGLUNIFORM4I64VNVPROC Uniform4i64vNV; + PFNGLUNIFORM4IARBPROC Uniform4iARB; + PFNGLUNIFORM4IVPROC Uniform4iv; + PFNGLUNIFORM4IVARBPROC Uniform4ivARB; + PFNGLUNIFORM4UIPROC Uniform4ui; + PFNGLUNIFORM4UI64ARBPROC Uniform4ui64ARB; + PFNGLUNIFORM4UI64NVPROC Uniform4ui64NV; + PFNGLUNIFORM4UI64VARBPROC Uniform4ui64vARB; + PFNGLUNIFORM4UI64VNVPROC Uniform4ui64vNV; + PFNGLUNIFORM4UIEXTPROC Uniform4uiEXT; + PFNGLUNIFORM4UIVPROC Uniform4uiv; + PFNGLUNIFORM4UIVEXTPROC Uniform4uivEXT; + PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding; + PFNGLUNIFORMBUFFEREXTPROC UniformBufferEXT; + PFNGLUNIFORMHANDLEUI64ARBPROC UniformHandleui64ARB; + PFNGLUNIFORMHANDLEUI64NVPROC UniformHandleui64NV; + PFNGLUNIFORMHANDLEUI64VARBPROC UniformHandleui64vARB; + PFNGLUNIFORMHANDLEUI64VNVPROC UniformHandleui64vNV; + PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv; + PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv; + PFNGLUNIFORMMATRIX2FVARBPROC UniformMatrix2fvARB; + PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv; + PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv; + PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv; + PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv; + PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv; + PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv; + PFNGLUNIFORMMATRIX3FVARBPROC UniformMatrix3fvARB; + PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv; + PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv; + PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv; + PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv; + PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv; + PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv; + PFNGLUNIFORMMATRIX4FVARBPROC UniformMatrix4fvARB; + PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv; + PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv; + PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv; + PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv; + PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv; + PFNGLUNIFORMUI64NVPROC Uniformui64NV; + PFNGLUNIFORMUI64VNVPROC Uniformui64vNV; + PFNGLUNLOCKARRAYSEXTPROC UnlockArraysEXT; + PFNGLUNMAPBUFFERPROC UnmapBuffer; + PFNGLUNMAPBUFFERARBPROC UnmapBufferARB; + PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer; + PFNGLUNMAPNAMEDBUFFEREXTPROC UnmapNamedBufferEXT; + PFNGLUNMAPOBJECTBUFFERATIPROC UnmapObjectBufferATI; + PFNGLUNMAPTEXTURE2DINTELPROC UnmapTexture2DINTEL; + PFNGLUPDATEOBJECTBUFFERATIPROC UpdateObjectBufferATI; + PFNGLUPLOADGPUMASKNVXPROC UploadGpuMaskNVX; + PFNGLUSEPROGRAMPROC UseProgram; + PFNGLUSEPROGRAMOBJECTARBPROC UseProgramObjectARB; + PFNGLUSEPROGRAMSTAGESPROC UseProgramStages; + PFNGLUSESHADERPROGRAMEXTPROC UseShaderProgramEXT; + PFNGLVDPAUFININVPROC VDPAUFiniNV; + PFNGLVDPAUGETSURFACEIVNVPROC VDPAUGetSurfaceivNV; + PFNGLVDPAUINITNVPROC VDPAUInitNV; + PFNGLVDPAUISSURFACENVPROC VDPAUIsSurfaceNV; + PFNGLVDPAUMAPSURFACESNVPROC VDPAUMapSurfacesNV; + PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC VDPAURegisterOutputSurfaceNV; + PFNGLVDPAUREGISTERVIDEOSURFACENVPROC VDPAURegisterVideoSurfaceNV; + PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC + VDPAURegisterVideoSurfaceWithPictureStructureNV; + PFNGLVDPAUSURFACEACCESSNVPROC VDPAUSurfaceAccessNV; + PFNGLVDPAUUNMAPSURFACESNVPROC VDPAUUnmapSurfacesNV; + PFNGLVDPAUUNREGISTERSURFACENVPROC VDPAUUnregisterSurfaceNV; + PFNGLVALIDATEPROGRAMPROC ValidateProgram; + PFNGLVALIDATEPROGRAMARBPROC ValidateProgramARB; + PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline; + PFNGLVARIANTARRAYOBJECTATIPROC VariantArrayObjectATI; + PFNGLVARIANTPOINTEREXTPROC VariantPointerEXT; + PFNGLVARIANTBVEXTPROC VariantbvEXT; + PFNGLVARIANTDVEXTPROC VariantdvEXT; + PFNGLVARIANTFVEXTPROC VariantfvEXT; + PFNGLVARIANTIVEXTPROC VariantivEXT; + PFNGLVARIANTSVEXTPROC VariantsvEXT; + PFNGLVARIANTUBVEXTPROC VariantubvEXT; + PFNGLVARIANTUIVEXTPROC VariantuivEXT; + PFNGLVARIANTUSVEXTPROC VariantusvEXT; + PFNGLVERTEX2BOESPROC Vertex2bOES; + PFNGLVERTEX2BVOESPROC Vertex2bvOES; + PFNGLVERTEX2HNVPROC Vertex2hNV; + PFNGLVERTEX2HVNVPROC Vertex2hvNV; + PFNGLVERTEX2XOESPROC Vertex2xOES; + PFNGLVERTEX2XVOESPROC Vertex2xvOES; + PFNGLVERTEX3BOESPROC Vertex3bOES; + PFNGLVERTEX3BVOESPROC Vertex3bvOES; + PFNGLVERTEX3HNVPROC Vertex3hNV; + PFNGLVERTEX3HVNVPROC Vertex3hvNV; + PFNGLVERTEX3XOESPROC Vertex3xOES; + PFNGLVERTEX3XVOESPROC Vertex3xvOES; + PFNGLVERTEX4BOESPROC Vertex4bOES; + PFNGLVERTEX4BVOESPROC Vertex4bvOES; + PFNGLVERTEX4HNVPROC Vertex4hNV; + PFNGLVERTEX4HVNVPROC Vertex4hvNV; + PFNGLVERTEX4XOESPROC Vertex4xOES; + PFNGLVERTEX4XVOESPROC Vertex4xvOES; + PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding; + PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat; + PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat; + PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat; + PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC VertexArrayBindVertexBufferEXT; + PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor; + PFNGLVERTEXARRAYCOLOROFFSETEXTPROC VertexArrayColorOffsetEXT; + PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC VertexArrayEdgeFlagOffsetEXT; + PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer; + PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC VertexArrayFogCoordOffsetEXT; + PFNGLVERTEXARRAYINDEXOFFSETEXTPROC VertexArrayIndexOffsetEXT; + PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC VertexArrayMultiTexCoordOffsetEXT; + PFNGLVERTEXARRAYNORMALOFFSETEXTPROC VertexArrayNormalOffsetEXT; + PFNGLVERTEXARRAYPARAMETERIAPPLEPROC VertexArrayParameteriAPPLE; + PFNGLVERTEXARRAYRANGEAPPLEPROC VertexArrayRangeAPPLE; + PFNGLVERTEXARRAYRANGENVPROC VertexArrayRangeNV; + PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC VertexArraySecondaryColorOffsetEXT; + PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC VertexArrayTexCoordOffsetEXT; + PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC VertexArrayVertexAttribBindingEXT; + PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC VertexArrayVertexAttribDivisorEXT; + PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC VertexArrayVertexAttribFormatEXT; + PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC VertexArrayVertexAttribIFormatEXT; + PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC VertexArrayVertexAttribIOffsetEXT; + PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC VertexArrayVertexAttribLFormatEXT; + PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC VertexArrayVertexAttribLOffsetEXT; + PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC VertexArrayVertexAttribOffsetEXT; + PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC VertexArrayVertexBindingDivisorEXT; + PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer; + PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers; + PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC VertexArrayVertexOffsetEXT; + PFNGLVERTEXATTRIB1DPROC VertexAttrib1d; + PFNGLVERTEXATTRIB1DARBPROC VertexAttrib1dARB; + PFNGLVERTEXATTRIB1DNVPROC VertexAttrib1dNV; + PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv; + PFNGLVERTEXATTRIB1DVARBPROC VertexAttrib1dvARB; + PFNGLVERTEXATTRIB1DVNVPROC VertexAttrib1dvNV; + PFNGLVERTEXATTRIB1FPROC VertexAttrib1f; + PFNGLVERTEXATTRIB1FARBPROC VertexAttrib1fARB; + PFNGLVERTEXATTRIB1FNVPROC VertexAttrib1fNV; + PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv; + PFNGLVERTEXATTRIB1FVARBPROC VertexAttrib1fvARB; + PFNGLVERTEXATTRIB1FVNVPROC VertexAttrib1fvNV; + PFNGLVERTEXATTRIB1HNVPROC VertexAttrib1hNV; + PFNGLVERTEXATTRIB1HVNVPROC VertexAttrib1hvNV; + PFNGLVERTEXATTRIB1SPROC VertexAttrib1s; + PFNGLVERTEXATTRIB1SARBPROC VertexAttrib1sARB; + PFNGLVERTEXATTRIB1SNVPROC VertexAttrib1sNV; + PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv; + PFNGLVERTEXATTRIB1SVARBPROC VertexAttrib1svARB; + PFNGLVERTEXATTRIB1SVNVPROC VertexAttrib1svNV; + PFNGLVERTEXATTRIB2DPROC VertexAttrib2d; + PFNGLVERTEXATTRIB2DARBPROC VertexAttrib2dARB; + PFNGLVERTEXATTRIB2DNVPROC VertexAttrib2dNV; + PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv; + PFNGLVERTEXATTRIB2DVARBPROC VertexAttrib2dvARB; + PFNGLVERTEXATTRIB2DVNVPROC VertexAttrib2dvNV; + PFNGLVERTEXATTRIB2FPROC VertexAttrib2f; + PFNGLVERTEXATTRIB2FARBPROC VertexAttrib2fARB; + PFNGLVERTEXATTRIB2FNVPROC VertexAttrib2fNV; + PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv; + PFNGLVERTEXATTRIB2FVARBPROC VertexAttrib2fvARB; + PFNGLVERTEXATTRIB2FVNVPROC VertexAttrib2fvNV; + PFNGLVERTEXATTRIB2HNVPROC VertexAttrib2hNV; + PFNGLVERTEXATTRIB2HVNVPROC VertexAttrib2hvNV; + PFNGLVERTEXATTRIB2SPROC VertexAttrib2s; + PFNGLVERTEXATTRIB2SARBPROC VertexAttrib2sARB; + PFNGLVERTEXATTRIB2SNVPROC VertexAttrib2sNV; + PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv; + PFNGLVERTEXATTRIB2SVARBPROC VertexAttrib2svARB; + PFNGLVERTEXATTRIB2SVNVPROC VertexAttrib2svNV; + PFNGLVERTEXATTRIB3DPROC VertexAttrib3d; + PFNGLVERTEXATTRIB3DARBPROC VertexAttrib3dARB; + PFNGLVERTEXATTRIB3DNVPROC VertexAttrib3dNV; + PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv; + PFNGLVERTEXATTRIB3DVARBPROC VertexAttrib3dvARB; + PFNGLVERTEXATTRIB3DVNVPROC VertexAttrib3dvNV; + PFNGLVERTEXATTRIB3FPROC VertexAttrib3f; + PFNGLVERTEXATTRIB3FARBPROC VertexAttrib3fARB; + PFNGLVERTEXATTRIB3FNVPROC VertexAttrib3fNV; + PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv; + PFNGLVERTEXATTRIB3FVARBPROC VertexAttrib3fvARB; + PFNGLVERTEXATTRIB3FVNVPROC VertexAttrib3fvNV; + PFNGLVERTEXATTRIB3HNVPROC VertexAttrib3hNV; + PFNGLVERTEXATTRIB3HVNVPROC VertexAttrib3hvNV; + PFNGLVERTEXATTRIB3SPROC VertexAttrib3s; + PFNGLVERTEXATTRIB3SARBPROC VertexAttrib3sARB; + PFNGLVERTEXATTRIB3SNVPROC VertexAttrib3sNV; + PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv; + PFNGLVERTEXATTRIB3SVARBPROC VertexAttrib3svARB; + PFNGLVERTEXATTRIB3SVNVPROC VertexAttrib3svNV; + PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv; + PFNGLVERTEXATTRIB4NBVARBPROC VertexAttrib4NbvARB; + PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv; + PFNGLVERTEXATTRIB4NIVARBPROC VertexAttrib4NivARB; + PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv; + PFNGLVERTEXATTRIB4NSVARBPROC VertexAttrib4NsvARB; + PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub; + PFNGLVERTEXATTRIB4NUBARBPROC VertexAttrib4NubARB; + PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv; + PFNGLVERTEXATTRIB4NUBVARBPROC VertexAttrib4NubvARB; + PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv; + PFNGLVERTEXATTRIB4NUIVARBPROC VertexAttrib4NuivARB; + PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv; + PFNGLVERTEXATTRIB4NUSVARBPROC VertexAttrib4NusvARB; + PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv; + PFNGLVERTEXATTRIB4BVARBPROC VertexAttrib4bvARB; + PFNGLVERTEXATTRIB4DPROC VertexAttrib4d; + PFNGLVERTEXATTRIB4DARBPROC VertexAttrib4dARB; + PFNGLVERTEXATTRIB4DNVPROC VertexAttrib4dNV; + PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv; + PFNGLVERTEXATTRIB4DVARBPROC VertexAttrib4dvARB; + PFNGLVERTEXATTRIB4DVNVPROC VertexAttrib4dvNV; + PFNGLVERTEXATTRIB4FPROC VertexAttrib4f; + PFNGLVERTEXATTRIB4FARBPROC VertexAttrib4fARB; + PFNGLVERTEXATTRIB4FNVPROC VertexAttrib4fNV; + PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv; + PFNGLVERTEXATTRIB4FVARBPROC VertexAttrib4fvARB; + PFNGLVERTEXATTRIB4FVNVPROC VertexAttrib4fvNV; + PFNGLVERTEXATTRIB4HNVPROC VertexAttrib4hNV; + PFNGLVERTEXATTRIB4HVNVPROC VertexAttrib4hvNV; + PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv; + PFNGLVERTEXATTRIB4IVARBPROC VertexAttrib4ivARB; + PFNGLVERTEXATTRIB4SPROC VertexAttrib4s; + PFNGLVERTEXATTRIB4SARBPROC VertexAttrib4sARB; + PFNGLVERTEXATTRIB4SNVPROC VertexAttrib4sNV; + PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv; + PFNGLVERTEXATTRIB4SVARBPROC VertexAttrib4svARB; + PFNGLVERTEXATTRIB4SVNVPROC VertexAttrib4svNV; + PFNGLVERTEXATTRIB4UBNVPROC VertexAttrib4ubNV; + PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv; + PFNGLVERTEXATTRIB4UBVARBPROC VertexAttrib4ubvARB; + PFNGLVERTEXATTRIB4UBVNVPROC VertexAttrib4ubvNV; + PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv; + PFNGLVERTEXATTRIB4UIVARBPROC VertexAttrib4uivARB; + PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv; + PFNGLVERTEXATTRIB4USVARBPROC VertexAttrib4usvARB; + PFNGLVERTEXATTRIBARRAYOBJECTATIPROC VertexAttribArrayObjectATI; + PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding; + PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor; + PFNGLVERTEXATTRIBDIVISORARBPROC VertexAttribDivisorARB; + PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat; + PFNGLVERTEXATTRIBFORMATNVPROC VertexAttribFormatNV; + PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i; + PFNGLVERTEXATTRIBI1IEXTPROC VertexAttribI1iEXT; + PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv; + PFNGLVERTEXATTRIBI1IVEXTPROC VertexAttribI1ivEXT; + PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui; + PFNGLVERTEXATTRIBI1UIEXTPROC VertexAttribI1uiEXT; + PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv; + PFNGLVERTEXATTRIBI1UIVEXTPROC VertexAttribI1uivEXT; + PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i; + PFNGLVERTEXATTRIBI2IEXTPROC VertexAttribI2iEXT; + PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv; + PFNGLVERTEXATTRIBI2IVEXTPROC VertexAttribI2ivEXT; + PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui; + PFNGLVERTEXATTRIBI2UIEXTPROC VertexAttribI2uiEXT; + PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv; + PFNGLVERTEXATTRIBI2UIVEXTPROC VertexAttribI2uivEXT; + PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i; + PFNGLVERTEXATTRIBI3IEXTPROC VertexAttribI3iEXT; + PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv; + PFNGLVERTEXATTRIBI3IVEXTPROC VertexAttribI3ivEXT; + PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui; + PFNGLVERTEXATTRIBI3UIEXTPROC VertexAttribI3uiEXT; + PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv; + PFNGLVERTEXATTRIBI3UIVEXTPROC VertexAttribI3uivEXT; + PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv; + PFNGLVERTEXATTRIBI4BVEXTPROC VertexAttribI4bvEXT; + PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i; + PFNGLVERTEXATTRIBI4IEXTPROC VertexAttribI4iEXT; + PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv; + PFNGLVERTEXATTRIBI4IVEXTPROC VertexAttribI4ivEXT; + PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv; + PFNGLVERTEXATTRIBI4SVEXTPROC VertexAttribI4svEXT; + PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv; + PFNGLVERTEXATTRIBI4UBVEXTPROC VertexAttribI4ubvEXT; + PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui; + PFNGLVERTEXATTRIBI4UIEXTPROC VertexAttribI4uiEXT; + PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv; + PFNGLVERTEXATTRIBI4UIVEXTPROC VertexAttribI4uivEXT; + PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv; + PFNGLVERTEXATTRIBI4USVEXTPROC VertexAttribI4usvEXT; + PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat; + PFNGLVERTEXATTRIBIFORMATNVPROC VertexAttribIFormatNV; + PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer; + PFNGLVERTEXATTRIBIPOINTEREXTPROC VertexAttribIPointerEXT; + PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d; + PFNGLVERTEXATTRIBL1DEXTPROC VertexAttribL1dEXT; + PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv; + PFNGLVERTEXATTRIBL1DVEXTPROC VertexAttribL1dvEXT; + PFNGLVERTEXATTRIBL1I64NVPROC VertexAttribL1i64NV; + PFNGLVERTEXATTRIBL1I64VNVPROC VertexAttribL1i64vNV; + PFNGLVERTEXATTRIBL1UI64ARBPROC VertexAttribL1ui64ARB; + PFNGLVERTEXATTRIBL1UI64NVPROC VertexAttribL1ui64NV; + PFNGLVERTEXATTRIBL1UI64VARBPROC VertexAttribL1ui64vARB; + PFNGLVERTEXATTRIBL1UI64VNVPROC VertexAttribL1ui64vNV; + PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d; + PFNGLVERTEXATTRIBL2DEXTPROC VertexAttribL2dEXT; + PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv; + PFNGLVERTEXATTRIBL2DVEXTPROC VertexAttribL2dvEXT; + PFNGLVERTEXATTRIBL2I64NVPROC VertexAttribL2i64NV; + PFNGLVERTEXATTRIBL2I64VNVPROC VertexAttribL2i64vNV; + PFNGLVERTEXATTRIBL2UI64NVPROC VertexAttribL2ui64NV; + PFNGLVERTEXATTRIBL2UI64VNVPROC VertexAttribL2ui64vNV; + PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d; + PFNGLVERTEXATTRIBL3DEXTPROC VertexAttribL3dEXT; + PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv; + PFNGLVERTEXATTRIBL3DVEXTPROC VertexAttribL3dvEXT; + PFNGLVERTEXATTRIBL3I64NVPROC VertexAttribL3i64NV; + PFNGLVERTEXATTRIBL3I64VNVPROC VertexAttribL3i64vNV; + PFNGLVERTEXATTRIBL3UI64NVPROC VertexAttribL3ui64NV; + PFNGLVERTEXATTRIBL3UI64VNVPROC VertexAttribL3ui64vNV; + PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d; + PFNGLVERTEXATTRIBL4DEXTPROC VertexAttribL4dEXT; + PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv; + PFNGLVERTEXATTRIBL4DVEXTPROC VertexAttribL4dvEXT; + PFNGLVERTEXATTRIBL4I64NVPROC VertexAttribL4i64NV; + PFNGLVERTEXATTRIBL4I64VNVPROC VertexAttribL4i64vNV; + PFNGLVERTEXATTRIBL4UI64NVPROC VertexAttribL4ui64NV; + PFNGLVERTEXATTRIBL4UI64VNVPROC VertexAttribL4ui64vNV; + PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat; + PFNGLVERTEXATTRIBLFORMATNVPROC VertexAttribLFormatNV; + PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer; + PFNGLVERTEXATTRIBLPOINTEREXTPROC VertexAttribLPointerEXT; + PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui; + PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv; + PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui; + PFNGLVERTEXATTRIBP2UIVPROC VertexAttribP2uiv; + PFNGLVERTEXATTRIBP3UIPROC VertexAttribP3ui; + PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv; + PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui; + PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv; + PFNGLVERTEXATTRIBPARAMETERIAMDPROC VertexAttribParameteriAMD; + PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer; + PFNGLVERTEXATTRIBPOINTERARBPROC VertexAttribPointerARB; + PFNGLVERTEXATTRIBPOINTERNVPROC VertexAttribPointerNV; + PFNGLVERTEXATTRIBS1DVNVPROC VertexAttribs1dvNV; + PFNGLVERTEXATTRIBS1FVNVPROC VertexAttribs1fvNV; + PFNGLVERTEXATTRIBS1HVNVPROC VertexAttribs1hvNV; + PFNGLVERTEXATTRIBS1SVNVPROC VertexAttribs1svNV; + PFNGLVERTEXATTRIBS2DVNVPROC VertexAttribs2dvNV; + PFNGLVERTEXATTRIBS2FVNVPROC VertexAttribs2fvNV; + PFNGLVERTEXATTRIBS2HVNVPROC VertexAttribs2hvNV; + PFNGLVERTEXATTRIBS2SVNVPROC VertexAttribs2svNV; + PFNGLVERTEXATTRIBS3DVNVPROC VertexAttribs3dvNV; + PFNGLVERTEXATTRIBS3FVNVPROC VertexAttribs3fvNV; + PFNGLVERTEXATTRIBS3HVNVPROC VertexAttribs3hvNV; + PFNGLVERTEXATTRIBS3SVNVPROC VertexAttribs3svNV; + PFNGLVERTEXATTRIBS4DVNVPROC VertexAttribs4dvNV; + PFNGLVERTEXATTRIBS4FVNVPROC VertexAttribs4fvNV; + PFNGLVERTEXATTRIBS4HVNVPROC VertexAttribs4hvNV; + PFNGLVERTEXATTRIBS4SVNVPROC VertexAttribs4svNV; + PFNGLVERTEXATTRIBS4UBVNVPROC VertexAttribs4ubvNV; + PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor; + PFNGLVERTEXBLENDARBPROC VertexBlendARB; + PFNGLVERTEXBLENDENVFATIPROC VertexBlendEnvfATI; + PFNGLVERTEXBLENDENVIATIPROC VertexBlendEnviATI; + PFNGLVERTEXFORMATNVPROC VertexFormatNV; + PFNGLVERTEXPOINTEREXTPROC VertexPointerEXT; + PFNGLVERTEXPOINTERLISTIBMPROC VertexPointerListIBM; + PFNGLVERTEXPOINTERVINTELPROC VertexPointervINTEL; + PFNGLVERTEXSTREAM1DATIPROC VertexStream1dATI; + PFNGLVERTEXSTREAM1DVATIPROC VertexStream1dvATI; + PFNGLVERTEXSTREAM1FATIPROC VertexStream1fATI; + PFNGLVERTEXSTREAM1FVATIPROC VertexStream1fvATI; + PFNGLVERTEXSTREAM1IATIPROC VertexStream1iATI; + PFNGLVERTEXSTREAM1IVATIPROC VertexStream1ivATI; + PFNGLVERTEXSTREAM1SATIPROC VertexStream1sATI; + PFNGLVERTEXSTREAM1SVATIPROC VertexStream1svATI; + PFNGLVERTEXSTREAM2DATIPROC VertexStream2dATI; + PFNGLVERTEXSTREAM2DVATIPROC VertexStream2dvATI; + PFNGLVERTEXSTREAM2FATIPROC VertexStream2fATI; + PFNGLVERTEXSTREAM2FVATIPROC VertexStream2fvATI; + PFNGLVERTEXSTREAM2IATIPROC VertexStream2iATI; + PFNGLVERTEXSTREAM2IVATIPROC VertexStream2ivATI; + PFNGLVERTEXSTREAM2SATIPROC VertexStream2sATI; + PFNGLVERTEXSTREAM2SVATIPROC VertexStream2svATI; + PFNGLVERTEXSTREAM3DATIPROC VertexStream3dATI; + PFNGLVERTEXSTREAM3DVATIPROC VertexStream3dvATI; + PFNGLVERTEXSTREAM3FATIPROC VertexStream3fATI; + PFNGLVERTEXSTREAM3FVATIPROC VertexStream3fvATI; + PFNGLVERTEXSTREAM3IATIPROC VertexStream3iATI; + PFNGLVERTEXSTREAM3IVATIPROC VertexStream3ivATI; + PFNGLVERTEXSTREAM3SATIPROC VertexStream3sATI; + PFNGLVERTEXSTREAM3SVATIPROC VertexStream3svATI; + PFNGLVERTEXSTREAM4DATIPROC VertexStream4dATI; + PFNGLVERTEXSTREAM4DVATIPROC VertexStream4dvATI; + PFNGLVERTEXSTREAM4FATIPROC VertexStream4fATI; + PFNGLVERTEXSTREAM4FVATIPROC VertexStream4fvATI; + PFNGLVERTEXSTREAM4IATIPROC VertexStream4iATI; + PFNGLVERTEXSTREAM4IVATIPROC VertexStream4ivATI; + PFNGLVERTEXSTREAM4SATIPROC VertexStream4sATI; + PFNGLVERTEXSTREAM4SVATIPROC VertexStream4svATI; + PFNGLVERTEXWEIGHTPOINTEREXTPROC VertexWeightPointerEXT; + PFNGLVERTEXWEIGHTFEXTPROC VertexWeightfEXT; + PFNGLVERTEXWEIGHTFVEXTPROC VertexWeightfvEXT; + PFNGLVERTEXWEIGHTHNVPROC VertexWeighthNV; + PFNGLVERTEXWEIGHTHVNVPROC VertexWeighthvNV; + PFNGLVIDEOCAPTURENVPROC VideoCaptureNV; + PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC VideoCaptureStreamParameterdvNV; + PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC VideoCaptureStreamParameterfvNV; + PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC VideoCaptureStreamParameterivNV; + PFNGLVIEWPORTPROC Viewport; + PFNGLVIEWPORTARRAYVPROC ViewportArrayv; + PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf; + PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv; + PFNGLVIEWPORTPOSITIONWSCALENVPROC ViewportPositionWScaleNV; + PFNGLVIEWPORTSWIZZLENVPROC ViewportSwizzleNV; + PFNGLWAITSEMAPHOREEXTPROC WaitSemaphoreEXT; + PFNGLWAITSEMAPHOREUI64NVXPROC WaitSemaphoreui64NVX; + PFNGLWAITSYNCPROC WaitSync; + PFNGLWAITVKSEMAPHORENVPROC WaitVkSemaphoreNV; + PFNGLWEIGHTPATHSNVPROC WeightPathsNV; + PFNGLWEIGHTPOINTERARBPROC WeightPointerARB; + PFNGLWEIGHTBVARBPROC WeightbvARB; + PFNGLWEIGHTDVARBPROC WeightdvARB; + PFNGLWEIGHTFVARBPROC WeightfvARB; + PFNGLWEIGHTIVARBPROC WeightivARB; + PFNGLWEIGHTSVARBPROC WeightsvARB; + PFNGLWEIGHTUBVARBPROC WeightubvARB; + PFNGLWEIGHTUIVARBPROC WeightuivARB; + PFNGLWEIGHTUSVARBPROC WeightusvARB; + PFNGLWINDOWPOS2DARBPROC WindowPos2dARB; + PFNGLWINDOWPOS2DMESAPROC WindowPos2dMESA; + PFNGLWINDOWPOS2DVARBPROC WindowPos2dvARB; + PFNGLWINDOWPOS2DVMESAPROC WindowPos2dvMESA; + PFNGLWINDOWPOS2FARBPROC WindowPos2fARB; + PFNGLWINDOWPOS2FMESAPROC WindowPos2fMESA; + PFNGLWINDOWPOS2FVARBPROC WindowPos2fvARB; + PFNGLWINDOWPOS2FVMESAPROC WindowPos2fvMESA; + PFNGLWINDOWPOS2IARBPROC WindowPos2iARB; + PFNGLWINDOWPOS2IMESAPROC WindowPos2iMESA; + PFNGLWINDOWPOS2IVARBPROC WindowPos2ivARB; + PFNGLWINDOWPOS2IVMESAPROC WindowPos2ivMESA; + PFNGLWINDOWPOS2SARBPROC WindowPos2sARB; + PFNGLWINDOWPOS2SMESAPROC WindowPos2sMESA; + PFNGLWINDOWPOS2SVARBPROC WindowPos2svARB; + PFNGLWINDOWPOS2SVMESAPROC WindowPos2svMESA; + PFNGLWINDOWPOS3DARBPROC WindowPos3dARB; + PFNGLWINDOWPOS3DMESAPROC WindowPos3dMESA; + PFNGLWINDOWPOS3DVARBPROC WindowPos3dvARB; + PFNGLWINDOWPOS3DVMESAPROC WindowPos3dvMESA; + PFNGLWINDOWPOS3FARBPROC WindowPos3fARB; + PFNGLWINDOWPOS3FMESAPROC WindowPos3fMESA; + PFNGLWINDOWPOS3FVARBPROC WindowPos3fvARB; + PFNGLWINDOWPOS3FVMESAPROC WindowPos3fvMESA; + PFNGLWINDOWPOS3IARBPROC WindowPos3iARB; + PFNGLWINDOWPOS3IMESAPROC WindowPos3iMESA; + PFNGLWINDOWPOS3IVARBPROC WindowPos3ivARB; + PFNGLWINDOWPOS3IVMESAPROC WindowPos3ivMESA; + PFNGLWINDOWPOS3SARBPROC WindowPos3sARB; + PFNGLWINDOWPOS3SMESAPROC WindowPos3sMESA; + PFNGLWINDOWPOS3SVARBPROC WindowPos3svARB; + PFNGLWINDOWPOS3SVMESAPROC WindowPos3svMESA; + PFNGLWINDOWPOS4DMESAPROC WindowPos4dMESA; + PFNGLWINDOWPOS4DVMESAPROC WindowPos4dvMESA; + PFNGLWINDOWPOS4FMESAPROC WindowPos4fMESA; + PFNGLWINDOWPOS4FVMESAPROC WindowPos4fvMESA; + PFNGLWINDOWPOS4IMESAPROC WindowPos4iMESA; + PFNGLWINDOWPOS4IVMESAPROC WindowPos4ivMESA; + PFNGLWINDOWPOS4SMESAPROC WindowPos4sMESA; + PFNGLWINDOWPOS4SVMESAPROC WindowPos4svMESA; + PFNGLWINDOWRECTANGLESEXTPROC WindowRectanglesEXT; + PFNGLWRITEMASKEXTPROC WriteMaskEXT; +} GladGLContext; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/内核源代码/StgSharp.C/glfw3.h b/内核源代码/StgSharp.C/glfw3.h new file mode 100644 index 00000000..d4215c17 --- /dev/null +++ b/内核源代码/StgSharp.C/glfw3.h @@ -0,0 +1,6440 @@ +/************************************************************************* + * GLFW 3.4 - www.glfw->org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2019 Camilla Löwy org> + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_h_ +#define _glfw3_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + + /************************************************************************* + * Doxygen documentation + *************************************************************************/ + + /*! @file glfw3.h + * @brief The header of the GLFW 3 API. + * + * This is the header file of the GLFW 3 API. It defines all its types and + * declares all its functions. + * + * For more information about how to use this file, see @ref build_include. + */ + /*! @defgroup context Context reference + * @brief Functions and types related to OpenGL and OpenGL ES contexts. + * + * This is the reference documentation for OpenGL and OpenGL ES context related + * functions. For more task-oriented information, see the @ref context_guide. + */ + /*! @defgroup vulkan Vulkan support reference + * @brief Functions and types related to Vulkan. + * + * This is the reference documentation for Vulkan related functions and types. + * For more task-oriented information, see the @ref vulkan_guide. + */ + /*! @defgroup init Initialization, version and error reference + * @brief Functions and types related to initialization and error handling. + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more task-oriented + * information, see the @ref intro_guide. + */ + /*! @defgroup input Input reference + * @brief Functions and types related to input handling. + * + * This is the reference documentation for input related functions and types. + * For more task-oriented information, see the @ref input_guide. + */ + /*! @defgroup monitor Monitor reference + * @brief Functions and types related to monitors. + * + * This is the reference documentation for monitor related functions and types. + * For more task-oriented information, see the @ref monitor_guide. + */ + /*! @defgroup window Window reference + * @brief Functions and types related to windows. + * + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more task-oriented + * information, see the @ref window_guide. + */ + + + /************************************************************************* + * Compiler- and platform-specific preprocessor work + *************************************************************************/ + + /* If we are we on Windows, we want a single define for it. + */ +#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) +#define _WIN32 +#endif /* _WIN32 */ + + /* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + + /* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) +#include +#endif /* Vulkan header */ + + /* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + + /* It is customary to use APIENTRY for OpenGL function pointer declarations on + * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. + */ +#if !defined(APIENTRY) +#if defined(_WIN32) +#define APIENTRY _stdcall +#else +#define APIENTRY +#endif +#define GLFW_APIENTRY_DEFINED +#endif /* APIENTRY */ + + /* Some Windows OpenGL headers need this. + */ +#if !defined(WINGDIAPI) && defined(_WIN32) +#define WINGDIAPI __declspec(dllimport) +#define GLFW_WINGDIAPI_DEFINED +#endif /* WINGDIAPI */ + + /* Some Windows GLU headers need this. + */ +#if !defined(CALLBACK) && defined(_WIN32) +#define CALLBACK __stdcall +#define GLFW_CALLBACK_DEFINED +#endif /* CALLBACK */ + + /* Include the chosen OpenGL or OpenGL ES headers. + */ +#if defined(GLFW_INCLUDE_ES1) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES2) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES3) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES31) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES32) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_GLCOREARB) + +#if defined(__APPLE__) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif /*GLFW_INCLUDE_GLEXT*/ + +#else /*__APPLE__*/ + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#endif /*__APPLE__*/ + +#elif defined(GLFW_INCLUDE_GLU) + +#if defined(__APPLE__) + +#if defined(GLFW_INCLUDE_GLU) +#include +#endif + +#else /*__APPLE__*/ + +#if defined(GLFW_INCLUDE_GLU) +#include +#endif + +#endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ + +#if defined(__APPLE__) + +#if !defined(GLFW_INCLUDE_GLEXT) +#define GL_GLEXT_LEGACY +#endif +#include + +#else /*__APPLE__*/ + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#endif /*__APPLE__*/ + +#endif /* OpenGL and OpenGL ES headers */ + +#ifndef SSCAPI + +#include "ssgc_internal.h" + +#endif // ! SSCAPI + + + + //#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + // /* GLFW_DLL must be defined by applications that are linking against the DLL + // * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + // * configuration header when compiling the DLL version of the library. + // */ + //#error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" + //#endif + // + // /* SSCAPI is used to declare public API functions for export + // * from the DLL / shared library / dynamic library. + // */ + //#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Win32 DLL */ + //#define SSCAPI __declspec(dllexport) + //#elif defined(_WIN32) && defined(GLFW_DLL) + /* We are calling a GLFW Win32 DLL */ + //#define SSCAPI __declspec(dllimport) + //#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Unix shared library */ + //#define SSCAPI __attribute__((visibility("default"))) + //#else + //#define SSCAPI + //#endif + + +/************************************************************************* + * GLFW API tokens + *************************************************************************/ + + /*! @name GLFW version macros + * @{ */ + /*! @brief The major version number of the GLFW header. + * + * The major version number of the GLFW header. This is incremented when the + * API is changed in non-compatible ways. + * @ingroup init + */ +#define GLFW_VERSION_MAJOR 3 + /*! @brief The minor version number of the GLFW header. + * + * The minor version number of the GLFW header. This is incremented when + * features are added to the API but it remains backward-compatible. + * @ingroup init + */ +#define GLFW_VERSION_MINOR 4 + /*! @brief The revision number of the GLFW header. + * + * The revision number of the GLFW header. This is incremented when a bug fix + * release is made that does not contain any API changes. + * @ingroup init + */ +#define GLFW_VERSION_REVISION 0 + /*! @} */ + + /*! @brief One. + * + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init + */ +#define GLFW_TRUE 1 + /*! @brief Zero. + * + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init + */ +#define GLFW_FALSE 0 + + /*! @name Key and button actions + * @{ */ + /*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * + * @ingroup input + */ +#define GLFW_RELEASE 0 + /*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * + * @ingroup input + */ +#define GLFW_PRESS 1 + /*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * + * @ingroup input + */ +#define GLFW_REPEAT 2 + /*! @} */ + + /*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. + * + * See [joystick hat input](@ref joystick_hat) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_HAT_CENTERED 0 +#define GLFW_HAT_UP 1 +#define GLFW_HAT_RIGHT 2 +#define GLFW_HAT_DOWN 4 +#define GLFW_HAT_LEFT 8 +#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) +#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) +#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) +#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) + /*! @} */ + + /*! @defgroup keys Keyboard keys + * @brief Keyboard key IDs. + * + * See [key input](@ref input_key) for how these are used. + * + * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), + * but re-arranged to map to 7-bit ASCII for printable keys (function keys are + * put in the 256+ range). + * + * The naming of the key codes follow these rules: + * - The US keyboard layout is used + * - Names of printable alphanumeric characters are used (e.g. "A", "R", + * "3", etc.) + * - For non-alphanumeric characters, Unicode:ish names are used (e.g. + * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not + * correspond to the Unicode standard (usually for brevity) + * - Keys that lack a clear US mapping are named "WORLD_x" + * - For non-printable keys, custom names are used (e.g. "F4", + * "BACKSPACE", etc.) + * + * @ingroup input + * @{ + */ + + /* The unknown key */ +#define GLFW_KEY_UNKNOWN -1 + +/* Printable keys */ +#define GLFW_KEY_SPACE 32 +#define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_COMMA 44 /* , */ +#define GLFW_KEY_MINUS 45 /* - */ +#define GLFW_KEY_PERIOD 46 /* . */ +#define GLFW_KEY_SLASH 47 /* / */ +#define GLFW_KEY_0 48 +#define GLFW_KEY_1 49 +#define GLFW_KEY_2 50 +#define GLFW_KEY_3 51 +#define GLFW_KEY_4 52 +#define GLFW_KEY_5 53 +#define GLFW_KEY_6 54 +#define GLFW_KEY_7 55 +#define GLFW_KEY_8 56 +#define GLFW_KEY_9 57 +#define GLFW_KEY_SEMICOLON 59 /* ; */ +#define GLFW_KEY_EQUAL 61 /* = */ +#define GLFW_KEY_A 65 +#define GLFW_KEY_B 66 +#define GLFW_KEY_C 67 +#define GLFW_KEY_D 68 +#define GLFW_KEY_E 69 +#define GLFW_KEY_F 70 +#define GLFW_KEY_G 71 +#define GLFW_KEY_H 72 +#define GLFW_KEY_I 73 +#define GLFW_KEY_J 74 +#define GLFW_KEY_K 75 +#define GLFW_KEY_L 76 +#define GLFW_KEY_M 77 +#define GLFW_KEY_N 78 +#define GLFW_KEY_O 79 +#define GLFW_KEY_P 80 +#define GLFW_KEY_Q 81 +#define GLFW_KEY_R 82 +#define GLFW_KEY_S 83 +#define GLFW_KEY_T 84 +#define GLFW_KEY_U 85 +#define GLFW_KEY_V 86 +#define GLFW_KEY_W 87 +#define GLFW_KEY_X 88 +#define GLFW_KEY_Y 89 +#define GLFW_KEY_Z 90 +#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ +#define GLFW_KEY_BACKSLASH 92 /* \ */ +#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ +#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ +#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define GLFW_KEY_ESCAPE 256 +#define GLFW_KEY_ENTER 257 +#define GLFW_KEY_TAB 258 +#define GLFW_KEY_BACKSPACE 259 +#define GLFW_KEY_INSERT 260 +#define GLFW_KEY_DELETE 261 +#define GLFW_KEY_RIGHT 262 +#define GLFW_KEY_LEFT 263 +#define GLFW_KEY_DOWN 264 +#define GLFW_KEY_UP 265 +#define GLFW_KEY_PAGE_UP 266 +#define GLFW_KEY_PAGE_DOWN 267 +#define GLFW_KEY_HOME 268 +#define GLFW_KEY_END 269 +#define GLFW_KEY_CAPS_LOCK 280 +#define GLFW_KEY_SCROLL_LOCK 281 +#define GLFW_KEY_NUM_LOCK 282 +#define GLFW_KEY_PRINT_SCREEN 283 +#define GLFW_KEY_PAUSE 284 +#define GLFW_KEY_F1 290 +#define GLFW_KEY_F2 291 +#define GLFW_KEY_F3 292 +#define GLFW_KEY_F4 293 +#define GLFW_KEY_F5 294 +#define GLFW_KEY_F6 295 +#define GLFW_KEY_F7 296 +#define GLFW_KEY_F8 297 +#define GLFW_KEY_F9 298 +#define GLFW_KEY_F10 299 +#define GLFW_KEY_F11 300 +#define GLFW_KEY_F12 301 +#define GLFW_KEY_F13 302 +#define GLFW_KEY_F14 303 +#define GLFW_KEY_F15 304 +#define GLFW_KEY_F16 305 +#define GLFW_KEY_F17 306 +#define GLFW_KEY_F18 307 +#define GLFW_KEY_F19 308 +#define GLFW_KEY_F20 309 +#define GLFW_KEY_F21 310 +#define GLFW_KEY_F22 311 +#define GLFW_KEY_F23 312 +#define GLFW_KEY_F24 313 +#define GLFW_KEY_F25 314 +#define GLFW_KEY_KP_0 320 +#define GLFW_KEY_KP_1 321 +#define GLFW_KEY_KP_2 322 +#define GLFW_KEY_KP_3 323 +#define GLFW_KEY_KP_4 324 +#define GLFW_KEY_KP_5 325 +#define GLFW_KEY_KP_6 326 +#define GLFW_KEY_KP_7 327 +#define GLFW_KEY_KP_8 328 +#define GLFW_KEY_KP_9 329 +#define GLFW_KEY_KP_DECIMAL 330 +#define GLFW_KEY_KP_DIVIDE 331 +#define GLFW_KEY_KP_MULTIPLY 332 +#define GLFW_KEY_KP_SUBTRACT 333 +#define GLFW_KEY_KP_ADD 334 +#define GLFW_KEY_KP_ENTER 335 +#define GLFW_KEY_KP_EQUAL 336 +#define GLFW_KEY_LEFT_SHIFT 340 +#define GLFW_KEY_LEFT_CONTROL 341 +#define GLFW_KEY_LEFT_ALT 342 +#define GLFW_KEY_LEFT_SUPER 343 +#define GLFW_KEY_RIGHT_SHIFT 344 +#define GLFW_KEY_RIGHT_CONTROL 345 +#define GLFW_KEY_RIGHT_ALT 346 +#define GLFW_KEY_RIGHT_SUPER 347 +#define GLFW_KEY_MENU 348 + +#define GLFW_KEY_LAST GLFW_KEY_MENU + +/*! @} */ + +/*! @defgroup mods Modifier key flags + * @brief Modifier key flags. + * + * See [key input](@ref input_key) for how these are used. + * + * @ingroup input + * @{ */ + + /*! @brief If this bit is set one or more Shift keys were held down. + * + * If this bit is set one or more Shift keys were held down. + */ +#define GLFW_MOD_SHIFT 0x0001 + /*! @brief If this bit is set one or more Control keys were held down. + * + * If this bit is set one or more Control keys were held down. + */ +#define GLFW_MOD_CONTROL 0x0002 + /*! @brief If this bit is set one or more Alt keys were held down. + * + * If this bit is set one or more Alt keys were held down. + */ +#define GLFW_MOD_ALT 0x0004 + /*! @brief If this bit is set one or more Super keys were held down. + * + * If this bit is set one or more Super keys were held down. + */ +#define GLFW_MOD_SUPER 0x0008 + /*! @brief If this bit is set the Caps Lock key is enabled. + * + * If this bit is set the Caps Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_CAPS_LOCK 0x0010 + /*! @brief If this bit is set the Num Lock key is enabled. + * + * If this bit is set the Num Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_NUM_LOCK 0x0020 + + /*! @} */ + + /*! @defgroup buttons Mouse buttons + * @brief Mouse button IDs. + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_MOUSE_BUTTON_1 0 +#define GLFW_MOUSE_BUTTON_2 1 +#define GLFW_MOUSE_BUTTON_3 2 +#define GLFW_MOUSE_BUTTON_4 3 +#define GLFW_MOUSE_BUTTON_5 4 +#define GLFW_MOUSE_BUTTON_6 5 +#define GLFW_MOUSE_BUTTON_7 6 +#define GLFW_MOUSE_BUTTON_8 7 +#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 +#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 +#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 +#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 + /*! @} */ + + /*! @defgroup joysticks Joysticks + * @brief Joystick IDs. + * + * See [joystick input](@ref joystick) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_JOYSTICK_1 0 +#define GLFW_JOYSTICK_2 1 +#define GLFW_JOYSTICK_3 2 +#define GLFW_JOYSTICK_4 3 +#define GLFW_JOYSTICK_5 4 +#define GLFW_JOYSTICK_6 5 +#define GLFW_JOYSTICK_7 6 +#define GLFW_JOYSTICK_8 7 +#define GLFW_JOYSTICK_9 8 +#define GLFW_JOYSTICK_10 9 +#define GLFW_JOYSTICK_11 10 +#define GLFW_JOYSTICK_12 11 +#define GLFW_JOYSTICK_13 12 +#define GLFW_JOYSTICK_14 13 +#define GLFW_JOYSTICK_15 14 +#define GLFW_JOYSTICK_16 15 +#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 + /*! @} */ + + /*! @defgroup gamepad_buttons Gamepad buttons + * @brief Gamepad buttons. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_BUTTON_A 0 +#define GLFW_GAMEPAD_BUTTON_B 1 +#define GLFW_GAMEPAD_BUTTON_X 2 +#define GLFW_GAMEPAD_BUTTON_Y 3 +#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 +#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 +#define GLFW_GAMEPAD_BUTTON_BACK 6 +#define GLFW_GAMEPAD_BUTTON_START 7 +#define GLFW_GAMEPAD_BUTTON_GUIDE 8 +#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 +#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 +#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 +#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 +#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 +#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 +#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT + +#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A +#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B +#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X +#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y + /*! @} */ + + /*! @defgroup gamepad_axes Gamepad axes + * @brief Gamepad axes. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_AXIS_LEFT_X 0 +#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 +#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 +#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 +#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 +#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 +#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER + /*! @} */ + + /*! @defgroup errors Error codes + * @brief Error codes. + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init + * @{ */ + /*! @brief No error has occurred. + * + * No error has occurred. + * + * @analysis Yay. + */ +#define GLFW_NO_ERROR 0 + /*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that must not be called unless the + * library is [initialized](@ref intro_init). + * + * @analysis Application programmer error. Initialize GLFW before calling any + * function that requires initialization. + */ +#define GLFW_NOT_INITIALIZED 0x00010001 + /*! @brief No context is current for this thread. + * + * This occurs if a GLFW function was called that needs and operates on the + * current OpenGL or OpenGL ES context but no context is current on the calling + * thread. One such function is @ref glfwSwapInterval. + * + * @analysis Application programmer error. Ensure a context is current before + * calling functions that require a current context. + */ +#define GLFW_NO_CURRENT_CONTEXT 0x00010002 + /*! @brief One of the arguments to the function was an invalid enum value. + * + * One of the arguments to the function was an invalid enum value, for example + * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_ENUM 0x00010003 + /*! @brief One of the arguments to the function was an invalid value. + * + * One of the arguments to the function was an invalid value, for example + * requesting a non-existent OpenGL or OpenGL ES version like 2.7. + * + * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead + * result in a @ref GLFW_VERSION_UNAVAILABLE error. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_VALUE 0x00010004 + /*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @analysis A bug in GLFW or the underlying operating system. Report the bug + * to our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_OUT_OF_MEMORY 0x00010005 + /*! @brief GLFW could not find support for the requested API on the system. + * + * GLFW could not find support for the requested API on the system. + * + * @analysis The installed graphics driver does not support the requested + * API, or does not support it via the chosen context creation API. + * Below are a few examples. + * + * @par + * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only + * supports OpenGL ES via EGL, while Nvidia and Intel only support it via + * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa + * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary + * driver. Older graphics drivers do not support Vulkan. + */ +#define GLFW_API_UNAVAILABLE 0x00010006 + /*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested context + * or framebuffer hints) is not available on this machine. + * + * @analysis The machine does not support your requirements. If your + * application is sufficiently flexible, downgrade your requirements and try + * again. Otherwise, inform the user that their machine does not match your + * requirements. + * + * @par + * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 + * comes out before the 4.x series gets that far, also fail with this error and + * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions + * will exist. + */ +#define GLFW_VERSION_UNAVAILABLE 0x00010007 + /*! @brief A platform-specific error occurred that does not match any of the + * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @analysis A bug or configuration error in GLFW, the underlying operating + * system or its drivers, or a lack of required resources. Report the issue to + * our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_PLATFORM_ERROR 0x00010008 + /*! @brief The requested format is not supported or available. + * + * If emitted during window creation, the requested pixel format is not + * supported. + * + * If emitted when querying the clipboard, the contents of the clipboard could + * not be converted to the requested format. + * + * @analysis If emitted during window creation, one or more + * [hard constraints](@ref window_hints_hard) did not match any of the + * available pixel formats. If your application is sufficiently flexible, + * downgrade your requirements and try again. Otherwise, inform the user that + * their machine does not match your requirements. + * + * @par + * If emitted when querying the clipboard, ignore the error or report it to + * the user, as appropriate. + */ +#define GLFW_FORMAT_UNAVAILABLE 0x00010009 + /*! @brief The specified window does not have an OpenGL or OpenGL ES context. + * + * A window that does not have an OpenGL or OpenGL ES context was passed to + * a function that requires it to have one. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_NO_WINDOW_CONTEXT 0x0001000A + /*! @brief The specified cursor shape is not available. + * + * The specified standard cursor shape is not available, either because the + * current platform cursor theme does not provide it or because it is not + * available on the platform. + * + * @analysis Platform or system settings limitation. Pick another + * [standard cursor shape](@ref shapes) or create a + * [custom cursor](@ref cursor_custom). + */ +#define GLFW_CURSOR_UNAVAILABLE 0x0001000B + /*! @brief The requested feature is not provided by the platform. + * + * The requested feature is not provided by the platform, so GLFW is unable to + * implement it. The documentation for each function notes if it could emit + * this error. + * + * @analysis Platform or platform version limitation. The error can be ignored + * unless the feature is critical to the application. + * + * @par + * A function call that emits this error has no effect other than the error and + * updating any existing out parameters. + */ +#define GLFW_FEATURE_UNAVAILABLE 0x0001000C + /*! @brief The requested feature is not implemented for the platform. + * + * The requested feature has not yet been implemented in GLFW for this platform. + * + * @analysis An incomplete implementation of GLFW for this platform, hopefully + * fixed in a future release. The error can be ignored unless the feature is + * critical to the application. + * + * @par + * A function call that emits this error has no effect other than the error and + * updating any existing out parameters. + */ +#define GLFW_FEATURE_UNIMPLEMENTED 0x0001000D + /*! @brief Platform unavailable or no matching platform was found. + * + * If emitted during initialization, no matching platform was found. If @ref + * GLFW_PLATFORM is set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of the + * platforms supported by this library binary, except for the Null platform. If set to + * a specific platform, it is either not supported by this library binary or GLFW was not + * able to detect it. + * + * If emitted by a native access function, GLFW was initialized for a different platform + * than the function is for. + * + * @analysis Failure to detect any platform usually only happens on non-macOS Unix + * systems, either when no window system is running or the program was run from + * a terminal that does not have the necessary environment variables. Fall back to + * a different platform if possible or notify the user that no usable platform was + * detected. + * + * Failure to detect a specific platform may have the same cause as above or be because + * support for that platform was not compiled in. Call @ref glfwPlatformSupported to + * check whether a specific platform is supported by a library binary. + */ +#define GLFW_PLATFORM_UNAVAILABLE 0x0001000E + /*! @} */ + + /*! @addtogroup window + * @{ */ + /*! @brief Input focus window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUSED_hint) or + * [window attribute](@ref GLFW_FOCUSED_attrib). + */ +#define GLFW_FOCUSED 0x00020001 + /*! @brief Window iconification window attribute + * + * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). + */ +#define GLFW_ICONIFIED 0x00020002 + /*! @brief Window resize-ability window hint and attribute + * + * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and + * [window attribute](@ref GLFW_RESIZABLE_attrib). + */ +#define GLFW_RESIZABLE 0x00020003 + /*! @brief Window visibility window hint and attribute + * + * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and + * [window attribute](@ref GLFW_VISIBLE_attrib). + */ +#define GLFW_VISIBLE 0x00020004 + /*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_DECORATED_hint) and + * [window attribute](@ref GLFW_DECORATED_attrib). + */ +#define GLFW_DECORATED 0x00020005 + /*! @brief Window auto-iconification window hint and attribute + * + * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and + * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). + */ +#define GLFW_AUTO_ICONIFY 0x00020006 + /*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_FLOATING_hint) and + * [window attribute](@ref GLFW_FLOATING_attrib). + */ +#define GLFW_FLOATING 0x00020007 + /*! @brief Window maximization window hint and attribute + * + * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and + * [window attribute](@ref GLFW_MAXIMIZED_attrib). + */ +#define GLFW_MAXIMIZED 0x00020008 + /*! @brief Cursor centering window hint + * + * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). + */ +#define GLFW_CENTER_CURSOR 0x00020009 + /*! @brief Window framebuffer transparency hint and attribute + * + * Window framebuffer transparency + * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and + * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). + */ +#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A + /*! @brief Mouse cursor hover window attribute. + * + * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). + */ +#define GLFW_HOVERED 0x0002000B + /*! @brief Input focus on calling show window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or + * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). + */ +#define GLFW_FOCUS_ON_SHOW 0x0002000C + + /*! @brief Mouse input transparency window hint and attribute + * + * Mouse input transparency [window hint](@ref GLFW_MOUSE_PASSTHROUGH_hint) or + * [window attribute](@ref GLFW_MOUSE_PASSTHROUGH_attrib). + */ +#define GLFW_MOUSE_PASSTHROUGH 0x0002000D + + /*! @brief Initial position x-coordinate window hint. + * + * Initial position x-coordinate [window hint](@ref GLFW_POSITION_X). + */ +#define GLFW_POSITION_X 0x0002000E + + /*! @brief Initial position y-coordinate window hint. + * + * Initial position y-coordinate [window hint](@ref GLFW_POSITION_Y). + */ +#define GLFW_POSITION_Y 0x0002000F + + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). + */ +#define GLFW_RED_BITS 0x00021001 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). + */ +#define GLFW_GREEN_BITS 0x00021002 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). + */ +#define GLFW_BLUE_BITS 0x00021003 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). + */ +#define GLFW_ALPHA_BITS 0x00021004 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). + */ +#define GLFW_DEPTH_BITS 0x00021005 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). + */ +#define GLFW_STENCIL_BITS 0x00021006 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). + */ +#define GLFW_ACCUM_RED_BITS 0x00021007 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). + */ +#define GLFW_ACCUM_GREEN_BITS 0x00021008 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). + */ +#define GLFW_ACCUM_BLUE_BITS 0x00021009 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). + */ +#define GLFW_ACCUM_ALPHA_BITS 0x0002100A + /*! @brief Framebuffer auxiliary buffer hint. + * + * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). + */ +#define GLFW_AUX_BUFFERS 0x0002100B + /*! @brief OpenGL stereoscopic rendering hint. + * + * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). + */ +#define GLFW_STEREO 0x0002100C + /*! @brief Framebuffer MSAA samples hint. + * + * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). + */ +#define GLFW_SAMPLES 0x0002100D + /*! @brief Framebuffer sRGB hint. + * + * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). + */ +#define GLFW_SRGB_CAPABLE 0x0002100E + /*! @brief Monitor refresh rate hint. + * + * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). + */ +#define GLFW_REFRESH_RATE 0x0002100F + /*! @brief Framebuffer double buffering hint and attribute. + * + * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER_hint) and + * [attribute](@ref GLFW_DOUBLEBUFFER_attrib). + */ +#define GLFW_DOUBLEBUFFER 0x00021010 + + /*! @brief Context client API hint and attribute. + * + * Context client API [hint](@ref GLFW_CLIENT_API_hint) and + * [attribute](@ref GLFW_CLIENT_API_attrib). + */ +#define GLFW_CLIENT_API 0x00022001 + /*! @brief Context client API major version hint and attribute. + * + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 + /*! @brief Context client API minor version hint and attribute. + * + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 + /*! @brief Context client API revision number attribute. + * + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). + */ +#define GLFW_CONTEXT_REVISION 0x00022004 + /*! @brief Context robustness hint and attribute. + * + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). + */ +#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 + /*! @brief OpenGL forward-compatibility hint and attribute. + * + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). + */ +#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 + /*! @brief Debug mode context hint and attribute. + * + * Debug mode context [hint](@ref GLFW_CONTEXT_DEBUG_hint) and + * [attribute](@ref GLFW_CONTEXT_DEBUG_attrib). + */ +#define GLFW_CONTEXT_DEBUG 0x00022007 + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_OPENGL_DEBUG_CONTEXT GLFW_CONTEXT_DEBUG + /*! @brief OpenGL profile hint and attribute. + * + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). + */ +#define GLFW_OPENGL_PROFILE 0x00022008 + /*! @brief Context flush-on-release hint and attribute. + * + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). + */ +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 + /*! @brief Context error suppression hint and attribute. + * + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). + */ +#define GLFW_CONTEXT_NO_ERROR 0x0002200A + /*! @brief Context creation API hint and attribute. + * + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). + */ +#define GLFW_CONTEXT_CREATION_API 0x0002200B + /*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C + /*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ +#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 + /*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ +#define GLFW_COCOA_FRAME_NAME 0x00023002 + /*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ +#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 + /*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_CLASS_NAME 0x00024001 + /*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_INSTANCE_NAME 0x00024002 +#define GLFW_WIN32_KEYBOARD_MENU 0x00025001 + /*! @brief Wayland specific + * [window hint](@ref GLFW_WAYLAND_APP_ID_hint). + * + * Allows specification of the Wayland app_id. + */ +#define GLFW_WAYLAND_APP_ID 0x00026001 + /*! @} */ + +#define GLFW_NO_API 0 +#define GLFW_OPENGL_API 0x00030001 +#define GLFW_OPENGL_ES_API 0x00030002 + +#define GLFW_NO_ROBUSTNESS 0 +#define GLFW_NO_RESET_NOTIFICATION 0x00031001 +#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 + +#define GLFW_OPENGL_ANY_PROFILE 0 +#define GLFW_OPENGL_CORE_PROFILE 0x00032001 +#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 + +#define GLFW_CURSOR 0x00033001 +#define GLFW_STICKY_KEYS 0x00033002 +#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 +#define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 + +#define GLFW_CURSOR_NORMAL 0x00034001 +#define GLFW_CURSOR_HIDDEN 0x00034002 +#define GLFW_CURSOR_DISABLED 0x00034003 +#define GLFW_CURSOR_CAPTURED 0x00034004 + +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +#define GLFW_NATIVE_CONTEXT_API 0x00036001 +#define GLFW_EGL_CONTEXT_API 0x00036002 +#define GLFW_OSMESA_CONTEXT_API 0x00036003 + +#define GLFW_ANGLE_PLATFORM_TYPE_NONE 0x00037001 +#define GLFW_ANGLE_PLATFORM_TYPE_OPENGL 0x00037002 +#define GLFW_ANGLE_PLATFORM_TYPE_OPENGLES 0x00037003 +#define GLFW_ANGLE_PLATFORM_TYPE_D3D9 0x00037004 +#define GLFW_ANGLE_PLATFORM_TYPE_D3D11 0x00037005 +#define GLFW_ANGLE_PLATFORM_TYPE_VULKAN 0x00037007 +#define GLFW_ANGLE_PLATFORM_TYPE_METAL 0x00037008 + +#define GLFW_WAYLAND_PREFER_LIBDECOR 0x00038001 +#define GLFW_WAYLAND_DISABLE_LIBDECOR 0x00038002 + +#define GLFW_ANY_POSITION 0x80000000 + +/*! @defgroup shapes Standard cursor shapes + * @brief Standard system cursor shapes. + * + * These are the [standard cursor shapes](@ref cursor_standard) that can be + * requested from the platform (window system). + * + * @ingroup input + * @{ */ + + /*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor shape. + */ +#define GLFW_ARROW_CURSOR 0x00036001 + /*! @brief The text input I-beam cursor shape. + * + * The text input I-beam cursor shape. + */ +#define GLFW_IBEAM_CURSOR 0x00036002 + /*! @brief The crosshair cursor shape. + * + * The crosshair cursor shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 + /*! @brief The pointing hand cursor shape. + * + * The pointing hand cursor shape. + */ +#define GLFW_POINTING_HAND_CURSOR 0x00036004 + /*! @brief The horizontal resize/move arrow shape. + * + * The horizontal resize/move arrow shape. This is usually a horizontal + * double-headed arrow. + */ +#define GLFW_RESIZE_EW_CURSOR 0x00036005 + /*! @brief The vertical resize/move arrow shape. + * + * The vertical resize/move shape. This is usually a vertical double-headed + * arrow. + */ +#define GLFW_RESIZE_NS_CURSOR 0x00036006 + /*! @brief The top-left to bottom-right diagonal resize/move arrow shape. + * + * The top-left to bottom-right diagonal resize/move shape. This is usually + * a diagonal double-headed arrow. + * + * @note @macos This shape is provided by a private system API and may fail + * with @ref GLFW_CURSOR_UNAVAILABLE in the future. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_RESIZE_NWSE_CURSOR 0x00036007 + /*! @brief The top-right to bottom-left diagonal resize/move arrow shape. + * + * The top-right to bottom-left diagonal resize/move shape. This is usually + * a diagonal double-headed arrow. + * + * @note @macos This shape is provided by a private system API and may fail + * with @ref GLFW_CURSOR_UNAVAILABLE in the future. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_RESIZE_NESW_CURSOR 0x00036008 + /*! @brief The omni-directional resize/move cursor shape. + * + * The omni-directional resize cursor/move shape. This is usually either + * a combined horizontal and vertical double-headed arrow or a grabbing hand. + */ +#define GLFW_RESIZE_ALL_CURSOR 0x00036009 + /*! @brief The operation-not-allowed shape. + * + * The operation-not-allowed shape. This is usually a circle with a diagonal + * line through it. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_NOT_ALLOWED_CURSOR 0x0003600A + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_HRESIZE_CURSOR GLFW_RESIZE_EW_CURSOR + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_VRESIZE_CURSOR GLFW_RESIZE_NS_CURSOR + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_HAND_CURSOR GLFW_POINTING_HAND_CURSOR + /*! @} */ + +#define GLFW_CONNECTED 0x00040001 +#define GLFW_DISCONNECTED 0x00040002 + +/*! @addtogroup init + * @{ */ + /*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ +#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 + /*! @brief ANGLE rendering backend init hint. + * + * ANGLE rendering backend [init hint](@ref GLFW_ANGLE_PLATFORM_TYPE_hint). + */ +#define GLFW_ANGLE_PLATFORM_TYPE 0x00050002 + /*! @brief Platform selection init hint. + * + * Platform selection [init hint](@ref GLFW_PLATFORM). + */ +#define GLFW_PLATFORM 0x00050003 + /*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ +#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 + /*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ +#define GLFW_COCOA_MENUBAR 0x00051002 + /*! @brief X11 specific init hint. + * + * X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint). + */ +#define GLFW_X11_XCB_VULKAN_SURFACE 0x00052001 + /*! @brief Wayland specific init hint. + * + * Wayland specific [init hint](@ref GLFW_WAYLAND_LIBDECOR_hint). + */ +#define GLFW_WAYLAND_LIBDECOR 0x00053001 + /*! @} */ + + /*! @addtogroup init + * @{ */ + /*! @brief Hint value that enables automatic platform selection. + * + * Hint value for @ref GLFW_PLATFORM that enables automatic platform selection. + */ +#define GLFW_ANY_PLATFORM 0x00060000 +#define GLFW_PLATFORM_WIN32 0x00060001 +#define GLFW_PLATFORM_COCOA 0x00060002 +#define GLFW_PLATFORM_WAYLAND 0x00060003 +#define GLFW_PLATFORM_X11 0x00060004 +#define GLFW_PLATFORM_NULL 0x00060005 + /*! @} */ + +#define GLFW_DONT_CARE -1 + + +/************************************************************************* + * GLFW API types + *************************************************************************/ + + /*! @brief Client API function pointer type. + * + * Generic function pointer used for returning client API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 3.0. + * + * @ingroup context + */ + typedef void (*GLFWglproc)(void); + + /*! @brief Vulkan API function pointer type. + * + * Generic function pointer used for returning Vulkan API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref vulkan_proc + * @sa @ref glfwGetInstanceProcAddress + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + typedef void (*GLFWvkproc)(void); + + /*! @brief Opaque monitor object. + * + * Opaque monitor object. + * + * @see @ref monitor_object + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + typedef struct GLFWmonitor GLFWmonitor; + + /*! @brief Opaque window object. + * + * Opaque window object. + * + * @see @ref window_object + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef struct GLFWwindow GLFWwindow; + + /*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @see @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ + typedef struct GLFWcursor GLFWcursor; + + /*! @brief The function pointer type for memory allocation callbacks. + * + * This is the function pointer type for memory allocation callbacks. A memory + * allocation callback function has the following signature: + * @code + * void* function_name(size_t size, void* user) + * @endcode + * + * This function must return either a memory block at least `size` bytes long, + * or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation + * failures gracefully yet. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * Any memory allocated by this function will be deallocated during library + * termination or earlier. + * + * The size will always be greater than zero. Allocations of size zero are filtered out + * before reaching the custom allocator. + * + * @param[in] size The minimum size, in bytes, of the memory block. + * @param[in] user The user-defined pointer from the allocator. + * @return The address of the newly allocated memory block, or `NULL` if an + * error occurred. + * + * @pointer_lifetime The returned memory block must be valid at least until it + * is deallocated. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef void* (*GLFWallocatefun)(size_t size, void* user); + + /*! @brief The function pointer type for memory reallocation callbacks. + * + * This is the function pointer type for memory reallocation callbacks. + * A memory reallocation callback function has the following signature: + * @code + * void* function_name(void* block, size_t size, void* user) + * @endcode + * + * This function must return a memory block at least `size` bytes long, or + * `NULL` if allocation failed. Note that not all parts of GLFW handle allocation + * failures gracefully yet. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * Any memory allocated by this function will be deallocated during library + * termination or earlier. + * + * The block address will never be `NULL` and the size will always be greater than zero. + * Reallocations of a block to size zero are converted into deallocations. Reallocations + * of `NULL` to a non-zero size are converted into regular allocations. + * + * @param[in] block The address of the memory block to reallocate. + * @param[in] size The new minimum size, in bytes, of the memory block. + * @param[in] user The user-defined pointer from the allocator. + * @return The address of the newly allocated or resized memory block, or + * `NULL` if an error occurred. + * + * @pointer_lifetime The returned memory block must be valid at least until it + * is deallocated. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef void* (*GLFWreallocatefun)(void* block, size_t size, void* user); + + /*! @brief The function pointer type for memory deallocation callbacks. + * + * This is the function pointer type for memory deallocation callbacks. + * A memory deallocation callback function has the following signature: + * @code + * void function_name(void* block, void* user) + * @endcode + * + * This function may deallocate the specified memory block. This memory block + * will have been allocated with the same allocator. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * The block address will never be `NULL`. Deallocations of `NULL` are filtered out + * before reaching the custom allocator. + * + * @param[in] block The address of the memory block to deallocate. + * @param[in] user The user-defined pointer from the allocator. + * + * @pointer_lifetime The specified memory block will not be accessed by GLFW + * after this function is called. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef void (*GLFWdeallocatefun)(void* block, void* user); + + /*! @brief The function pointer type for error callbacks. + * + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. + * @param[in] description A UTF-8 encoded string describing the error. + * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.0. + * + * @ingroup init + */ + typedef void (*GLFWerrorfun)(int error_code, const char* description); + + /*! @brief The function pointer type for window position callbacks. + * + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * + * @param[in] window The window that was moved. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPosCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos); + + /*! @brief The function pointer type for window size callbacks. + * + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window that was resized. + * @param[in] width The new width, in screen coordinates, of the window. + * @param[in] height The new height, in screen coordinates, of the window. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSizeCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + typedef void (*GLFWwindowsizefun)(GLFWwindow* window, int width, int height); + + /*! @brief The function pointer type for window close callbacks. + * + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode + * + * @param[in] window The window that the user attempted to close. + * + * @sa @ref window_close + * @sa @ref glfwSetWindowCloseCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + typedef void (*GLFWwindowclosefun)(GLFWwindow* window); + + /*! @brief The function pointer type for window content refresh callbacks. + * + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode + * + * @param[in] window The window whose content needs to be refreshed. + * + * @sa @ref window_refresh + * @sa @ref glfwSetWindowRefreshCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + typedef void (*GLFWwindowrefreshfun)(GLFWwindow* window); + + /*! @brief The function pointer type for window focus callbacks. + * + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GLFW_TRUE` if the window was given input focus, or + * `GLFW_FALSE` if it lost it. + * + * @sa @ref window_focus + * @sa @ref glfwSetWindowFocusCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWwindowfocusfun)(GLFWwindow* window, int focused); + + /*! @brief The function pointer type for window iconify callbacks. + * + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * + * @param[in] window The window that was iconified or restored. + * @param[in] iconified `GLFW_TRUE` if the window was iconified, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_iconify + * @sa @ref glfwSetWindowIconifyCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWwindowiconifyfun)(GLFWwindow* window, int iconified); + + /*! @brief The function pointer type for window maximize callbacks. + * + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * + * @param[in] window The window that was maximized or restored. + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_maximize + * @sa glfwSetWindowMaximizeCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ + typedef void (*GLFWwindowmaximizefun)(GLFWwindow* window, int maximized); + + /*! @brief The function pointer type for framebuffer size callbacks. + * + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window whose framebuffer was resized. + * @param[in] width The new width, in pixels, of the framebuffer. + * @param[in] height The new height, in pixels, of the framebuffer. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWframebuffersizefun)(GLFWwindow* window, int width, int height); + + /*! @brief The function pointer type for window content scale callbacks. + * + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * + * @param[in] window The window whose content scale changed. + * @param[in] xscale The new x-axis content scale of the window. + * @param[in] yscale The new y-axis content scale of the window. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ + typedef void (*GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale); + + /*! @brief The function pointer type for mouse button callbacks. + * + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] button The [mouse button](@ref buttons) that was pressed or + * released. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_mouse_button + * @sa @ref glfwSetMouseButtonCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle and modifier mask parameters. + * + * @ingroup input + */ + typedef void (*GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods); + + /*! @brief The function pointer type for cursor position callbacks. + * + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xpos The new cursor x-coordinate, relative to the left edge of + * the content area. + * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the + * content area. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPosCallback + * + * @since Added in version 3.0. Replaces `GLFWmouseposfun`. + * + * @ingroup input + */ + typedef void (*GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos); + + /*! @brief The function pointer type for cursor enter/leave callbacks. + * + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content + * area, or `GLFW_FALSE` if it left it. + * + * @sa @ref cursor_enter + * @sa @ref glfwSetCursorEnterCallback + * + * @since Added in version 3.0. + * + * @ingroup input + */ + typedef void (*GLFWcursorenterfun)(GLFWwindow* window, int entered); + + /*! @brief The function pointer type for scroll callbacks. + * + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xoffset The scroll offset along the x-axis. + * @param[in] yoffset The scroll offset along the y-axis. + * + * @sa @ref scrolling + * @sa @ref glfwSetScrollCallback + * + * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. + * + * @ingroup input + */ + typedef void (*GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset); + + /*! @brief The function pointer type for keyboard key callbacks. + * + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] key The [keyboard key](@ref keys) that was pressed or released. + * @param[in] scancode The platform-specific scancode of the key. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_key + * @sa @ref glfwSetKeyCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle, scancode and modifier mask parameters. + * + * @ingroup input + */ + typedef void (*GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods); + + /*! @brief The function pointer type for Unicode character callbacks. + * + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * + * @sa @ref input_char + * @sa @ref glfwSetCharCallback + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ + typedef void (*GLFWcharfun)(GLFWwindow* window, unsigned int codepoint); + + /*! @brief The function pointer type for Unicode character with modifiers + * callbacks. + * + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_char + * @sa @ref glfwSetCharModsCallback + * + * @deprecated Scheduled for removal in version 4.0. + * + * @since Added in version 3.1. + * + * @ingroup input + */ + typedef void (*GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods); + + /*! @brief The function pointer type for path drop callbacks. + * + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] path_count The number of dropped paths. + * @param[in] paths The UTF-8 encoded file and/or directory path names. + * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * + * @sa @ref path_drop + * @sa @ref glfwSetDropCallback + * + * @since Added in version 3.1. + * + * @ingroup input + */ + typedef void (*GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]); + + /*! @brief The function pointer type for monitor configuration callbacks. + * + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * + * @param[in] monitor The monitor that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref monitor_event + * @sa @ref glfwSetMonitorCallback + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + typedef void (*GLFWmonitorfun)(GLFWmonitor* monitor, int event); + + /*! @brief The function pointer type for joystick configuration callbacks. + * + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode + * + * @param[in] jid The joystick that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref joystick_event + * @sa @ref glfwSetJoystickCallback + * + * @since Added in version 3.2. + * + * @ingroup input + */ + typedef void (*GLFWjoystickfun)(int jid, int event); + + /*! @brief Video mode type. + * + * This describes a single video mode. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * @sa @ref glfwGetVideoModes + * + * @since Added in version 1.0. + * @glfw3 Added refresh rate member. + * + * @ingroup monitor + */ + typedef struct GLFWvidmode + { + /*! The width, in screen coordinates, of the video mode. + */ + int width; + /*! The height, in screen coordinates, of the video mode. + */ + int height; + /*! The bit depth of the red channel of the video mode. + */ + int redBits; + /*! The bit depth of the green channel of the video mode. + */ + int greenBits; + /*! The bit depth of the blue channel of the video mode. + */ + int blueBits; + /*! The refresh rate, in Hz, of the video mode. + */ + int refreshRate; + } GLFWvidmode; + + /*! @brief Gamma ramp. + * + * This describes the gamma ramp for a monitor. + * + * @sa @ref monitor_gamma + * @sa @ref glfwGetGammaRamp + * @sa @ref glfwSetGammaRamp + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + typedef struct GLFWgammaramp + { + /*! An array of value describing the response of the red channel. + */ + unsigned short* red; + /*! An array of value describing the response of the green channel. + */ + unsigned short* green; + /*! An array of value describing the response of the blue channel. + */ + unsigned short* blue; + /*! The number of elements in each array. + */ + unsigned int size; + } GLFWgammaramp; + + /*! @brief Image data. + * + * This describes a single 2D image. See the documentation for each related + * function what the expected pixel format is. + * + * @sa @ref cursor_custom + * @sa @ref window_icon + * + * @since Added in version 2.1. + * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window + */ + typedef struct GLFWimage + { + /*! The width, in pixels, of this image. + */ + int width; + /*! The height, in pixels, of this image. + */ + int height; + /*! The pixel data of this image, arranged left-to-right, top-to-bottom. + */ + unsigned char* pixels; + } GLFWimage; + + /*! @brief Gamepad input state + * + * This describes the input state of a gamepad. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ + typedef struct GLFWgamepadstate + { + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + unsigned char buttons[15]; + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + float axes[6]; + } GLFWgamepadstate; + + /*! @brief + * + * @sa @ref init_allocator + * @sa @ref glfwInitAllocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef struct GLFWallocator + { + GLFWallocatefun allocate; + GLFWreallocatefun reallocate; + GLFWdeallocatefun deallocate; + void* user; + } GLFWallocator; + + + /************************************************************************* + * GLFW API functions + *************************************************************************/ + + /*! @brief Initializes the GLFW library. + * + * This function initializes the GLFW library. Before most GLFW functions can + * be used, GLFW must be initialized, and before an application terminates GLFW + * should be terminated in order to free any resources allocated during or + * after initialization. + * + * If this function fails, it calls @ref glfwTerminate before returning. If it + * succeeds, you should call @ref glfwTerminate before the application exits. + * + * Additional calls to this function after successful initialization but before + * termination will return `GLFW_TRUE` immediately. + * + * The @ref GLFW_PLATFORM init hint controls which platforms are considered during + * initialization. This also depends on which platforms the library was compiled to + * support. + * + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_PLATFORM_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos This function will change the current directory of the + * application to the `Contents/Resources` subdirectory of the application's + * bundle, if present. This can be disabled with the @ref + * GLFW_COCOA_CHDIR_RESOURCES init hint. + * + * @remark @macos This function will create the main menu and dock icon for the + * application. If GLFW finds a `MainMenu.nib` it is loaded and assumed to + * contain a menu bar. Otherwise a minimal menu bar is created manually with + * common commands like Hide, Quit and About. The About entry opens a minimal + * about dialog with information from the application's bundle. The menu bar + * and dock icon can be disabled entirely with the @ref GLFW_COCOA_MENUBAR init + * hint. + * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInitHint + * @sa @ref glfwInitAllocator + * @sa @ref glfwTerminate + * + * @since Added in version 1.0. + * + * @ingroup init + */ + SSCAPI int glfwInit(void); + + /*! @brief Terminates the GLFW library. + * + * This function destroys all remaining windows and cursors, restores any + * modified gamma ramps and frees any other allocated resources. Once this + * function is called, you must again call @ref glfwInit successfully before + * you will be able to use most GLFW functions. + * + * If GLFW has been successfully initialized, this function should be called + * before the application exits. If initialization fails, there is no need to + * call this function, as it is called by @ref glfwInit before it returns + * failure. + * + * This function has no effect if GLFW is not initialized. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark This function may be called before @ref glfwInit. + * + * @warning The contexts of any remaining windows must not be current on any + * other thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInit + * + * @since Added in version 1.0. + * + * @ingroup init + */ + SSCAPI void glfwTerminate(void); + + /*! @brief Sets the specified init hint to the desired value. + * + * This function sets hints for the next initialization of GLFW. + * + * The values you set hints to are never reset by GLFW, but they only take + * effect during initialization. Once GLFW has been initialized, any values + * you set will be ignored until the library is terminated and initialized + * again. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [init hint](@ref init_hints) to set. + * @param[in] value The new value of the init hint. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref + * GLFW_INVALID_VALUE. + * + * @remarks This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa init_hints + * @sa glfwInit + * + * @since Added in version 3.3. + * + * @ingroup init + */ + SSCAPI void glfwInitHint(int hint, int value); + + /*! @brief Sets the init allocator to the desired value. + * + * To use the default allocator, call this function with a `NULL` argument. + * + * If you specify an allocator struct, every member must be a valid function + * pointer. If any member is `NULL`, this function emits @ref + * GLFW_INVALID_VALUE and the init allocator is unchanged. + * + * @param[in] allocator The allocator to use at the next initialization, or + * `NULL` to use the default one. + * + * @errors Possible errors include @ref GLFW_INVALID_VALUE. + * + * @pointer_lifetime The specified allocator is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref init_allocator + * @sa @ref glfwInit + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI void glfwInitAllocator(const GLFWallocator* allocator); + +#if defined(VK_VERSION_1_0) + + /*! @brief Sets the desired Vulkan `vkGetInstanceProcAddr` function. + * + * This function sets the `vkGetInstanceProcAddr` function that GLFW will use for all + * Vulkan related entry point queries. + * + * This feature is mostly useful on macOS, if your copy of the Vulkan loader is in + * a location where GLFW cannot find it through dynamic loading, or if you are still + * using the static library version of the loader. + * + * If set to `NULL`, GLFW will try to load the Vulkan loader dynamically by its standard + * name and get this function from there. This is the default behavior. + * + * The standard name of the loader is `vulkan-1.dll` on Windows, `libvulkan.so.1` on + * Linux and other Unix-like systems and `libvulkan.1.dylib` on macOS. If your code is + * also loading it via these names then you probably don't need to use this function. + * + * The function address you set is never reset by GLFW, but it only takes effect during + * initialization. Once GLFW has been initialized, any updates will be ignored until the + * library is terminated and initialized again. + * + * @param[in] loader The address of the function to use, or `NULL`. + * + * @par Loader function signature + * @code + * PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* name) + * @endcode + * For more information about this function, see the + * [Vulkan Registry](https://www.khronos.org/registry/vulkan/). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref vulkan_loader + * @sa @ref glfwInit + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader); + +#endif /*VK_VERSION_1_0*/ + + /*! @brief Retrieves the version of the GLFW library. + * + * This function retrieves the major, minor and revision numbers of the GLFW + * library. It is intended for when you are using GLFW as a shared library and + * want to ensure that you are using the minimum required version. + * + * Any or all of the version arguments may be `NULL`. + * + * @param[out] major Where to store the major version number, or `NULL`. + * @param[out] minor Where to store the minor version number, or `NULL`. + * @param[out] rev Where to store the revision number, or `NULL`. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersionString + * + * @since Added in version 1.0. + * + * @ingroup init + */ + SSCAPI void glfwGetVersion(int* major, int* minor, int* rev); + + /*! @brief Returns a string describing the compile-time configuration. + * + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It describes + * the version, platforms, compiler and any platform or operating system specific + * compile-time options. It should not be confused with the OpenGL or OpenGL ES version + * string, queried with `glGetString`. + * + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function provides the version of the running library + * binary in numerical format. + * + * __Do not use the version string__ to parse what platforms are supported. The @ref + * glfwPlatformSupported function lets you query platform support. + * + * @return The ASCII encoded GLFW version string. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @pointer_lifetime The returned string is static and compile-time generated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersion + * + * @since Added in version 3.0. + * + * @ingroup init + */ + SSCAPI const char* glfwGetVersionString(void); + + /*! @brief Returns and clears the last error for the calling thread. + * + * This function returns and clears the [error code](@ref errors) of the last + * error that occurred on the calling thread, and optionally a UTF-8 encoded + * human-readable description of it. If no error has occurred since the last + * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is + * set to `NULL`. + * + * @param[in] description Where to store the error description pointer, or `NULL`. + * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR + * (zero). + * + * @errors None. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * next error occurs or the library is terminated. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.3. + * + * @ingroup init + */ + SSCAPI int glfwGetError(const char** description); + + /*! @brief Sets the error callback. + * + * This function sets the error callback, which is called with an error code + * and a human-readable description each time a GLFW error occurs. + * + * The error code is set before the callback is called. Calling @ref + * glfwGetError from the error callback will return the same value as the error + * code argument. + * + * The error callback is called on the thread where the error occurred. If you + * are using GLFW from multiple threads, your error callback needs to be + * written accordingly. + * + * Because the description string may have been generated specifically for that + * error, it is not guaranteed to be valid after the callback has returned. If + * you wish to use it after the callback returns, you need to make a copy. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set. + * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref error_handling + * @sa @ref glfwGetError + * + * @since Added in version 3.0. + * + * @ingroup init + */ + SSCAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + + /*! @brief Returns the currently selected platform. + * + * This function returns the platform that was selected during initialization. The + * returned value will be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. + * + * @return The currently selected platform, or zero if an error occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref platform + * @sa @ref glfwPlatformSupported + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI int glfwGetPlatform(void); + + /*! @brief Returns whether the library includes support for the specified platform. + * + * This function returns whether the library was compiled with support for the specified + * platform. The platform must be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. + * + * @param[in] platform The platform to query. + * @return `GLFW_TRUE` if the platform is supported, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref platform + * @sa @ref glfwGetPlatform + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI int glfwPlatformSupported(int platform); + + /*! @brief Returns the currently connected monitors. + * + * This function returns an array of handles for all currently connected + * monitors. The primary monitor is always first in the returned array. If no + * monitors were found, this function returns `NULL`. + * + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if no monitors were found or + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * monitor configuration changes or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_monitors + * @sa @ref monitor_event + * @sa @ref glfwGetPrimaryMonitor + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI GLFWmonitor** glfwGetMonitors(int* count); + + /*! @brief Returns the primary monitor. + * + * This function returns the primary monitor. This is usually the monitor + * where elements like the task bar or global menu bar are located. + * + * @return The primary monitor, or `NULL` if no monitors were found or if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @remark The primary monitor is always first in the array returned by @ref + * glfwGetMonitors. + * + * @sa @ref monitor_monitors + * @sa @ref glfwGetMonitors + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI GLFWmonitor* glfwGetPrimaryMonitor(void); + + /*! @brief Returns the position of the monitor's viewport on the virtual screen. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the specified monitor. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); + + /*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the window system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + + /*! @brief Returns the physical size of the monitor. + * + * This function returns the size, in millimetres, of the display area of the + * specified monitor. + * + * Some platforms do not provide accurate monitor size information, either + * because the monitor + * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) + * data is incorrect or because the driver does not report it accurately. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] widthMM Where to store the width, in millimetres, of the + * monitor's display area, or `NULL`. + * @param[out] heightMM Where to store the height, in millimetres, of the + * monitor's display area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @win32 On Windows 8 and earlier the physical size is calculated from + * the current resolution and system DPI instead of querying the monitor EDID data. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); + + /*! @brief Retrieves the content scale for the specified monitor. + * + * This function retrieves the content scale for the specified monitor. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * The content scale may depend on both the monitor resolution and pixel + * density and on user settings. It may be very different from the raw DPI + * calculated from the physical size and current resolution. + * + * @param[in] monitor The monitor to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); + + /*! @brief Returns the name of the specified monitor. + * + * This function returns a human-readable name, encoded as UTF-8, of the + * specified monitor. The name typically reflects the make and model of the + * monitor and is not guaranteed to be unique among the connected monitors. + * + * @param[in] monitor The monitor to query. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); + + /*! @brief Sets the user pointer of the specified monitor. + * + * This function sets the user-defined pointer of the specified monitor. The + * current value is retained until the monitor is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwGetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); + + /*! @brief Returns the user pointer of the specified monitor. + * + * This function returns the current value of the user-defined pointer of the + * specified monitor. The initial value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwSetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); + + /*! @brief Sets the monitor configuration callback. + * + * This function sets the monitor configuration callback, or removes the + * currently set callback. This is called when a monitor is connected to or + * disconnected from the system. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + + /*! @brief Returns the available video modes for the specified monitor. + * + * This function returns an array of all video modes supported by the specified + * monitor. The returned array is sorted in ascending order, first by color + * bit depth (the sum of all channel depths), then by resolution area (the + * product of width and height), then resolution width and finally by refresh + * rate. + * + * @param[in] monitor The monitor to query. + * @param[out] count Where to store the number of video modes in the returned + * array. This is set to zero if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected, this function is called again for that monitor or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * + * @since Added in version 1.0. + * @glfw3 Changed to return an array of modes for a specific monitor. + * + * @ingroup monitor + */ + SSCAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); + + /*! @brief Returns the current mode of the specified monitor. + * + * This function returns the current video mode of the specified monitor. If + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. + * + * @param[in] monitor The monitor to query. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoModes + * + * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. + * + * @ingroup monitor + */ + SSCAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); + + /*! @brief Generates a gamma ramp and sets it for the specified monitor. + * + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] gamma The desired exponent. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_INVALID_VALUE, + * @ref GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); + + /*! @brief Returns the current gamma ramp for the specified monitor. + * + * This function returns the current gamma ramp of the specified monitor. + * + * @param[in] monitor The monitor to query. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR + * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE while + * returning `NULL`. + * + * @pointer_lifetime The returned structure and its arrays are allocated and + * freed by GLFW. You should not free them yourself. They are valid until the + * specified monitor is disconnected, this function is called again for that + * monitor or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); + + /*! @brief Sets the current gamma ramp for the specified monitor. + * + * This function sets the current gamma ramp for the specified monitor. The + * original gamma ramp for that monitor is saved by GLFW the first time this + * function is called and is restored by @ref glfwTerminate. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] ramp The gamma ramp to use. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR + * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. + * + * @remark @win32 The gamma ramp size must be 256. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE. + * + * @pointer_lifetime The specified gamma ramp is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); + + /*! @brief Resets all window hints to their default values. + * + * This function resets all window hints to their + * [default values](@ref window_hints_values). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwWindowHintString + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwDefaultWindowHints(void); + + /*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only integer value hints can be set with this function. String value hints + * are set with @ref glfwWindowHintString. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHintString + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. + * + * @ingroup window + */ + SSCAPI void glfwWindowHint(int hint, int value); + + /*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only string type hints can be set with this function. Integer value hints + * are set with @ref glfwWindowHint. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwWindowHintString(int hint, const char* value); + + /*! @brief Creates a window and its associated context. + * + * This function creates a window and its associated OpenGL or OpenGL ES + * context. Most of the options controlling how the window and its context + * should be created are specified with [window hints](@ref window_hints). + * + * Successful creation does not change which context is current. Before you + * can use the newly created context, you need to + * [make it current](@ref context_current). For information about the `share` + * parameter, see @ref context_sharing. + * + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, see @ref + * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. + * + * To create a full screen window, you need to specify the monitor the window + * will cover. If no monitor is specified, the window will be windowed mode. + * Unless you have a way for the user to choose a specific monitor, it is + * recommended that you pick the primary monitor. For more information on how + * to query connected monitors, see @ref monitor_monitors. + * + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window is not + * iconified, the supported video mode most closely matching the desired video + * mode is set for the specified monitor. For more information about full + * screen windows, including the creation of so called _windowed full screen_ + * or _borderless full screen_ windows, see @ref window_windowed_full_screen. + * + * Once you have created the window, you can switch it between windowed and + * full screen mode with @ref glfwSetWindowMonitor. This will not affect its + * OpenGL or OpenGL ES context. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, set the @ref + * GLFW_POSITION_X and @ref GLFW_POSITION_Y window hints before creation. To + * restore the default behavior, set either or both hints back to + * `GLFW_ANY_POSITION`. + * + * As long as at least one full screen window is not iconified, the screensaver + * is prohibited from starting. + * + * Window systems put limits on window sizes. Very large or very small window + * dimensions may be overridden by the window system on creation. Check the + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * + * @param[in] width The desired width, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] height The desired height, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] title The initial, UTF-8 encoded window title. + * @param[in] monitor The monitor to use for full screen mode, or `NULL` for + * windowed mode. + * @param[in] share The window whose context to share resources with, or `NULL` + * to not share resources. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref + * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @win32 Window creation will fail if the Microsoft GDI software + * OpenGL implementation is the only one available. + * + * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it + * will be set as the initial icon for the window. If no such icon is present, + * the `IDI_APPLICATION` icon will be used instead. To set a different icon, + * see @ref glfwSetWindowIcon. + * + * @remark @win32 The context to share resources with must not be current on + * any other thread. + * + * @remark @macos The OS only supports core profile contexts for OpenGL + * versions 3.2 and later. Before creating an OpenGL context of version 3.2 or + * later you must set the [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) + * hint accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all + * on macOS. + * + * @remark @macos The GLFW window has no icon, as it is not a document + * window, but the dock icon will be the same as the application bundle's icon. + * For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @macos On OS X 10.10 and later the window frame will not be rendered + * at full resolution on Retina displays unless the + * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) + * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the + * application bundle's `Info.plist`. For more information, see + * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) + * in the Mac Developer Library. The GLFW test and example programs use + * a custom `Info.plist` template for this, which can be found as + * `CMake/Info.plist.in` in the source tree. + * + * @remark @macos When activating frame autosaving with + * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified + * window size and position may be overridden by previously saved values. + * + * @remark @x11 Some window managers will not respect the placement of + * initially hidden windows. + * + * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for + * a window to reach its requested state. This means you may not be able to + * query the final size, position or other attributes directly after window + * creation. + * + * @remark @x11 The class part of the `WM_CLASS` window property will by + * default be set to the window title passed to this function. The instance + * part will use the contents of the `RESOURCE_NAME` environment variable, if + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size or refresh rate. + * + * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol + * to be implemented in the user's compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwDestroyWindow + * + * @since Added in version 3.0. Replaces `glfwOpenWindow`. + * + * @ingroup window + */ + SSCAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); + + /*! @brief Destroys the specified window and its context. + * + * This function destroys the specified window and its context. On calling + * this function, no further callbacks will be called for that window. + * + * If the context of the specified window is current on the main thread, it is + * detached before being destroyed. + * + * @param[in] window The window to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwCreateWindow + * + * @since Added in version 3.0. Replaces `glfwCloseWindow`. + * + * @ingroup window + */ + SSCAPI void glfwDestroyWindow(GLFWwindow* window); + + /*! @brief Checks the close flag of the specified window. + * + * This function returns the value of the close flag of the specified window. + * + * @param[in] window The window to query. + * @return The value of the close flag. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI int glfwWindowShouldClose(GLFWwindow* window); + + /*! @brief Sets the close flag of the specified window. + * + * This function sets the value of the close flag of the specified window. + * This can be used to override the user's attempt to close the window, or + * to signal that it should be closed. + * + * @param[in] window The window whose flag to change. + * @param[in] value The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); + + /*! @brief Sets the title of the specified window. + * + * This function sets the window title, encoded as UTF-8, of the specified + * window. + * + * @param[in] window The window whose title to change. + * @param[in] title The UTF-8 encoded window title. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos The window title will not be updated until the next time you + * process events. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); + + /*! @brief Sets the icon for the specified window. + * + * This function sets the icon of the specified window. If passed an array of + * candidate images, those of or closest to the sizes desired by the system are + * selected. If no images are specified, the window reverts to its default + * icon. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The desired image sizes varies depending on platform and system settings. + * The selected images will be rescaled as needed. Good sizes include 16x16, + * 32x32 and 48x48. + * + * @param[in] window The window whose icon to set. + * @param[in] count The number of images in the specified array, or zero to + * revert to the default window icon. + * @param[in] images The images to create the icon from. This is ignored if + * count is zero. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @remark @macos Regular windows do not have icons on macOS. This function + * will emit @ref GLFW_FEATURE_UNAVAILABLE. The dock icon will be the same as + * the application bundle's icon. For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @wayland There is no existing protocol to change an icon, the + * window will thus inherit the one defined in the application's desktop file. + * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_icon + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); + + /*! @brief Retrieves the position of the content area of the specified window. + * + * This function retrieves the position, in screen coordinates, of the + * upper-left corner of the content area of the specified window. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The window to query. + * @param[out] xpos Where to store the x-coordinate of the upper-left corner of + * the content area, or `NULL`. + * @param[out] ypos Where to store the y-coordinate of the upper-left corner of + * the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way for an application to retrieve the global + * position of its windows. This function will emit @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPos + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); + + /*! @brief Sets the position of the content area of the specified window. + * + * This function sets the position, in screen coordinates, of the upper-left + * corner of the content area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. + * + * __Do not use this function__ to move an already visible window unless you + * have very good reasons for doing so, as it will confuse and annoy the user. + * + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. + * + * @param[in] window The window to query. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way for an application to set the global + * position of its windows. This function will emit @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwGetWindowPos + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); + + /*! @brief Retrieves the size of the content area of the specified window. + * + * This function retrieves the size, in screen coordinates, of the content area + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose size to retrieve. + * @param[out] width Where to store the width, in screen coordinates, of the + * content area, or `NULL`. + * @param[out] height Where to store the height, in screen coordinates, of the + * content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSize + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); + + /*! @brief Sets the size limits of the specified window. + * + * This function sets the size limits of the content area of the specified + * window. If the window is full screen, the size limits only take effect + * once it is made windowed. If the window is not resizable, this function + * does nothing. + * + * The size limits are applied immediately to a windowed mode window and may + * cause it to be resized. + * + * The maximum dimensions must be greater than or equal to the minimum + * dimensions and all must be greater than or equal to zero. + * + * @param[in] window The window to set limits for. + * @param[in] minwidth The minimum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] minheight The minimum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] maxheight The maximum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The size limits will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowAspectRatio + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); + + /*! @brief Sets the aspect ratio of the specified window. + * + * This function sets the required aspect ratio of the content area of the + * specified window. If the window is full screen, the aspect ratio only takes + * effect once it is made windowed. If the window is not resizable, this + * function does nothing. + * + * The aspect ratio is specified as a numerator and a denominator and both + * values must be greater than zero. For example, the common 16:9 aspect ratio + * is specified as 16 and 9, respectively. + * + * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect + * ratio limit is disabled. + * + * The aspect ratio is applied immediately to a windowed mode window and may + * cause it to be resized. + * + * @param[in] window The window to set limits for. + * @param[in] numer The numerator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * @param[in] denom The denominator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The aspect ratio will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowSizeLimits + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); + + /*! @brief Sets the size of the content area of the specified window. + * + * This function sets the size, in screen coordinates, of the content area of + * the specified window. + * + * For full screen windows, this function updates the resolution of its desired + * video mode and switches to the video mode closest to it, without affecting + * the window's context. As the context is unaffected, the bit depths of the + * framebuffer remain unchanged. + * + * If you wish to update the refresh rate of the desired video mode in addition + * to its resolution, see @ref glfwSetWindowMonitor. + * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * + * @param[in] window The window to resize. + * @param[in] width The desired width, in screen coordinates, of the window + * content area. + * @param[in] height The desired height, in screen coordinates, of the window + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwGetWindowSize + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); + + /*! @brief Retrieves the size of the framebuffer of the specified window. + * + * This function retrieves the size, in pixels, of the framebuffer of the + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose framebuffer to query. + * @param[out] width Where to store the width, in pixels, of the framebuffer, + * or `NULL`. + * @param[out] height Where to store the height, in pixels, of the framebuffer, + * or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); + + /*! @brief Retrieves the size of the frame of the window. + * + * This function retrieves the size, in screen coordinates, of each edge of the + * frame of the specified window. This size includes the title bar, if the + * window has one. The size of the frame may vary depending on the + * [window-related hints](@ref window_hints_wnd) used to create it. + * + * Because this function retrieves the size of each window frame edge and not + * the offset along a particular coordinate axis, the retrieved values will + * always be zero or positive. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 3.1. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + + /*! @brief Retrieves the content scale for the specified window. + * + * This function retrieves the content scale for the specified window. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * On platforms where each monitors can have its own content scale, the window + * content scale will depend on which monitor the system considers the window + * to be on. + * + * @param[in] window The window to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * @sa @ref glfwGetMonitorContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); + + /*! @brief Returns the opacity of the whole window. + * + * This function returns the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. If the system + * does not support whole window transparency, this function always returns one. + * + * The initial opacity value for newly created windows is one. + * + * @param[in] window The window to query. + * @return The opacity value of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwSetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI float glfwGetWindowOpacity(GLFWwindow* window); + + /*! @brief Sets the opacity of the whole window. + * + * This function sets the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. + * + * The initial opacity value for newly created windows is one. + * + * A window created with framebuffer transparency may not use whole window + * transparency. The results of doing this are undefined. + * + * @param[in] window The window to set the opacity for. + * @param[in] opacity The desired opacity of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way to set an opacity factor for a window. + * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwGetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); + + /*! @brief Iconifies the specified window. + * + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, GLFW restores the original + * video mode of the monitor. The window's desired video mode is set again + * when the window is restored. + * + * @param[in] window The window to iconify. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Once a window is iconified, @ref glfwRestoreWindow won’t + * be able to restore it. This is a design decision of the xdg-shell + * protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwRestoreWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwIconifyWindow(GLFWwindow* window); + + /*! @brief Restores the specified window. + * + * This function restores the specified window if it was previously iconified + * (minimized) or maximized. If the window is already restored, this function + * does nothing. + * + * If the specified window is an iconified full screen window, its desired + * video mode is set again for its monitor when the window is restored. + * + * @param[in] window The window to restore. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwRestoreWindow(GLFWwindow* window); + + /*! @brief Maximizes the specified window. + * + * This function maximizes the specified window if it was previously not + * maximized. If the window is already maximized, this function does nothing. + * + * If the specified window is a full screen window, this function does nothing. + * + * @param[in] window The window to maximize. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwRestoreWindow + * + * @since Added in GLFW 3.2. + * + * @ingroup window + */ + SSCAPI void glfwMaximizeWindow(GLFWwindow* window); + + /*! @brief Makes the specified window visible. + * + * This function makes the specified window visible if it was previously + * hidden. If the window is already visible or is in full screen mode, this + * function does nothing. + * + * By default, windowed mode windows are focused when shown + * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint + * to change this behavior for all newly created windows, or change the + * behavior for an existing window with @ref glfwSetWindowAttrib. + * + * @param[in] window The window to make visible. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Because Wayland wants every frame of the desktop to be + * complete, this function does not immediately make the window visible. + * Instead it will become visible the next time the window framebuffer is + * updated after this call. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwHideWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwShowWindow(GLFWwindow* window); + + /*! @brief Hides the specified window. + * + * This function hides the specified window if it was previously visible. If + * the window is already hidden or is in full screen mode, this function does + * nothing. + * + * @param[in] window The window to hide. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwShowWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwHideWindow(GLFWwindow* window); + + /*! @brief Brings the specified window to front and sets input focus. + * + * This function brings the specified window to front and sets input focus. + * The window should already be visible and not iconified. + * + * By default, both windowed and full screen mode windows are focused when + * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to + * disable this behavior. + * + * Also by default, windowed mode windows are focused when shown + * with @ref glfwShowWindow. Set the + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. + * + * __Do not use this function__ to steal focus from other applications unless + * you are certain that is what the user wants. Focus stealing can be + * extremely disruptive. + * + * For a less disruptive way of getting the user's attention, see + * [attention requests](@ref window_attention). + * + * @param[in] window The window to give input focus. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland It is not possible for an application to set the input + * focus. This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * @sa @ref window_attention + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwFocusWindow(GLFWwindow* window); + + /*! @brief Requests user attention to the specified window. + * + * This function requests user attention to the specified window. On + * platforms where this is not supported, attention is requested to the + * application as a whole. + * + * Once the user has given attention, usually by focusing the window or + * application, the system will end the request automatically. + * + * @param[in] window The window to request attention to. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos Attention is requested to the application as a whole, not the + * specific window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attention + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwRequestWindowAttention(GLFWwindow* window); + + /*! @brief Returns the monitor that the window uses for full screen mode. + * + * This function returns the handle of the monitor that the specified window is + * in full screen on. + * + * @param[in] window The window to query. + * @return The monitor, or `NULL` if the window is in windowed mode or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); + + /*! @brief Sets the mode, monitor, video mode and placement of a window. + * + * This function sets the monitor that the window uses for full screen mode or, + * if the monitor is `NULL`, makes it windowed mode. + * + * When setting a monitor, this function updates the width, height and refresh + * rate of the desired video mode and switches to the video mode closest to it. + * The window position is ignored when setting a monitor. + * + * When the monitor is `NULL`, the position, width and height are used to + * place the window content area. The refresh rate is ignored when no monitor + * is specified. + * + * If you only wish to update the resolution of a full screen window or the + * size of a windowed mode window, see @ref glfwSetWindowSize. + * + * When a window transitions from full screen to windowed mode, this function + * restores any previous window settings such as whether it is decorated, + * floating, resizable, has size or aspect ratio limits, etc. + * + * @param[in] window The window whose monitor, size or video mode to set. + * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. + * @param[in] xpos The desired x-coordinate of the upper-left corner of the + * content area. + * @param[in] ypos The desired y-coordinate of the upper-left corner of the + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content + * area or video mode. + * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, + * or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise + * affected by any resizing or mode switching, although you may need to update + * your viewport if the framebuffer size has changed. + * + * @remark @wayland The desired window position is ignored, as there is no way + * for an application to set this property. + * + * @remark @wayland Setting the window to full screen will not attempt to + * change the mode, no matter what the requested size or refresh rate. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref window_full_screen + * @sa @ref glfwGetWindowMonitor + * @sa @ref glfwSetWindowSize + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); + + /*! @brief Returns an attribute of the specified window. + * + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. + * + * @param[in] window The window to query. + * @param[in] attrib The [window attribute](@ref window_attribs) whose value to + * return. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @remark Framebuffer related hints are not window attributes. See @ref + * window_attribs_fb for more information. + * + * @remark Zero is a valid value for many window and context related + * attributes so you cannot use a return value of zero as an indication of + * errors. However, this function should not fail as long as it is passed + * valid arguments and the library has been [initialized](@ref intro_init). + * + * @remark @wayland The Wayland protocol provides no way to check whether a + * window is iconfied, so @ref GLFW_ICONIFIED always returns `GLFW_FALSE`. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwSetWindowAttrib + * + * @since Added in version 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. + * + * @ingroup window + */ + SSCAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); + + /*! @brief Sets an attribute of the specified window. + * + * This function sets the value of an attribute of the specified window. + * + * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), + * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), + * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), + * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). + * [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_attrib) + * + * Some of these attributes are ignored for full screen windows. The new + * value will take effect if the window is later made windowed. + * + * Some of these attributes are ignored for windowed mode windows. The new + * value will take effect if the window is later made full screen. + * + * @param[in] window The window to set the attribute for. + * @param[in] attrib A supported window attribute. + * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @remark Calling @ref glfwGetWindowAttrib will always return the latest + * value, even if that value is ignored by the current mode of the window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwGetWindowAttrib + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); + + /*! @brief Sets the user pointer of the specified window. + * + * This function sets the user-defined pointer of the specified window. The + * current value is retained until the window is destroyed. The initial value + * is `NULL`. + * + * @param[in] window The window whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwGetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); + + /*! @brief Returns the user pointer of the specified window. + * + * This function returns the current value of the user-defined pointer of the + * specified window. The initial value is `NULL`. + * + * @param[in] window The window whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwSetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void* glfwGetWindowUserPointer(GLFWwindow* window); + + /*! @brief Sets the position callback for the specified window. + * + * This function sets the position callback of the specified window, which is + * called when the window is moved. The callback is provided with the + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland This callback will never be called, as there is no way for + * an application to know its global position. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); + + /*! @brief Sets the size callback for the specified window. + * + * This function sets the size callback of the specified window, which is + * called when the window is resized. The callback is provided with the size, + * in screen coordinates, of the content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ + SSCAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); + + /*! @brief Sets the close callback for the specified window. + * + * This function sets the close callback of the specified window, which is + * called when the user attempts to close the window, for example by clicking + * the close widget in the title bar. + * + * The close flag is set before this callback is called, but you can modify it + * at any time with @ref glfwSetWindowShouldClose. + * + * The close callback is not triggered by @ref glfwDestroyWindow. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @macos Selecting Quit from the application menu will trigger the + * close callback for all windows. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ + SSCAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); + + /*! @brief Sets the refresh callback for the specified window. + * + * This function sets the refresh callback of the specified window, which is + * called when the content area of the window needs to be redrawn, for example + * if the window has been exposed after having been covered by another window. + * + * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where + * the window contents are saved off-screen, this callback may be called only + * very infrequently or never at all. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ + SSCAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); + + /*! @brief Sets the focus callback for the specified window. + * + * This function sets the focus callback of the specified window, which is + * called when the window gains or loses input focus. + * + * After the focus callback is called for a window that lost input focus, + * synthetic key and mouse button release events will be generated for all such + * that had been pressed. For more information, see @ref glfwSetKeyCallback + * and @ref glfwSetMouseButtonCallback. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); + + /*! @brief Sets the iconify callback for the specified window. + * + * This function sets the iconification callback of the specified window, which + * is called when the window is iconified or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); + + /*! @brief Sets the maximize callback for the specified window. + * + * This function sets the maximization callback of the specified window, which + * is called when the window is maximized or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_maximize + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); + + /*! @brief Sets the framebuffer resize callback for the specified window. + * + * This function sets the framebuffer resize callback of the specified window, + * which is called when the framebuffer of the specified window is resized. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); + + /*! @brief Sets the window content scale callback for the specified window. + * + * This function sets the window content scale callback of the specified window, + * which is called when the content scale of the specified window changes. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); + + /*! @brief Processes all pending events. + * + * This function processes only those events that are already in the event + * queue and then returns immediately. Processing events will cause the window + * and input callbacks associated with those events to be called. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 1.0. + * + * @ingroup window + */ + SSCAPI void glfwPollEvents(void); + + /*! @brief Waits until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue. Once one or more events are available, + * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue + * are processed and the function then returns immediately. Processing events + * will cause the window and input callbacks associated with those events to be + * called. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 2.5. + * + * @ingroup window + */ + SSCAPI void glfwWaitEvents(void); + + /*! @brief Waits with timeout until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue, or until the specified timeout is reached. If + * one or more events are available, it behaves exactly like @ref + * glfwPollEvents, i.e. the events in the queue are processed and the function + * then returns immediately. Processing events will cause the window and input + * callbacks associated with those events to be called. + * + * The timeout value must be a positive finite number. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @param[in] timeout The maximum amount of time, in seconds, to wait. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEvents + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwWaitEventsTimeout(double timeout); + + /*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 3.1. + * + * @ingroup window + */ + SSCAPI void glfwPostEmptyEvent(void); + + /*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * @param[in] window The window to query. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI int glfwGetInputMode(GLFWwindow* window, int mode); + + /*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * - `GLFW_CURSOR_CAPTURED` makes the cursor visible and confines it to the + * content area of the window. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to + * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are + * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` + * the next time it is called even if the key had been released before the + * call. This is useful when you are only interested in whether keys have been + * pressed but not when or in which order. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. + * If sticky mouse buttons are enabled, a mouse button press will ensure that + * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even + * if the mouse button had been released before the call. This is useful when + * you are only interested in whether mouse buttons have been pressed but not + * when or in which order. + * + * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to + * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, + * callbacks that receive modifier bits will also have the @ref + * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, + * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. + * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_FEATURE_UNAVAILABLE. Call @ref + * glfwRawMouseMotionSupported to check for support. + * + * @param[in] window The window whose input mode to set. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * @param[in] value The new value of the specified input mode. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE (see above). + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwGetInputMode + * + * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. + * + * @ingroup input + */ + SSCAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); + + /*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwRawMouseMotionSupported(void); + + /*! @brief Returns the layout-specific name of the specified printable key. + * + * This function returns the name of the specified printable key, encoded as + * UTF-8. This is typically the character that key would produce without any + * modifier keys, intended for displaying key bindings to the user. For dead + * keys, it is typically the diacritic it would add to a character. + * + * __Do not use this function__ for [text input](@ref input_char). You will + * break text input for many languages even if it happens to work for yours. + * + * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, + * otherwise the scancode is ignored. If you specify a non-printable key, or + * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this + * function returns `NULL` but does not emit an error. + * + * This behavior allows you to always pass in the arguments in the + * [key callback](@ref input_key) without modification. + * + * The printable keys are: + * - `GLFW_KEY_APOSTROPHE` + * - `GLFW_KEY_COMMA` + * - `GLFW_KEY_MINUS` + * - `GLFW_KEY_PERIOD` + * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_SEMICOLON` + * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_LEFT_BRACKET` + * - `GLFW_KEY_RIGHT_BRACKET` + * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_WORLD_1` + * - `GLFW_KEY_WORLD_2` + * - `GLFW_KEY_0` to `GLFW_KEY_9` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` + * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` + * - `GLFW_KEY_KP_DECIMAL` + * - `GLFW_KEY_KP_DIVIDE` + * - `GLFW_KEY_KP_MULTIPLY` + * - `GLFW_KEY_KP_SUBTRACT` + * - `GLFW_KEY_KP_ADD` + * - `GLFW_KEY_KP_EQUAL` + * + * Names for printable keys depend on keyboard layout, while names for + * non-printable keys are the same across layouts but depend on the application + * language and should be localized along with other user interface text. + * + * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] scancode The scancode of the key to query. + * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key_name + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI const char* glfwGetKeyName(int key, int scancode); + + /*! @brief Returns the platform-specific scancode of the specified key. + * + * This function returns the platform-specific scancode of the specified key. + * + * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * method will return `-1`. + * + * @param[in] key Any [named key](@ref keys). + * @return The platform-specific scancode for the key, or `-1` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref input_key + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwGetKeyScancode(int key); + + /*! @brief Returns the last reported state of a keyboard key for the specified + * window. + * + * This function returns the last state reported for the specified key to the + * specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. The action `GLFW_REPEAT` is only reported to the key callback. + * + * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. + * + * The key functions deal with physical keys, with [key tokens](@ref keys) + * named after their use on the standard US keyboard layout. If you want to + * input text, use the Unicode character callback instead. + * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * + * __Do not use this function__ to implement [text input](@ref input_char). + * + * @param[in] window The desired window. + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ + SSCAPI int glfwGetKey(GLFWwindow* window, int key); + + /*! @brief Returns the last reported state of a mouse button for the specified + * window. + * + * This function returns the last state reported for the specified mouse button + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. + * + * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. + * + * @param[in] window The desired window. + * @param[in] button The desired [mouse button](@ref buttons). + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ + SSCAPI int glfwGetMouseButton(GLFWwindow* window, int button); + + /*! @brief Retrieves the position of the cursor relative to the content area of + * the window. + * + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the content area of the specified + * window. + * + * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor + * position is unbounded and limited only by the minimum and maximum values of + * a `double`. + * + * The coordinate can be converted to their integer equivalents with the + * `floor` function. Casting directly to an integer type works for positive + * coordinates, but fails for negative ones. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The desired window. + * @param[out] xpos Where to store the cursor x-coordinate, relative to the + * left edge of the content area, or `NULL`. + * @param[out] ypos Where to store the cursor y-coordinate, relative to the to + * top edge of the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPos + * + * @since Added in version 3.0. Replaces `glfwGetMousePos`. + * + * @ingroup input + */ + SSCAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); + + /*! @brief Sets the position of the cursor, relative to the content area of the + * window. + * + * This function sets the position, in screen coordinates, of the cursor + * relative to the upper-left corner of the content area of the specified + * window. The window must have input focus. If the window does not have + * input focus when this function is called, it fails silently. + * + * __Do not use this function__ to implement things like camera controls. GLFW + * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the + * cursor, transparently re-centers it and provides unconstrained cursor + * motion. See @ref glfwSetInputMode for more information. + * + * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is + * unconstrained and limited only by the minimum and maximum values of + * a `double`. + * + * @param[in] window The desired window. + * @param[in] xpos The desired x-coordinate, relative to the left edge of the + * content area. + * @param[in] ypos The desired y-coordinate, relative to the top edge of the + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland This function will only work when the cursor mode is + * `GLFW_CURSOR_DISABLED`, otherwise it will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwGetCursorPos + * + * @since Added in version 3.0. Replaces `glfwSetMousePos`. + * + * @ingroup input + */ + SSCAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); + + /*! @brief Creates a custom cursor. + * + * Creates a new custom cursor image that can be set for a window with @ref + * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. + * Any remaining cursors are destroyed by @ref glfwTerminate. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The cursor hotspot is specified in pixels, relative to the upper-left corner + * of the cursor image. Like all other coordinate systems in GLFW, the X-axis + * points to the right and the Y-axis points down. + * + * @param[in] image The desired cursor image. + * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. + * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. + * @return The handle of the created cursor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwDestroyCursor + * @sa @ref glfwCreateStandardCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + + /*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a standard shape, that can be set for a window with + * @ref glfwSetCursor. The images for these cursors come from the system + * cursor theme and their exact appearance will vary between platforms. + * + * Most of these shapes are guaranteed to exist on every supported platform but + * a few may not be present. See the table below for details. + * + * Cursor shape | Windows | macOS | X11 | Wayland + * ------------------------------ | ------- | ----- | ------ | ------- + * @ref GLFW_ARROW_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_IBEAM_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_CROSSHAIR_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_POINTING_HAND_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_EW_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_NS_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_NWSE_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 + * @ref GLFW_RESIZE_NESW_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 + * @ref GLFW_RESIZE_ALL_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_NOT_ALLOWED_CURSOR | Yes | Yes | Maybe2 | Maybe2 + * + * 1) This uses a private system API and may fail in the future. + * + * 2) This uses a newer standard that not all cursor themes support. + * + * If the requested shape is not available, this function emits a @ref + * GLFW_CURSOR_UNAVAILABLE error and returns `NULL`. + * + * @param[in] shape One of the [standard shapes](@ref shapes). + * @return A new cursor ready to use or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_CURSOR_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_standard + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWcursor* glfwCreateStandardCursor(int shape); + + /*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * If the specified cursor is current for any window, that window will be + * reverted to the default cursor. This does not affect the cursor mode. + * + * @param[in] cursor The cursor object to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI void glfwDestroyCursor(GLFWcursor* cursor); + + /*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * content area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @param[in] window The window to set the cursor for. + * @param[in] cursor The cursor to set, or `NULL` to switch back to the default + * arrow cursor. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + + /*! @brief Sets the key callback. + * + * This function sets the key callback of the specified window, which is called + * when a key is pressed, repeated or released. + * + * The key functions deal with physical keys, with layout independent + * [key tokens](@ref keys) named after their values in the standard US keyboard + * layout. If you want to input text, use the + * [character callback](@ref glfwSetCharCallback) instead. + * + * When a window loses input focus, it will generate synthetic key release + * events for all pressed keys. You can tell these events from user-generated + * events by the fact that the synthetic ones are generated after the focus + * loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * The scancode of a key is specific to that platform or sometimes even to that + * machine. Scancodes are intended to allow users to bind keys that don't have + * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their + * state is not saved and so it cannot be queried with @ref glfwGetKey. + * + * Sometimes GLFW needs to generate synthetic key events, in which case the + * scancode may be zero. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new key callback, or `NULL` to remove the currently + * set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ + SSCAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); + + /*! @brief Sets the Unicode character callback. + * + * This function sets the character callback of the specified window, which is + * called when a Unicode character is input. + * + * The character callback is intended for Unicode text input. As it deals with + * characters, it is keyboard layout dependent, whereas the + * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 + * to physical keys, as a key may produce zero, one or more characters. If you + * want to know whether a specific physical key was pressed or released, see + * the key callback instead. + * + * The character callback behaves as system text input normally does and will + * not be called if modifier keys are held down that would prevent normal text + * input on that platform, for example a Super (Command) key on macOS or Alt key + * on Windows. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ + SSCAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); + + /*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * window, which is called when a Unicode character is input regardless of what + * modifier keys are used. + * + * The character with modifiers callback is intended for implementing custom + * Unicode character input. For regular Unicode text input, see the + * [character callback](@ref glfwSetCharCallback). Like the character + * callback, the character with modifiers callback deals with characters and is + * keyboard layout dependent. Characters do not map 1:1 to physical keys, as + * a key may produce zero, one or more characters. If you want to know whether + * a specific physical key was pressed or released, see the + * [key callback](@ref glfwSetKeyCallback) instead. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or an + * [error](@ref error_handling) occurred. + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * + * @deprecated Scheduled for removal in version 4.0. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); + + /*! @brief Sets the mouse button callback. + * + * This function sets the mouse button callback of the specified window, which + * is called when a mouse button is pressed or released. + * + * When a window loses input focus, it will generate synthetic mouse button + * release events for all pressed mouse buttons. You can tell these events + * from user-generated events by the fact that the synthetic ones are generated + * after the focus loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ + SSCAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); + + /*! @brief Sets the cursor position callback. + * + * This function sets the cursor position callback of the specified window, + * which is called when the cursor is moved. The callback is provided with the + * position, in screen coordinates, relative to the upper-left corner of the + * content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. + * + * @ingroup input + */ + SSCAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); + + /*! @brief Sets the cursor enter/leave callback. + * + * This function sets the cursor boundary crossing callback of the specified + * window, which is called when the cursor enters or leaves the content area of + * the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); + + /*! @brief Sets the scroll callback. + * + * This function sets the scroll callback of the specified window, which is + * called when a scrolling device is used, such as a mouse wheel or scrolling + * area of a touchpad. + * + * The scroll callback receives all scrolling input, like that from a mouse + * wheel or a touchpad scrolling area. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. + * + * @ingroup input + */ + SSCAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); + + /*! @brief Sets the path drop callback. + * + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. + * + * Because the path array and its strings may have been generated specifically + * for that event, they are not guaranteed to be valid after the callback has + * returned. If you wish to use them after the callback returns, you need to + * make a deep copy. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland File drop is currently unimplemented. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); + + /*! @brief Returns whether the specified joystick is present. + * + * This function returns whether the specified joystick is present. + * + * There is no need to call this function before other functions that accept + * a joystick ID, as they all check for presence before performing any other + * work. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. + * + * @ingroup input + */ + SSCAPI int glfwJoystickPresent(int jid); + + /*! @brief Returns the values of all axes of the specified joystick. + * + * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of axis values, or `NULL` if the joystick is not present or + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. + * + * @ingroup input + */ + SSCAPI const float* glfwGetJoystickAxes(int jid, int* count); + + /*! @brief Returns the state of all buttons of the specified joystick. + * + * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. + * + * For backward compatibility with earlier versions that did not have @ref + * glfwGetJoystickHats, the button array also includes all hats, each + * represented as four buttons. The hats are in the same order as returned by + * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and + * _left_. To disable these extra buttons, set the @ref + * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of button states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in version 2.2. + * @glfw3 Changed to return a dynamic array. + * + * @ingroup input + */ + SSCAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); + + /*! @brief Returns the state of all hats of the specified joystick. + * + * This function returns the state of all hats of the specified joystick. + * Each element in the array is one of the following values: + * + * Name | Value + * ---- | ----- + * `GLFW_HAT_CENTERED` | 0 + * `GLFW_HAT_UP` | 1 + * `GLFW_HAT_RIGHT` | 2 + * `GLFW_HAT_DOWN` | 4 + * `GLFW_HAT_LEFT` | 8 + * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` + * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` + * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` + * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` + * + * The diagonal directions are bitwise combinations of the primary (up, right, + * down and left) directions and you can test for these individually by ANDing + * it with the corresponding direction. + * + * @code + * if (hats[2] & GLFW_HAT_RIGHT) + * { + * // State of hat 2 could be right-up, right or right-down + * } + * @endcode + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of hat states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of hat states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, this function is called again for that joystick or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_hat + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); + + /*! @brief Returns the name of the specified joystick. + * + * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI const char* glfwGetJoystickName(int jid); + + /*! @brief Returns the SDL compatible GUID of the specified joystick. + * + * This function returns the SDL compatible GUID, as a UTF-8 encoded + * hexadecimal string, of the specified joystick. The returned string is + * allocated and freed by GLFW. You should not free it yourself. + * + * The GUID is what connects a joystick to a gamepad mapping. A connected + * joystick will always have a GUID even if there is no gamepad mapping + * assigned to it. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to + * uniquely identify the make and model of a joystick but does not identify + * a specific unit, e.g. all wired Xbox 360 controllers will have the same + * GUID on that platform. The GUID for a unit may vary between platforms + * depending on what hardware information the platform specific APIs provide. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI const char* glfwGetJoystickGUID(int jid); + + /*! @brief Sets the user pointer of the specified joystick. + * + * This function sets the user-defined pointer of the specified joystick. The + * current value is retained until the joystick is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwGetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI void glfwSetJoystickUserPointer(int jid, void* pointer); + + /*! @brief Returns the user pointer of the specified joystick. + * + * This function returns the current value of the user-defined pointer of the + * specified joystick. The initial value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwSetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI void* glfwGetJoystickUserPointer(int jid); + + /*! @brief Returns whether the specified joystick has a gamepad mapping. + * + * This function returns whether the specified joystick is both present and has + * a gamepad mapping. + * + * If the specified joystick is present but does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check if a joystick is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwJoystickIsGamepad(int jid); + + /*! @brief Sets the joystick configuration callback. + * + * This function sets the joystick configuration callback, or removes the + * currently set callback. This is called when a joystick is connected to or + * disconnected from the system. + * + * For joystick connection and disconnection events to be delivered on all + * platforms, you need to call one of the [event processing](@ref events) + * functions. Joystick disconnection may also be detected and the callback + * called by joystick functions. The function will then return whatever it + * returns if the joystick is not present. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_event + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); + + /*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. + * + * This function parses the specified ASCII encoded string and updates the + * internal list with any gamepad mappings it finds. This string may + * contain either a single gamepad mapping or many mappings separated by + * newlines. The parser supports the full format of the `gamecontrollerdb.txt` + * source file including empty lines and comments. + * + * See @ref gamepad_mapping for a description of the format. + * + * If there is already a gamepad mapping for a given GUID in the internal list, + * it will be replaced by the one passed to this function. If the library is + * terminated and re-initialized the internal list will revert to the built-in + * default. + * + * @param[in] string The string containing the gamepad mappings. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * @sa @ref glfwGetGamepadName + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwUpdateGamepadMappings(const char* string); + + /*! @brief Returns the human-readable gamepad name for the specified joystick. + * + * This function returns the human-readable name of the gamepad from the + * gamepad mapping assigned to the specified joystick. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `NULL` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the gamepad, or `NULL` if the + * joystick is not present, does not have a mapping or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref GLFW_INVALID_ENUM. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, the gamepad mappings are updated or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI const char* glfwGetGamepadName(int jid); + + /*! @brief Retrieves the state of the specified joystick remapped as a gamepad. + * + * This function retrieves the state of the specified joystick remapped to + * an Xbox-like gamepad. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * The Guide button may not be available for input as it is often hooked by the + * system or the Steam client. + * + * Not all devices have all the buttons or axes provided by @ref + * GLFWgamepadstate. Unavailable buttons and axes will always report + * `GLFW_RELEASE` and 0.0 respectively. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] state The gamepad input state of the joystick. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is + * connected, it has no gamepad mapping or an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwUpdateGamepadMappings + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); + + /*! @brief Sets the clipboard to the specified string. + * + * This function sets the system clipboard to the specified, UTF-8 encoded + * string. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwGetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); + + /*! @brief Returns the contents of the clipboard as a string. + * + * This function returns the contents of the system clipboard, if it contains + * or is convertible to a UTF-8 encoded string. If the clipboard is empty or + * if its contents cannot be converted, `NULL` is returned and a @ref + * GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwSetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI const char* glfwGetClipboardString(GLFWwindow* window); + + /*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. + * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each operating system. + * + * @return The current time, in seconds, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwSetTime. + * + * @sa @ref time + * + * @since Added in version 1.0. + * + * @ingroup input + */ + SSCAPI double glfwGetTime(void); + + /*! @brief Sets the GLFW time. + * + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * @param[in] time The new value, in seconds. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @remark The upper limit of GLFW time is calculated as + * floor((264 - 1) / 109) and is due to implementations + * storing nanoseconds in 64 bits. The limit may be increased in the future. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwGetTime. + * + * @sa @ref time + * + * @since Added in version 2.2. + * + * @ingroup input + */ + SSCAPI void glfwSetTime(double time); + + /*! @brief Returns the current value of the raw timer. + * + * This function returns the current value of the raw timer, measured in + * 1 / frequency seconds. To get the frequency, call @ref + * glfwGetTimerFrequency. + * + * @return The value of the timer, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerFrequency + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI uint64_t glfwGetTimerValue(void); + + /*! @brief Returns the frequency, in Hz, of the raw timer. + * + * This function returns the frequency, in Hz, of the raw timer. + * + * @return The frequency of the timer, in Hz, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerValue + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI uint64_t glfwGetTimerFrequency(void); + + /*! @brief Makes the context of the specified window current for the calling + * thread. + * + * This function makes the OpenGL or OpenGL ES context of the specified window + * current on the calling thread. A context must only be made current on + * a single thread at a time and each thread can have only a single current + * context at a time. + * + * When moving a context between threads, you must make it non-current on the + * old thread before making it current on the new one. + * + * By default, making a context non-current implicitly forces a pipeline flush. + * On machines that support `GL_KHR_context_flush_control`, you can control + * whether a context performs this flush by setting the + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) + * hint. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * @param[in] window The window whose context to make current, or `NULL` to + * detach the current context. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwGetCurrentContext + * + * @since Added in version 3.0. + * + * @ingroup context + */ + SSCAPI void glfwMakeContextCurrent(GLFWwindow* window); + + /*! @brief Returns the window whose context is current on the calling thread. + * + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. + * + * @return The window whose context is current, or `NULL` if no window's + * context is current. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwMakeContextCurrent + * + * @since Added in version 3.0. + * + * @ingroup context + */ + SSCAPI GLFWwindow* glfwGetCurrentContext(void); + + /*! @brief Swaps the front and back buffers of the specified window. + * + * This function swaps the front and back buffers of the specified window when + * rendering with OpenGL or OpenGL ES. If the swap interval is greater than + * zero, the GPU driver waits the specified number of screen updates before + * swapping the buffers. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see `vkQueuePresentKHR` instead. + * + * @param[in] window The window whose buffers to swap. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark __EGL:__ The context of the specified window must be current on the + * calling thread. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapInterval + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSwapBuffers(GLFWwindow* window); + + /*! @brief Sets the swap interval for the current context. + * + * This function sets the swap interval for the current OpenGL or OpenGL ES + * context, i.e. the number of screen updates to wait from the time @ref + * glfwSwapBuffers was called before swapping the buffers and returning. This + * is sometimes called _vertical synchronization_, _vertical retrace + * synchronization_ or just _vsync_. + * + * A context that supports either of the `WGL_EXT_swap_control_tear` and + * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap + * intervals, which allows the driver to swap immediately even if a frame + * arrives a little bit late. You can check for these extensions with @ref + * glfwExtensionSupported. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see the present mode of your swapchain instead. + * + * @param[in] interval The minimum number of screen updates to wait for + * until the buffers are swapped by @ref glfwSwapBuffers. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark This function is not called during context creation, leaving the + * swap interval set to whatever is the default for that API. This is done + * because some swap interval extensions used by GLFW do not allow the swap + * interval to be reset to zero once it has been set to a non-zero value. + * + * @remark Some GPU drivers do not honor the requested swap interval, either + * because of a user setting that overrides the application's request or due to + * bugs in the driver. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapBuffers + * + * @since Added in version 1.0. + * + * @ingroup context + */ + SSCAPI void glfwSwapInterval(int interval); + + /*! @brief Returns whether the specified extension is available. + * + * This function returns whether the specified + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for client API extension and context + * creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * As this functions retrieves and searches one or more extension strings each + * call, it is recommended that you cache its results if it is going to be used + * frequently. The extension strings will not change during the lifetime of + * a context, so there is no danger in doing this. + * + * This function does not apply to Vulkan. If you are using Vulkan, see @ref + * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` + * and `vkEnumerateDeviceExtensionProperties` instead. + * + * @param[in] extension The ASCII encoded name of the extension. + * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 1.0. + * + * @ingroup context + */ + SSCAPI int glfwExtensionSupported(const char* extension); + + /*! @brief Returns the address of the specified function for the current + * context. + * + * This function returns the address of the specified OpenGL or OpenGL ES + * [core or extension function](@ref context_glext), if it is supported + * by the current context. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and + * `vkGetDeviceProcAddr` instead. + * + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark The address of a given function is not guaranteed to be the same + * between contexts. + * + * @remark This function may return a non-`NULL` address despite the + * associated version or extension not being available. Always check the + * context version or extension string first. + * + * @pointer_lifetime The returned function pointer is valid until the context + * is destroyed or the library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwExtensionSupported + * + * @since Added in version 1.0. + * + * @ingroup context + */ + SSCAPI GLFWglproc glfwGetProcAddress(const char* procname); + + /*! @brief Returns whether the Vulkan loader and an ICD have been found. + * + * This function returns whether the Vulkan loader and any minimally functional + * ICD have been found. + * + * The availability of a Vulkan loader and even an ICD does not by itself guarantee that + * surface creation or even instance creation is possible. Call @ref + * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan + * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to + * check whether a queue family of a physical device supports image presentation. + * + * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_support + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI int glfwVulkanSupported(void); + + /*! @brief Returns the Vulkan instance extensions required by GLFW. + * + * This function returns an array of names of Vulkan instance extensions required + * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the + * list will always contain `VK_KHR_surface`, so if you don't require any + * additional extensions you can pass this list directly to the + * `VkInstanceCreateInfo` struct. + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * If Vulkan is available but no set of extensions allowing window surface + * creation was found, this function returns `NULL`. You may still use Vulkan + * for off-screen rendering and compute work. + * + * @param[out] count Where to store the number of extensions in the returned + * array. This is set to zero if an error occurred. + * @return An array of ASCII encoded extension names, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @remark Additional extensions may be required by future versions of GLFW. + * You should check if any extensions you wish to enable are already in the + * returned array, as it is an error to specify an extension more than once in + * the `VkInstanceCreateInfo` struct. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_ext + * @sa @ref glfwCreateWindowSurface + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); + +#if defined(VK_VERSION_1_0) + + /*! @brief Returns the address of the specified Vulkan instance function. + * + * This function returns the address of the specified Vulkan core or extension + * function for the specified instance. If instance is set to `NULL` it can + * return any function exported from the Vulkan loader, including at least the + * following functions: + * + * - `vkEnumerateInstanceExtensionProperties` + * - `vkEnumerateInstanceLayerProperties` + * - `vkCreateInstance` + * - `vkGetInstanceProcAddr` + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * This function is equivalent to calling `vkGetInstanceProcAddr` with + * a platform-specific query of the Vulkan loader as a fallback. + * + * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve + * functions related to instance creation. + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @pointer_lifetime The returned function pointer is valid until the library + * is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_proc + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); + + /*! @brief Returns whether the specified queue family can present images. + * + * This function returns whether the specified queue family of the specified + * physical device supports presentation to the platform GLFW was built for. + * + * If Vulkan or the required window surface creation instance extensions are + * not available on the machine, or if the specified instance was not created + * with the required extensions, this function returns `GLFW_FALSE` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available and @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * @param[in] instance The instance that the physical device belongs to. + * @param[in] device The physical device that the queue family belongs to. + * @param[in] queuefamily The index of the queue family to query. + * @return `GLFW_TRUE` if the queue family supports presentation, or + * `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function currently always returns `GLFW_TRUE`, as the + * `VK_MVK_macos_surface` and `VK_EXT_metal_surface` extensions do not provide + * a `vkGetPhysicalDevice*PresentationSupport` type function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_present + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); + + /*! @brief Creates a Vulkan surface for the specified window. + * + * This function creates a Vulkan surface for the specified window. + * + * If the Vulkan loader or at least one minimally functional ICD were not found, + * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref + * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether + * Vulkan is at least minimally available. + * + * If the required window surface creation instance extensions are not + * available or if the specified instance was not created with these extensions + * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * The window surface cannot be shared with another API so the window must + * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) + * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error + * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. + * + * The window surface must be destroyed before the specified Vulkan instance. + * It is the responsibility of the caller to destroy the window surface. GLFW + * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the + * surface. + * + * @param[in] instance The Vulkan instance to create the surface in. + * @param[in] window The window to create the surface for. + * @param[in] allocator The allocator to use, or `NULL` to use the default + * allocator. + * @param[out] surface Where to store the handle of the surface. This is set + * to `VK_NULL_HANDLE` if an error occurred. + * @return `VK_SUCCESS` if successful, or a Vulkan error code if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE + * + * @remark If an error occurs before the creation call is made, GLFW returns + * the Vulkan error code most appropriate for the error. Appropriate use of + * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should + * eliminate almost all occurrences of these errors. + * + * @remark @macos GLFW prefers the `VK_EXT_metal_surface` extension, with the + * `VK_MVK_macos_surface` extension as a fallback. The name of the selected + * extension, if any, is included in the array returned by @ref + * glfwGetRequiredInstanceExtensions. + * + * @remark @macos This function creates and sets a `CAMetalLayer` instance for + * the window content view, which is required for MoltenVK to function. + * + * @remark @x11 By default GLFW prefers the `VK_KHR_xcb_surface` extension, + * with the `VK_KHR_xlib_surface` extension as a fallback. You can make + * `VK_KHR_xlib_surface` the preferred extension by setting the + * [GLFW_X11_XCB_VULKAN_SURFACE](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint) init + * hint. The name of the selected extension, if any, is included in the array + * returned by @ref glfwGetRequiredInstanceExtensions. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_surface + * @sa @ref glfwGetRequiredInstanceExtensions + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +#endif /*VK_VERSION_1_0*/ + + + /************************************************************************* + * Global definition cleanup + *************************************************************************/ + + /* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ + +#ifdef GLFW_WINGDIAPI_DEFINED +#undef WINGDIAPI +#undef GLFW_WINGDIAPI_DEFINED +#endif + +#ifdef GLFW_CALLBACK_DEFINED +#undef CALLBACK +#undef GLFW_CALLBACK_DEFINED +#endif + +/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally + * defined by some gl.h variants (OpenBSD) so define it after if needed. + */ +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#define GLFW_GLAPIENTRY_DEFINED +#endif + + /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_h_ */ + diff --git a/内核源代码/StgSharp.C/glfw3native.h b/内核源代码/StgSharp.C/glfw3native.h new file mode 100644 index 00000000..a97c9840 --- /dev/null +++ b/内核源代码/StgSharp.C/glfw3native.h @@ -0,0 +1,632 @@ +/************************************************************************* + * GLFW 3.4 - www.glfw->org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2018 Camilla Löwy org> + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_native_h_ +#define _glfw3_native_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3native.h + * @brief The header of the native access functions. + * + * This is the header file of the native access functions. See @ref native for + * more information. + */ +/*! @defgroup native Native access + * @brief Functions related to accessing native handles. + * + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** + * + * Before the inclusion of @ref glfw3native.h, you may define zero or more + * window system API macro and zero or more context creation API macros. + * + * The chosen backends must match those the library was compiled for. Failure + * to do this will cause a link-time error. + * + * The available window API macros are: + * * `GLFW_EXPOSE_NATIVE_WIN32` + * * `GLFW_EXPOSE_NATIVE_COCOA` + * * `GLFW_EXPOSE_NATIVE_X11` + * * `GLFW_EXPOSE_NATIVE_WAYLAND` + * + * The available context API macros are: + * * `GLFW_EXPOSE_NATIVE_WGL` + * * `GLFW_EXPOSE_NATIVE_NSGL` + * * `GLFW_EXPOSE_NATIVE_GLX` + * * `GLFW_EXPOSE_NATIVE_EGL` + * * `GLFW_EXPOSE_NATIVE_OSMESA` + * + * These macros select which of the native access functions that are declared + * and which platform-specific headers to include. It is then up your (by + * definition platform-specific) code to handle which of these should be + * defined. + * + * If you do not want the platform-specific headers to be included, define + * `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header. + * + * @code + * #define GLFW_EXPOSE_NATIVE_WIN32 + * #define GLFW_EXPOSE_NATIVE_WGL + * #define GLFW_NATIVE_INCLUDE_NONE + * #include + * @endcode + */ + +/************************************************************************* + * System headers and types + *************************************************************************/ + +#if !defined(GLFW_NATIVE_INCLUDE_NONE) + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) +/* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + * example to allow applications to correctly declare a GL_KHR_debug callback) + * but windows.h assumes no one will define APIENTRY before it does + */ +#if defined(GLFW_APIENTRY_DEFINED) +#undef APIENTRY +#undef GLFW_APIENTRY_DEFINED +#endif +#include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) +#if defined(__OBJC__) +#import +#else +#include +#include +#endif +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) +#include +#include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +#include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/* WGL is declared by windows.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/* NSGL is declared by Cocoa.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, glx.h will include gl.h, which will define it unconditionally + */ +#if defined(GLFW_GLAPIENTRY_DEFINED) +#undef GLAPIENTRY +#undef GLFW_GLAPIENTRY_DEFINED +#endif +#include +#endif +#if defined(GLFW_EXPOSE_NATIVE_EGL) +#include +#endif +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, osmesa.h will include gl.h, which will define it unconditionally + */ +#if defined(GLFW_GLAPIENTRY_DEFINED) +#undef GLAPIENTRY +#undef GLFW_GLAPIENTRY_DEFINED +#endif +#include +#endif + +#endif /*GLFW_NATIVE_INCLUDE_NONE*/ + +/************************************************************************* + * Functions + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI const char *glfwGetWin32Adapter(GLFWmonitor *monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI const char *glfwGetWin32Monitor(GLFWmonitor *monitor); + +/*! @brief Returns the `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI HWND glfwGetWin32Window(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/*! @brief Returns the `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI HGLRC glfwGetWGLContext(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor); + +/*! @brief Returns the `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI id glfwGetCocoaWindow(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/*! @brief Returns the `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI id glfwGetNSGLContext(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) +/*! @brief Returns the `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI Display *glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI RROutput glfwGetX11Monitor(GLFWmonitor *monitor); + +/*! @brief Returns the `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI Window glfwGetX11Window(GLFWwindow *window); + +/*! @brief Sets the current primary selection to the specified string. + * + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwGetX11SelectionString + * @sa glfwSetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI void glfwSetX11SelectionString(const char *string); + +/*! @brief Returns the contents of the current primary selection as a string. + * + * If the selection is empty or if its contents cannot be converted, `NULL` + * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @return The contents of the selection as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the + * library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwSetX11SelectionString + * @sa glfwGetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI const char *glfwGetX11SelectionString(void); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/*! @brief Returns the `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI GLXContext glfwGetGLXContext(GLFWwindow *window); + +/*! @brief Returns the `GLXWindow` of the specified window. + * + * @return The `GLXWindow` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI GLXWindow glfwGetGLXWindow(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +/*! @brief Returns the `struct wl_display*` used by GLFW. + * + * @return The `struct wl_display*` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI struct wl_display *glfwGetWaylandDisplay(void); + +/*! @brief Returns the `struct wl_output*` of the specified monitor. + * + * @return The `struct wl_output*` of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI struct wl_output *glfwGetWaylandMonitor(GLFWmonitor *monitor); + +/*! @brief Returns the main `struct wl_surface*` of the specified window. + * + * @return The main `struct wl_surface*` of the specified window, or `NULL` if + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI struct wl_surface *glfwGetWaylandWindow(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_EGL) +/*! @brief Returns the `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark Because EGL is initialized on demand, this function will return + * `EGL_NO_DISPLAY` until the first context has been created via EGL. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI EGLDisplay glfwGetEGLDisplay(void); + +/*! @brief Returns the `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI EGLContext glfwGetEGLContext(GLFWwindow *window); + +/*! @brief Returns the `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI EGLSurface glfwGetEGLSurface(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/*! @brief Retrieves the color buffer associated with the specified window. + * + * @param[in] window The window whose color buffer to retrieve. + * @param[out] width Where to store the width of the color buffer, or `NULL`. + * @param[out] height Where to store the height of the color buffer, or `NULL`. + * @param[out] format Where to store the OSMesa pixel format of the color + * buffer, or `NULL`. + * @param[out] buffer Where to store the address of the color buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI int glfwGetOSMesaColorBuffer(GLFWwindow *window, int *width, int *height, int *format, + void **buffer); + +/*! @brief Retrieves the depth buffer associated with the specified window. + * + * @param[in] window The window whose depth buffer to retrieve. + * @param[out] width Where to store the width of the depth buffer, or `NULL`. + * @param[out] height Where to store the height of the depth buffer, or `NULL`. + * @param[out] bytesPerValue Where to store the number of bytes per depth + * buffer element, or `NULL`. + * @param[out] buffer Where to store the address of the depth buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI int glfwGetOSMesaDepthBuffer(GLFWwindow *window, int *width, int *height, int *bytesPerValue, + void **buffer); + +/*! @brief Returns the `OSMesaContext` of the specified window. + * + * @return The `OSMesaContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow *window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_native_h_ */ diff --git a/内核源代码/StgSharp.C/hash.c b/内核源代码/StgSharp.C/hash.c new file mode 100644 index 00000000..c0762b4a --- /dev/null +++ b/内核源代码/StgSharp.C/hash.c @@ -0,0 +1,51 @@ +#include "ssc_intrinsic.h" +#include "StgSharpC.h" + +static inline uint32_t fmix32(uint32_t h); + +INTERNAL int SSCDECL city_hash_simplify(byte const *str, int const length) +{ + uint32_t hash = length, size = length << 1; + byte *end = str + size, *ptr = str; + + if (size < 4) { + for (; ptr < end; ptr += 2) { + hash = _mm_crc32_u16(hash, *ptr); + } + } else if (size < 16) { + byte *last = end - 4; + for (; ptr < end; ptr += 4) { + hash = _mm_crc32_u32(hash, *(uint32_t *)ptr); + } + for (; ptr < end; ptr++) { + hash = _mm_crc32_u16(hash, *ptr); + } + } else { + byte *last_128 = end - 16, *last_32 = end - 4; + uint64_t hash64 = size; + for (; ptr < last_128; ptr += 16) { + __m128i vec = _mm_loadu_si32((int *)ptr); + hash64 = _mm_crc32_u64(hash64, _mm_extract_epi64(vec, 0)); + hash64 = _mm_crc32_u64(hash64, _mm_extract_epi64(vec, 1)); + } + hash = _mm_crc32_u8(hash, hash64); + hash = _mm_crc32_u8(hash, hash64 >> 32); + for (; ptr < last_32; ptr += 4) { + hash = _mm_crc32_u32(hash,*(uint32_t *)ptr); + } + for (; ptr < end; ptr += 2) { + hash = _mm_crc32_u8(hash,*ptr); + } + } + return fmix32(hash); +} + +INTERNAL inline uint32_t fmix32(uint32_t h) +{ + h ^= h >> 16; + h *= 0x85ebca6b; + h ^= h >> 13; + h *= 0xc2b2ae35; + h ^= h >> 16; + return h; +} diff --git a/内核源代码/StgSharp.C/intrinsic.c b/内核源代码/StgSharp.C/intrinsic.c new file mode 100644 index 00000000..61c9f526 --- /dev/null +++ b/内核源代码/StgSharp.C/intrinsic.c @@ -0,0 +1,134 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" +#include + +#ifdef _MSC_VER +#include +#include +#else +#include +#endif // _MSC_VER + +PRIVATE void load_intrinsic_sse(ssc_intrinsic *context); +PRIVATE void load_intrinsic_avx(ssc_intrinsic *context); +PRIVATE void load_intrinsic_512(ssc_intrinsic *context); + +PRIVATE int check_isa(most_advanced_instruction instruction_family) +{ + if (instruction_family != NEON) { +#if _MSC_VER + return __check_isa_support(instruction_family, 0); +#else + switch (instruction_family) { + case SSE: + return __builtin_cpu_supports("sse4.2"); + case AVX256: + return __builtin_cpu_supports("avx2"); + case AVX512: + return __builtin_cpu_supports("avx512f"); + default: + return 0; + } +#endif // _MSC_VER + } + +#if defined(__ARM_NEON) || defined(__ARM_NEON__) + return 1; +#else + return 0; +#endif +} + +SSCAPI int load_intrinsic_function(void *intrinsic_context) +{ + ssc_null_assert(intrinsic_context); + + ssc_intrinsic *context = (ssc_intrinsic *)intrinsic_context; + + if (check_isa(AVX512)) { + load_intrinsic_512(context); + return 3; + } else if (check_isa(AVX256)) { + load_intrinsic_avx(context); + return 2; + } else if (check_isa(SSE)) { + load_intrinsic_sse(context); + return 1; + } else if (check_isa(NEON)) { + return -1; + } + + return 0; +} + +void load_intrinsic_sse(ssc_intrinsic *context) +{ + context->add_m2 = addmatrix2_sse; + context->add_m3 = addmatrix3_sse; + context->add_m4 = addmatrix4_sse; + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->dot_31 = dot_31_sse; + context->dot_32 = dot_32_sse; + context->dot_41 = dot_41_sse; + context->dot_42 = dot_42_sse; + context->dot_43 = dot_43_sse; + context->city_hash_simplify = city_hash_simplify; +} + +void load_intrinsic_avx(ssc_intrinsic *context) +{ + context->add_m2 = addmatrix2_avx; + context->add_m3 = addmatrix3_avx; + context->add_m4 = addmatrix4_avx; + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->dot_31 = dot_31_avx; + context->dot_32 = dot_32_avx; + context->dot_41 = dot_41_avx; + context->dot_42 = dot_42_avx; + context->dot_43 = dot_43_avx; + context->city_hash_simplify = city_hash_simplify; +} + +void load_intrinsic_512(ssc_intrinsic *context) +{ + context->add_m2 = addmatrix2_avx; + context->add_m3 = addmatrix3_512; + context->add_m4 = addmatrix4_512; + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->dot_31 = dot_31_avx; + context->dot_32 = dot_32_avx; + context->dot_41 = dot_41_avx; + context->dot_42 = dot_42_avx; + context->dot_43 = dot_43_avx; + context->city_hash_simplify = city_hash_simplify; +} diff --git a/内核源代码/StgSharp.C/khrplatform.h b/内核源代码/StgSharp.C/khrplatform.h new file mode 100644 index 00000000..5cd17f65 --- /dev/null +++ b/内核源代码/StgSharp.C/khrplatform.h @@ -0,0 +1,310 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +#define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) +/* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +#define KHRONOS_APICALL +#elif defined(_WIN32) +#define KHRONOS_APICALL __declspec(dllimport) +#elif defined(__SYMBIAN32__) +#define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +#define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +#define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) +/* Win32 but not WinCE */ +#define KHRONOS_APIENTRY __stdcall +#else +#define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined(__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || \ + defined(__SCO__) || defined(__USLC__) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/内核源代码/StgSharp.C/mat2.c b/内核源代码/StgSharp.C/mat2.c new file mode 100644 index 00000000..211b1eab --- /dev/null +++ b/内核源代码/StgSharp.C/mat2.c @@ -0,0 +1,42 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" + +INTERNAL void __cdecl transpose23(__2_columnset *source, __3_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); +} + +INTERNAL void __cdecl transpose24(__2_columnset *source, __4_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL void __cdecl addmatrix2_sse(__2_columnset *left, __2_columnset *right, __2_columnset *ans) +{ + __m128 temp0 = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + __m128 temp1 = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + _mm_storeu_ps(&ans->m[0][0], temp0); + _mm_storeu_ps(&ans->m[0][1], temp1); +} + +INTERNAL void __cdecl addmatrix2_avx(__2_columnset *left, __2_columnset *right, __2_columnset *ans) +{ + __m256 temp = _mm256_add_ps(ALIGN256(left->column[0]), ALIGN256(right->column[0])); + _mm256_storeu_ps(&ans->m[0][0], temp); +} diff --git a/内核源代码/StgSharp.C/mat3.c b/内核源代码/StgSharp.C/mat3.c new file mode 100644 index 00000000..b9dfeef6 --- /dev/null +++ b/内核源代码/StgSharp.C/mat3.c @@ -0,0 +1,104 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" +#include + +INTERNAL void _cdecl transpose32(__3_columnset *source, __2_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL void _cdecl transpose33(__3_columnset *source, __3_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); +} + +INTERNAL void _cdecl transpose34(__3_columnset *source, __4_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2) +{ + //let adding row aligned + __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + //let sub row aligned + __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); + __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); + + //multple all add row + __m128 cache = _mm_mul_ps(c0, addc1); + cache = _mm_mul_ps(cache, addc2); + + //multiple all sub row + __m128 sub = _mm_mul_ps(c0, subc1); + sub = _mm_mul_ps(sub, subc2); + + //main-corner sub sub-corner + cache = _mm_sub_ps(cache, sub); + + __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + return ret.m128_f32[2]; +} + +INTERNAL float _cdecl det_mat3(__3_columnset *source, __3_columnset *transpose) +{ + return det_mat3_internal(source->column[0], source->column[1], source->column[2]); +} + +#pragma region add + +INTERNAL void __cdecl addmatrix3_sse(__3_columnset *left, __3_columnset *right, __3_columnset *ans) +{ + __m128 temp0 = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + __m128 temp1 = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + __m128 temp2 = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + _mm_storeu_ps(&ans->m[0][0], temp0); + _mm_storeu_ps(&ans->m[0][1], temp1); + _mm_storeu_ps(&ans->m[0][2], temp2); +} + +INTERNAL void __cdecl addmatrix3_avx(__3_columnset *left, __3_columnset *right, __3_columnset *ans) +{ + __m256 temp0 = _mm256_add_ps(ALIGN256(left->part), ALIGN256(right->part)); + __m128 temp1 = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + _mm256_storeu_ps(&ans->m[0][0], temp0); + _mm_storeu_ps(&ans->m[0][2], temp1); +} + +INTERNAL void __cdecl addmatrix3_512(__3_columnset *left, __3_columnset *right, __3_columnset *ans) +{ + __m512 temp = _mm512_add_ps(_mm512_loadu_ps(left), _mm512_loadu_ps(right)); + _mm512_mask_store_ps(ans, 0x0fff, temp); +} + +#pragma endregion diff --git a/内核源代码/StgSharp.C/mat4.c b/内核源代码/StgSharp.C/mat4.c new file mode 100644 index 00000000..5ddd28f6 --- /dev/null +++ b/内核源代码/StgSharp.C/mat4.c @@ -0,0 +1,84 @@ + +#include "StgSharpC.h" +#include "ssc_intrinsic.h" +#include +#include + +INTERNAL void __cdecl transpose42(__4_columnset const *source, __2_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL void __cdecl transpose43(__4_columnset const *source, __3_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); +} + +INTERNAL void __cdecl transpose44(__4_columnset const *source, __4_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL float __cdecl det_mat4(__4_columnset const *mat_ptr, __4_columnset const *transpose) +{ + __m128 mc0 = ALIGN(mat_ptr->column[0]); + __m128 mc1 = ALIGN(mat_ptr->column[1]); + __m128 mc2 = ALIGN(mat_ptr->column[2]); + __m128 mc3 = ALIGN(mat_ptr->column[3]); + + __m128 cogeneration = + _mm_set_ps(det_mat3_internal(mc0, mc1, mc2), det_mat3_internal(mc0, mc1, mc3), + det_mat3_internal(mc0, mc2, mc3), det_mat3_internal(mc1, mc2, mc3)); + __m128 retvec = _mm_mul_ps(ALIGN(transpose->column[3]), cogeneration); + retvec = _mm_hsub_ps(retvec, retvec); + retvec = _mm_hadd_ps(retvec, retvec); + return -retvec.m128_f32[0]; +} + +INTERNAL void SSCDECL addmatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans) +{ + ans->column[0] = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + ans->column[1] = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + ans->column[2] = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + ans->column[3] = _mm_add_ps(ALIGN(left->column[3]), ALIGN(right->column[3])); +} + +INTERNAL void SSCDECL addmatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans) +{ + ans->half[0] = _mm256_add_ps(ALIGN256(left->half[0]), ALIGN256(right->half[0])); + ans->half[1] = _mm256_add_ps(ALIGN256(left->half[1]), ALIGN256(right->half[1])); +} + +INTERNAL void SSCDECL addmatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans) +{ + ans->stream = _mm512_add_ps(ALIGN512(left->stream), ALIGN512(right->stream)); +} diff --git a/内核源代码/StgSharp.C/ssc_framework.h b/内核源代码/StgSharp.C/ssc_framework.h new file mode 100644 index 00000000..6449593b --- /dev/null +++ b/内核源代码/StgSharp.C/ssc_framework.h @@ -0,0 +1,7 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#if _WIN32 + +#endif // __WIN32 diff --git a/内核源代码/StgSharp.C/ssc_internal.h b/内核源代码/StgSharp.C/ssc_internal.h new file mode 100644 index 00000000..164b7ced --- /dev/null +++ b/内核源代码/StgSharp.C/ssc_internal.h @@ -0,0 +1,37 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#include "xmmintrin.h" +/* +#include "GLAD/gl.h" +#include "glfw3.h" +#include "StgSharpC.h" +*/ + +#ifndef SSC_INTERNAL +#define SSC_INTERNAL + +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS 1 +#define WIN32_LEAN_AND_MEAN +#define SSCDECL __cdecl +#define SSCAPI __declspec(dllexport) +#define FORCEINLINE __forceinline +#include +#elif defined(__clang__) || defined(__GNUC__) +#define SSCDECL __attribute__((cdecl)) +#define SSCAPI __attribute__((dllexport)) +#define FORCEINLINE __attribute__((always_inline)) +#else +#define SSCAPI +#define SSCDECL +#define FORCEINLINE +#endif + +#define SSCAPI_DEFINE + +#define PRIVATE static +#define INTERNAL extern + +#endif // diff --git a/内核源代码/StgSharp.C/ssc_intrinsic.h b/内核源代码/StgSharp.C/ssc_intrinsic.h new file mode 100644 index 00000000..b15511b2 --- /dev/null +++ b/内核源代码/StgSharp.C/ssc_intrinsic.h @@ -0,0 +1,149 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef SSC_INTRIN +#define SSC_INTRIN + +#include "StgSharpC.h" +#include +#include + +#ifdef _MSC_VER +#include +#include +#endif + +#define LASTTWO(x) (x & 3) +#define LAST(x) (x & 3) +#define get_align_begin(x) ((x + 15) & (~15)) + +#define SSE_INSERT(source, target, reset3, reset2, reset1, reset0) \ + (LASTTWO(source - 1) << 6) | (LASTTWO(target - 1) << 4) | (LAST(reset3) << 3) | \ + (LAST(reset2) << 2) | (LAST(reset1) << 1) | LAST(reset0) +#define SSE_INSERT_SIMPLE(source, target) SSE_INSERT(source, target, 0, 0, 0, 0) +#define M256_PERMUTE(s3, s2, s1, s0) (LASTTWO(s3) << 6) | (LASTTWO(s2) << 4) | (LASTTWO(s1) << 2) | (LASTTWO(s0) + +#define zero_vec _mm_setzero_ps() +#define zero_vec_256 _mm256_setzero_ps() + +typedef union uint64_u { + uint64_t u64; + uint32_t u32[2]; +}uint64_u; + +typedef union column_2 { + __m256 stream; + __m128 column[2]; + float m[4][2]; +} __2_columnset; + +typedef union column_3 { + __m256 part; + __m128 column[3]; + float m[4][3]; +} __3_columnset; + +typedef union column_4 { + __m512 stream; + __m256 half[2]; + __m128 column[4]; + float m[4][4]; +} __4_columnset; + +typedef void(SSCDECL *VECTORNORMALIZEPROC)(__m128 *source, __m128 *target); +typedef void(SSCDECL *DOTPROC)(void *transpose, __m128 *vector, __m128 *ans); +typedef void(SSCDECL *MATRIXTRANSPOSEPROC)(void *source, void *target); +typedef void(SSCDECL *MATRIXDETPROC)(void *mat, void *transpose); +typedef void(SSCDECL *MATARITHMETIC)(void *left, void *right, void *ans); +typedef void(SSCDECL *SCALERMATARITHMETIC)(void *left, void *right, void *ans); + +#pragma region matix function + +INTERNAL void normalize(__m128 *source, __m128 *target); + +INTERNAL void SSCDECL addmatrix2_sse(__2_columnset *left, __2_columnset *right, __2_columnset *ans); +INTERNAL void SSCDECL addmatrix2_avx(__2_columnset *left, __2_columnset *right, __2_columnset *ans); +INTERNAL void SSCDECL transpose23(__2_columnset const *source, __3_columnset *target); +INTERNAL void SSCDECL transpose24(__2_columnset const *source, __4_columnset *target); + +INTERNAL void SSCDECL addmatrix3_sse(__3_columnset *left, __3_columnset *right, __3_columnset *ans); +INTERNAL void SSCDECL addmatrix3_avx(__3_columnset *left, __3_columnset *right, __3_columnset *ans); +INTERNAL void SSCDECL addmatrix3_512(__3_columnset *left, __3_columnset *right, __3_columnset *ans); +INTERNAL void SSCDECL transpose32(__3_columnset const *source, __2_columnset *target); +INTERNAL void SSCDECL transpose33(__3_columnset const *source, __3_columnset *target); +INTERNAL void SSCDECL transpose34(__3_columnset const *source, __4_columnset *target); +INTERNAL float SSCDECL det_mat3(__3_columnset *matrix, __3_columnset *tranpose); + +INTERNAL void SSCDECL addmatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans); +INTERNAL void SSCDECL addmatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans); +INTERNAL void SSCDECL addmatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans); +INTERNAL void SSCDECL transpose42(__4_columnset const *source, __2_columnset *target); +INTERNAL void SSCDECL transpose43(__4_columnset const *source, __3_columnset *target); +INTERNAL void SSCDECL transpose44(__4_columnset const *source, __4_columnset *target); +INTERNAL float SSCDECL det_mat4(__4_columnset *matrix, __4_columnset *transpose); + +#pragma endregion + +#pragma region dot + +INTERNAL void FORCEINLINE SSCDECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void FORCEINLINE SSCDECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void FORCEINLINE SSCDECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void FORCEINLINE SSCDECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans); + +INTERNAL void SSCDECL dot_32_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_32_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_42_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_42_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); + +INTERNAL void SSCDECL dot_43_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_43_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_43_512(__4_columnset *transpose, __m128 *vector, __m128 *ans); + +#pragma endregion + +#pragma region quick_hash + +INTERNAL int city_hash_simplify(byte const *str, int length); + +#pragma endregion + +typedef struct ssc_intrinsic { + MATARITHMETIC add_m2; + MATARITHMETIC add_m3; + MATARITHMETIC add_m4; + int (*city_hash_simplify)(byte *str, int length); + MATRIXDETPROC det_matrix33; + MATRIXDETPROC det_matrix44; + DOTPROC dot_31; + DOTPROC dot_32; + DOTPROC dot_41; + DOTPROC dot_42; + DOTPROC dot_43; + VECTORNORMALIZEPROC normalize_3; + MATRIXTRANSPOSEPROC transpose_23; + MATRIXTRANSPOSEPROC transpose_24; + MATRIXTRANSPOSEPROC transpose_32; + MATRIXTRANSPOSEPROC transpose_33; + MATRIXTRANSPOSEPROC transpose_34; + MATRIXTRANSPOSEPROC transpose_42; + MATRIXTRANSPOSEPROC transpose_43; + MATRIXTRANSPOSEPROC transpose_44; +} ssc_intrinsic; + +typedef enum most_advanced_instruction { +#ifdef _MSC_VER + SSE = __IA_SUPPORT_SSE42, + AVX256 = __IA_SUPPORT_VECTOR256, + AVX512 = __IA_SUPPORT_VECTOR512, + NEON +#else + SSE, + AVX256, + AVX512, + NEON +#endif +} most_advanced_instruction; + +#endif // !SSC_INTRIN diff --git a/内核源代码/StgSharp.C/stb_image.c b/内核源代码/StgSharp.C/stb_image.c new file mode 100644 index 00000000..3c2d25a2 --- /dev/null +++ b/内核源代码/StgSharp.C/stb_image.c @@ -0,0 +1,8475 @@ +#include "stb_image.h" + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) || \ + defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) || \ + defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) || \ + defined(STBI_ONLY_ZLIB) +#ifndef STBI_ONLY_JPEG +#define STBI_NO_JPEG +#endif +#ifndef STBI_ONLY_PNG +#define STBI_NO_PNG +#endif +#ifndef STBI_ONLY_BMP +#define STBI_NO_BMP +#endif +#ifndef STBI_ONLY_PSD +#define STBI_NO_PSD +#endif +#ifndef STBI_ONLY_TGA +#define STBI_NO_TGA +#endif +#ifndef STBI_ONLY_GIF +#define STBI_NO_GIF +#endif +#ifndef STBI_ONLY_HDR +#define STBI_NO_HDR +#endif +#ifndef STBI_ONLY_PIC +#define STBI_NO_PIC +#endif +#ifndef STBI_ONLY_PNM +#define STBI_NO_PNM +#endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + +#ifndef _MSC_VER +#ifdef __cplusplus +#define stbi_inline inline +#else +#define stbi_inline +#endif +#else +#define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS +#if defined(__cplusplus) && __cplusplus >= 201103L +#define STBI_THREAD_LOCAL thread_local +#elif defined(__GNUC__) && __GNUC__ < 5 +#define STBI_THREAD_LOCAL __thread +#elif defined(_MSC_VER) +#define STBI_THREAD_LOCAL __declspec(thread) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) +#define STBI_THREAD_LOCAL _Thread_local +#endif + +#ifndef STBI_THREAD_LOCAL +#if defined(__GNUC__) +#define STBI_THREAD_LOCAL __thread +#endif +#endif +#endif + +#if defined(_MSC_VER) || defined(__SYMBIAN32__) +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL +#define stbi_lrot(x, y) _lrotl(x, y) +#else +#define stbi_lrot(x, y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && \ + (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && \ + !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p, newsz) realloc(p, newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p, oldsz, newsz) STBI_REALLOC(p, newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && \ + !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info, 1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax, 1 + cpuid + mov res, edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct { + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *)buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *)buffer + len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int)fread(data, 1, size, (FILE *)user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE *)user, n, SEEK_CUR); + ch = fgetc((FILE *)user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *)user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE *)user) || ferror((FILE *)user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = { + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *)f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum { STBI_ORDER_RGB, STBI_ORDER_BGR }; + +typedef struct { + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, + int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL + STBI_THREAD_LOCAL +#endif + const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) + return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) + return 0; + if (b == 0) + return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX / b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || \ + !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + stbi__addsizes_valid(a * b * c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || \ + !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) + return NULL; + return stbi__malloc(a * b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) + return NULL; + return stbi__malloc(a * b * c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) + return NULL; + return stbi__malloc(a * b * c * d + add); +} +#endif + +// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +static int stbi__addints_valid(int a, int b) +{ + if ((a >= 0) != (b >= 0)) + return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) + return a >= + INT_MIN - + b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; +} + +// returns 1 if the product of two signed shorts is valid, 0 on overflow. +static int stbi__mul2shorts_valid(short a, short b) +{ + if (b == 0 || b == -1) + return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) + return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid + if (b < 0) + return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS +#define stbi__err(x, y) 0 +#elif defined(STBI_FAILURE_USERMSG) +#define stbi__err(x, y) stbi__err(y) +#else +#define stbi__err(x, y) stbi__err(x) +#endif + +#define stbi__errpf(x, y) ((float *)(size_t)(stbi__err(x, y) ? NULL : NULL)) +#define stbi__errpuc(x, y) ((unsigned char *)(size_t)(stbi__err(x, y) ? NULL : NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load \ + (stbi__vertically_flip_on_load_set ? stbi__vertically_flip_on_load_local : \ + stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri, int bpc) +{ + memset(ri, 0, + sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = + STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) +#ifndef STBI_NO_PNG + if (stbi__png_test(s)) + return stbi__png_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) + return stbi__bmp_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_GIF + if (stbi__gif_test(s)) + return stbi__gif_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_PSD + if (stbi__psd_test(s)) + return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc); +#else + STBI_NOTUSED(bpc); +#endif +#ifndef STBI_NO_PIC + if (stbi__pic_test(s)) + return stbi__pic_load(s, x, y, comp, req_comp, ri); +#endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later +#ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) + return stbi__jpeg_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) + return stbi__pnm_load(s, x, y, comp, req_comp, ri); +#endif + +#ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } +#endif + +#ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s, x, y, comp, req_comp, ri); +#endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *)stbi__malloc(img_len); + if (reduced == NULL) + return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = + (stbi_uc)((orig[i] >> 8) & + 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *)stbi__malloc(img_len * 2); + if (enlarged == NULL) + return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = + (stbi__uint16)((orig[i] << 8) + + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h >> 1); row++) { + stbi_uc *row0 = bytes + row * bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1) * bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, + int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *)result, *x, *y, + req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *)result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, + int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *)result, *x, *y, + req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *)result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, + unsigned long flags, + const char *str, int cbmb, + wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte( + unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, + int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t *input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int)bufferlen, NULL, + NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, + sizeof(wFilename) / sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, + sizeof(wMode) / sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f = 0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) + return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f, x, y, comp, req_comp); + fclose(f); + return result; +} + +STBIDEF void stbi_load_to_target(char const *filename, int *x, int *y, stbi_uc *target, int *comp, + int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) { + *target = "can't fopen, Unable to open file"; + return; + } + result = stbi_load_from_file(f, x, y, comp, req_comp); + fclose(f); +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s, f); + result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s, f); + result = stbi__load_and_postprocess_16bit(&s, x, y, comp, req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) + return (stbi_us *)stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f, x, y, comp, req_comp); + fclose(f); + return result; +} + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, + int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, + int req_comp) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, + int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s, buffer, len); + + result = (unsigned char *)stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices(result, *x, *y, *z, *comp); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; +#ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s, x, y, comp, req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data, x, y, comp, req_comp); + return hdr_data; + } +#endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, + int req_comp) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__loadf_main(&s, x, y, comp, req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__loadf_main(&s, x, y, comp, req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) + return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f, x, y, comp, req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s, f); + return stbi__loadf_main(&s, x, y, comp, req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ +#ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__hdr_test(&s); +#else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; +#endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result = 0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ +#ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s, f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; +#else + STBI_NOTUSED(f); + return 0; +#endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ +#ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__hdr_test(&s); +#else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; +#endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma = 2.2f, stbi__l2h_scale = 1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) +{ + stbi__l2h_gamma = gamma; +} +STBIDEF void stbi_ldr_to_hdr_scale(float scale) +{ + stbi__l2h_scale = scale; +} +#endif + +static float stbi__h2l_gamma_i = 1.0f / 2.2f, stbi__h2l_scale_i = 1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) +{ + stbi__h2l_gamma_i = 1 / gamma; +} +STBIDEF void stbi_hdr_to_ldr_scale(float scale) +{ + stbi__h2l_scale_i = 1 / scale; +} + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum { STBI__SCAN_load = 0, STBI__SCAN_type, STBI__SCAN_header }; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data, (char *)s->buffer_start, s->buflen); + s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + 1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) + return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) + return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && \ + defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && \ + defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) + return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int)(s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int)(s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char *)buffer + blen, n - blen); + res = (count == (n - blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer + n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc)((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && \ + defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && \ + defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && \ + defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && \ + defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, + unsigned int x, unsigned int y) +{ + int i, j; + unsigned char *good; + + if (req_comp == img_n) + return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *)stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j = 0; j < (int)y; ++j) { + unsigned char *src = data + j * x * img_n; + unsigned char *dest = good + j * x * req_comp; + +#define STBI__COMBO(a, b) ((a) * 8 + (b)) +#define STBI__CASE(a, b) \ + case STBI__COMBO(a, b): \ + for (i = x - 1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1, 2) + { + dest[0] = src[0]; + dest[1] = 255; + } + break; + STBI__CASE(1, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(1, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = 255; + } + break; + STBI__CASE(2, 1) + { + dest[0] = src[0]; + } + break; + STBI__CASE(2, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(2, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = src[1]; + } + break; + STBI__CASE(3, 4) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = 255; + } + break; + STBI__CASE(3, 1) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + } + break; + STBI__CASE(3, 2) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + dest[1] = 255; + } + break; + STBI__CASE(4, 1) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + } + break; + STBI__CASE(4, 2) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + dest[1] = src[3]; + } + break; + STBI__CASE(4, 3) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + } + break; + default: + STBI_ASSERT(0); + STBI_FREE(data); + STBI_FREE(good); + return stbi__errpuc("unsupported", "Unsupported format conversion"); + } +#undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, + unsigned int x, unsigned int y) +{ + int i, j; + stbi__uint16 *good; + + if (req_comp == img_n) + return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *)stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory"); + } + + for (j = 0; j < (int)y; ++j) { + stbi__uint16 *src = data + j * x * img_n; + stbi__uint16 *dest = good + j * x * req_comp; + +#define STBI__COMBO(a, b) ((a) * 8 + (b)) +#define STBI__CASE(a, b) \ + case STBI__COMBO(a, b): \ + for (i = x - 1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1, 2) + { + dest[0] = src[0]; + dest[1] = 0xffff; + } + break; + STBI__CASE(1, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(1, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = 0xffff; + } + break; + STBI__CASE(2, 1) + { + dest[0] = src[0]; + } + break; + STBI__CASE(2, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(2, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = src[1]; + } + break; + STBI__CASE(3, 4) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = 0xffff; + } + break; + STBI__CASE(3, 1) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + } + break; + STBI__CASE(3, 2) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + dest[1] = 0xffff; + } + break; + STBI__CASE(4, 1) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + } + break; + STBI__CASE(4, 2) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + dest[1] = src[3]; + } + break; + STBI__CASE(4, 3) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + } + break; + default: + STBI_ASSERT(0); + STBI_FREE(data); + STBI_FREE(good); + return (stbi__uint16 *)stbi__errpuc("unsupported", + "Unsupported format conversion"); + } +#undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i, k, n; + float *output; + if (!data) + return NULL; + output = (float *)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { + STBI_FREE(data); + return stbi__errpf("outofmem", "Out of memory"); + } + // compute number of non-alpha components + if (comp & 1) + n = comp; + else + n = comp - 1; + for (i = 0; i < x * y; ++i) { + for (k = 0; k < n; ++k) { + output[i * comp + k] = + (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * + stbi__l2h_scale); + } + } + if (n < comp) { + for (i = 0; i < x * y; ++i) { + output[i * comp + n] = data[i * comp + n] / 255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int)(x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i, k, n; + stbi_uc *output; + if (!data) + return NULL; + output = (stbi_uc *)stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + // compute number of non-alpha components + if (comp & 1) + n = comp; + else + n = comp - 1; + for (i = 0; i < x * y; ++i) { + for (k = 0; k < n; ++k) { + float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, + stbi__h2l_gamma_i) * + 255 + + 0.5f; + if (z < 0) + z = 0; + if (z > 255) + z = 255; + output[i * comp + k] = (stbi_uc)stbi__float2int(z); + } + if (k < comp) { + float z = data[i * comp + k] * 255 + 0.5f; + if (z < 0) + z = 0; + if (z > 255) + z = 255; + output[i * comp + k] = (stbi_uc)stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct { + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct { + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + + // sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + + // definition of jpeg image component + struct { + int id; + int h, v; + int tq; + int hd, ha; + int dc_pred; + + int x, y, w2, h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + + // kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, + const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i, j, k = 0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i = 0; i < 16; ++i) { + for (j = 0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc)(i + 1); + if (k >= 257) + return stbi__err("bad size list", "Corrupt JPEG"); + } + } + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for (j = 1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16)(code++); + if (code - 1 >= (1u << j)) + return stbi__err("bad code lengths", "Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16 - j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i = 0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS - s); + int m = 1 << (FAST_BITS - s); + for (j = 0; j < m; ++j) { + h->fast[c + j] = (stbi_uc)i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i = 0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> + (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) + k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) + c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char)c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, + 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535 }; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c, k; + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k = FAST_BITS + 1;; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if (c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == + h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) + return 0; // ran out of bits from stream, return 0s intead of continuing + + sgn = j->code_buffer >> + 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) + return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) + return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = { + 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, + 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, + stbi__huffman *hac, stbi__int16 *fac, int b, + stbi__uint16 *dequant) +{ + int diff, dc, k; + int t; + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) + return stbi__err("bad huffman code", "Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data, 0, 64 * sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) + return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short)(dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c, r, s; + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) + return stbi__err("bad huffman code", + "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) + return stbi__err("bad huffman code", "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) + break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff, dc; + int t; + if (j->spec_end != 0) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data, 0, + 64 * sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) + return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short)(dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short)(1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, + stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c, r, s; + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) + return stbi__err( + "bad huffman code", + "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) + return stbi__err("bad huffman code", "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = + (short)(stbi__extend_receive(j, s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short)(1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit) == 0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r, s; + int rs = stbi__jpeg_huff_decode( + j, + hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) + return stbi__err("bad huffman code", "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) + return stbi__err("bad huffman code", + "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit) == 0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short)s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int)x > 255) { + if (x < 0) + return 0; + if (x > 255) + return 255; + } + return (stbi_uc)x; +} + +#define stbi__f2f(x) ((int)(((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0, s1, s2, s3, s4, s5, s6, s7) \ + int t0, t1, t2, t3, p1, p2, p3, p4, p5, x0, x1, x2, x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2 + p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3 * stbi__f2f(-1.847759065f); \ + t3 = p1 + p2 * stbi__f2f(0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2 + p3); \ + t1 = stbi__fsh(p2 - p3); \ + x0 = t0 + t3; \ + x3 = t0 - t3; \ + x1 = t1 + t2; \ + x2 = t1 - t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0 + t2; \ + p4 = t1 + t3; \ + p1 = t0 + t3; \ + p2 = t1 + t2; \ + p5 = (p3 + p4) * stbi__f2f(1.175875602f); \ + t0 = t0 * stbi__f2f(0.298631336f); \ + t1 = t1 * stbi__f2f(2.053119869f); \ + t2 = t2 * stbi__f2f(3.072711026f); \ + t3 = t3 * stbi__f2f(1.501321110f); \ + p1 = p5 + p1 * stbi__f2f(-0.899976223f); \ + p2 = p5 + p2 * stbi__f2f(-2.562915447f); \ + p3 = p3 * stbi__f2f(-1.961570560f); \ + p4 = p4 * stbi__f2f(-0.390180644f); \ + t3 += p1 + p4; \ + t2 += p2 + p3; \ + t1 += p2 + p4; \ + t0 += p1 + p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i, val[64], *v = val; + stbi_uc *o; + short *d = data; + + // columns + for (i = 0; i < 8; ++i, ++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 && d[40] == 0 && + d[48] == 0 && d[56] == 0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0] * 4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; + x1 += 512; + x2 += 512; + x3 += 512; + v[0] = (x0 + t3) >> 10; + v[56] = (x0 - t3) >> 10; + v[8] = (x1 + t2) >> 10; + v[48] = (x1 - t2) >> 10; + v[16] = (x2 + t1) >> 10; + v[40] = (x2 - t1) >> 10; + v[24] = (x3 + t0) >> 10; + v[32] = (x3 - t0) >> 10; + } + } + + for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128 << 17); + x1 += 65536 + (128 << 17); + x2 += 65536 + (128 << 17); + x3 += 65536 + (128 << 17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0 + t3) >> 17); + o[7] = stbi__clamp((x0 - t3) >> 17); + o[1] = stbi__clamp((x1 + t2) >> 17); + o[6] = stbi__clamp((x1 - t2) >> 17); + o[2] = stbi__clamp((x2 + t1) >> 17); + o[5] = stbi__clamp((x2 - t1) >> 17); + o[3] = stbi__clamp((x3 + t0) >> 17); + o[4] = stbi__clamp((x3 - t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y +#define dct_const(x, y) _mm_setr_epi16((x), (y), (x), (y), (x), (y), (x), (y)) + +// out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +// out(1) = c1[even]*x + c1[odd]*y +#define dct_rot(out0, out1, x, y, c0, c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x), (y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x), (y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) +#define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add +#define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub +#define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack +#define dct_bfly32o(out0, out1, a, b, bias, s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) +#define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) +#define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + +#define dct_pass(bias, shift) \ + { \ + /* even part */ \ + dct_rot(t2e, t3e, row2, row6, rot0_0, rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o, y2o, row7, row3, rot2_0, rot2_1); \ + dct_rot(y1o, y3o, row5, row1, rot3_0, rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o, y5o, sum17, sum35, rot1_0, rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0, row7, x0, x7, bias, shift); \ + dct_bfly32o(row1, row6, x1, x6, bias, shift); \ + dct_bfly32o(row2, row5, x2, x5, bias, shift); \ + dct_bfly32o(row3, row4, x3, x4, bias, shift); \ + } + + __m128i rot0_0 = + dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = + dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), + stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), + stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), + stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), + stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), + stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), + stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); + + // load + row0 = _mm_load_si128((const __m128i *)(data + 0 * 8)); + row1 = _mm_load_si128((const __m128i *)(data + 1 * 8)); + row2 = _mm_load_si128((const __m128i *)(data + 2 * 8)); + row3 = _mm_load_si128((const __m128i *)(data + 3 * 8)); + row4 = _mm_load_si128((const __m128i *)(data + 4 * 8)); + row5 = _mm_load_si128((const __m128i *)(data + 5 * 8)); + row6 = _mm_load_si128((const __m128i *)(data + 6 * 8)); + row7 = _mm_load_si128((const __m128i *)(data + 7 * 8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *)out, p0); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p0, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p2); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p2, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p1); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p1, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p3); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + + // wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0, out1, a, b, shiftop, s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0, row7, x0, x7, shiftop, shift); \ + dct_bfly32o(row1, row6, x1, x6, shiftop, shift); \ + dct_bfly32o(row2, row5, x2, x5, shiftop, shift); \ + dct_bfly32o(row3, row4, x3, x4, shiftop, shift); \ + } + + // load + row0 = vld1q_s16(data + 0 * 8); + row1 = vld1q_s16(data + 1 * 8); + row2 = vld1q_s16(data + 2 * 8); + row3 = vld1q_s16(data + 3 * 8); + row4 = vld1q_s16(data + 4 * 8); + row5 = vld1q_s16(data + 5 * 8); + row6 = vld1q_s16(data + 6 * 8); + row7 = vld1q_s16(data + 7 * 8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { + // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. + // whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) \ + { \ + int16x8x2_t t = vtrnq_s16(x, y); \ + x = t.val[0]; \ + y = t.val[1]; \ + } +#define dct_trn32(x, y) \ + { \ + int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); \ + x = vreinterpretq_s16_s32(t.val[0]); \ + y = vreinterpretq_s16_s32(t.val[1]); \ + } +#define dct_trn64(x, y) \ + { \ + int16x8_t x0 = x; \ + int16x8_t y0 = y; \ + x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); \ + y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); \ + } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) \ + { \ + uint8x8x2_t t = vtrn_u8(x, y); \ + x = t.val[0]; \ + y = t.val[1]; \ + } +#define dct_trn8_16(x, y) \ + { \ + uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); \ + x = vreinterpret_u8_u16(t.val[0]); \ + y = vreinterpret_u8_u16(t.val[1]); \ + } +#define dct_trn8_32(x, y) \ + { \ + uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); \ + x = vreinterpret_u8_u32(t.val[0]); \ + y = vreinterpret_u8_u32(t.val[1]); \ + } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); + out += out_stride; + vst1_u8(out, p1); + out += out_stride; + vst1_u8(out, p2); + out += out_stride; + vst1_u8(out, p3); + out += out_stride; + vst1_u8(out, p4); + out += out_stride; + vst1_u8(out, p5); + out += out_stride; + vst1_u8(out, p6); + out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { + x = j->marker; + j->marker = STBI__MARKER_none; + return x; + } + x = stbi__get8(j->s); + if (x != 0xff) + return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = + j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i, j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block( + z, data, z->huff_dc + z->img_comp[n].hd, + z->huff_ac + ha, z->fast_ac[ha], n, + z->dequant[z->img_comp[n].tq])) + return 0; + z->idct_block_kernel(z->img_comp[n].data + + z->img_comp[n].w2 * j * 8 + + i * 8, + z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i, j, k, x, y; + STBI_SIMD_ALIGN(short, data[64]); + for (j = 0; j < z->img_mcu_y; ++j) { + for (i = 0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k = 0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y = 0; y < z->img_comp[n].v; ++y) { + for (x = 0; x < z->img_comp[n].h; ++x) { + int x2 = + (i * z->img_comp[n].h + x) * + 8; + int y2 = + (j * z->img_comp[n].v + y) * + 8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block( + z, data, + z->huff_dc + + z->img_comp[n] + .hd, + z->huff_ac + ha, + z->fast_ac[ha], n, + z->dequant[z->img_comp[n] + .tq])) + return 0; + z->idct_block_kernel( + z->img_comp[n].data + + z->img_comp[n].w2 * + y2 + + x2, + z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i, j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + short *data = z->img_comp[n].coeff + + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc( + z, data, &z->huff_dc[z->img_comp[n].hd], + n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac( + z, data, &z->huff_ac[ha], + z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i, j, k, x, y; + for (j = 0; j < z->img_mcu_y; ++j) { + for (i = 0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k = 0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y = 0; y < z->img_comp[n].v; ++y) { + for (x = 0; x < z->img_comp[n].h; ++x) { + int x2 = (i * z->img_comp[n].h + x); + int y2 = (j * z->img_comp[n].v + y); + short *data = + z->img_comp[n].coeff + + 64 * (x2 + + y2 * z->img_comp[n] + .coeff_w); + if (!stbi__jpeg_decode_block_prog_dc( + z, data, + &z->huff_dc[z->img_comp[n] + .hd], + n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i = 0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i, j, n; + for (n = 0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + short *data = z->img_comp[n].coeff + + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data + + z->img_comp[n].w2 * j * 8 + + i * 8, + z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker", "Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) + return stbi__err("bad DRI len", "Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s) - 2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15, i; + if (p != 0 && p != 1) + return stbi__err("bad DQT type", "Corrupt JPEG"); + if (t > 3) + return stbi__err("bad DQT table", "Corrupt JPEG"); + + for (i = 0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = + (stbi__uint16)(sixteen ? stbi__get16be(z->s) : + stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L == 0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s) - 2; + while (L > 0) { + stbi_uc *v; + int sizes[16], i, n = 0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) + return stbi__err("bad DHT header", "Corrupt JPEG"); + for (i = 0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if (n > 256) + return stbi__err( + "bad DHT header", + "Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc + th, sizes)) + return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac + th, sizes)) + return 0; + v = z->huff_ac[th].values; + } + for (i = 0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L == 0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len", "Corrupt JPEG"); + else + return stbi__err("bad APP len", "Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = { 'J', 'F', 'I', 'F', '\0' }; + int ok = 1; + int i; + for (i = 0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = { 'A', 'd', 'o', 'b', 'e', '\0' }; + int ok = 1; + int i; + for (i = 0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker", "Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) + return stbi__err("bad SOS component count", "Corrupt JPEG"); + if (Ls != 6 + 2 * z->scan_n) + return stbi__err("bad SOS len", "Corrupt JPEG"); + for (i = 0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) + return 0; // no match + z->img_comp[which].hd = q >> 4; + if (z->img_comp[which].hd > 3) + return stbi__err("bad DC huff", "Corrupt JPEG"); + z->img_comp[which].ha = q & 15; + if (z->img_comp[which].ha > 3) + return stbi__err("bad AC huff", "Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || + z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) + return stbi__err("bad SOS", "Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) + return stbi__err("bad SOS", "Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i = 0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf, p, i, q, h_max = 1, v_max = 1, c; + Lf = stbi__get16be(s); + if (Lf < 11) + return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG + p = stbi__get8(s); + if (p != 8) + return stbi__err("only 8-bit", + "JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); + if (s->img_y == 0) + return stbi__err( + "no header height", + "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); + if (s->img_x == 0) + return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) + return stbi__err("bad component count", "Corrupt JPEG"); + s->img_n = c; + for (i = 0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8 + 3 * s->img_n) + return stbi__err("bad SOF len", "Corrupt JPEG"); + + z->rgb = 0; + for (i = 0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); + if (!z->img_comp[i].h || z->img_comp[i].h > 4) + return stbi__err("bad H", "Corrupt JPEG"); + z->img_comp[i].v = q & 15; + if (!z->img_comp[i].v || z->img_comp[i].v > 4) + return stbi__err("bad V", "Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); + if (z->img_comp[i].tq > 3) + return stbi__err("bad TQ", "Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) + return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) + return stbi__err("too large", "Image too large to decode"); + + for (i = 0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) + h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) + v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i = 0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) + return stbi__err("bad H", "Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) + return stbi__err("bad V", "Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; + + for (i = 0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = + stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i + 1, + stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc *)(((size_t)z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3( + z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components( + z, i + 1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = + (short *)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) + return stbi__err("no SOI", "Corrupt JPEG"); + if (scan == STBI__SCAN_type) + return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z, m)) + return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) + return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) + return 0; + return 1; +} + +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) +{ + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) + return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } + } + return STBI__MARKER_none; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) + return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) + return 0; + if (!stbi__parse_entropy_coded_data(j)) + return 0; + if (j->marker == STBI__MARKER_none) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) + return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) + return stbi__err("bad DNL height", "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) + return 1; + m = stbi__get_marker(j); + } + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, int w, int hs); + +#define stbi__div4(x) ((stbi_uc)((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc *stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i = 0; i < w; ++i) + out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc *stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0] * 3 + input[1] + 2); + for (i = 1; i < w - 1; ++i) { + int n = 3 * input[i] + 2; + out[i * 2 + 0] = stbi__div4(n + input[i - 1]); + out[i * 2 + 1] = stbi__div4(n + input[i + 1]); + } + out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); + out[i * 2 + 1] = input[w - 1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc)((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate 2x2 samples for every one in input + int i, t0, t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3 * in_near[0] + in_far[0]; + out[0] = stbi__div4(t1 + 2); + for (i = 1; i < w; ++i) { + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + } + out[w * 2 - 1] = stbi__div4(t1 + 2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate 2x2 samples for every one in input + int i = 0, t0, t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3 * in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w - 1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *)(in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *)(in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *)(out + i * 2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i * 2, o); +#endif + + // "previous" value for next iter + t1 = 3 * in_near[i + 7] + in_far[i + 7]; + } + + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + } + out[w * 2 - 1] = stbi__div4(t1 + 2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // resample with nearest-neighbor + int i, j; + STBI_NOTUSED(in_far); + for (i = 0; i < w; ++i) + for (j = 0; j < hs; ++j) + out[i * hs + j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int)((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, + const stbi_uc *pcr, int count, int step) +{ + int i; + for (i = 0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1 << 19); // rounding + int r, g, b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr * stbi__float2fixed(1.40200f); + g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb * stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned)r > 255) { + if (r < 0) + r = 0; + else + r = 255; + } + if ((unsigned)g > 255) { + if (g < 0) + g = 0; + else + g = 255; + } + if ((unsigned)b > 255) { + if (b < 0) + b = 0; + else + b = 255; + } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, + stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); + __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); + __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); + __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); + __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i + 7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *)(y + i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *)(pcr + i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *)(pcb + i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *)(out + 0), o0); + _mm_storeu_si128((__m128i *)(out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); + int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); + int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); + int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); + + for (; i + 7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8 * 4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1 << 19); // rounding + int r, g, b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr * stbi__float2fixed(1.40200f); + g = y_fixed + cr * -stbi__float2fixed(0.71414f) + + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb * stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned)r > 255) { + if (r < 0) + r = 0; + else + r = 255; + } + if ((unsigned)g > 255) { + if (g < 0) + g = 0; + else + g = 255; + } + if ((unsigned)b > 255) { + if (b < 0) + b = 0; + else + b = 255; + } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct { + resample_row_func resample; + stbi_uc *line0, *line1; + int hs, vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x * y + 128; + return (stbi_uc)((t + (t >> 8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) + return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { + stbi__cleanup_jpeg(z); + return NULL; + } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { + stbi__cleanup_jpeg(z); + return NULL; + } + + // resample and color-convert + { + int k; + unsigned int i, j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k = 0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *)stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { + stbi__cleanup_jpeg(z); + return stbi__errpuc("outofmem", "Out of memory"); + } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) + r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) + r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) + r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) + r->resample = z->resample_row_hv_2_kernel; + else + r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { + stbi__cleanup_jpeg(z); + return stbi__errpuc("outofmem", "Out of memory"); + } + + // now go ahead and resample + for (j = 0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k = 0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, r->w_lores, + r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i = 0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], + coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], + coutput[2], z->s->img_x, n); + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], + coutput[2], z->s->img_x, n); + } + } else + for (i = 0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i = 0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], + coutput[1][i], + coutput[2][i]); + else { + for (i = 0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], + coutput[1][i], + coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i = 0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], + coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i = 0; i < z->s->img_x; ++i) + out[i] = y[i]; + else + for (i = 0; i < z->s->img_x; ++i) { + *out++ = y[i]; + *out++ = 255; + } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) + *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + unsigned char *result; + stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) + return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x, y, comp, req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) + return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind(j->s); + return 0; + } + if (x) + *x = j->s->img_x; + if (y) + *y = j->s->img_y; + if (comp) + *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg *j = (stbi__jpeg *)(stbi__malloc(sizeof(stbi__jpeg))); + if (!j) + return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct { + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16 - bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i, k = 0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i = 0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i = 1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i = 1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16)code; + z->firstsymbol[i] = (stbi__uint16)k; + code = (code + sizes[i]); + if (sizes[i]) + if (code - 1 >= (1 << i)) + return stbi__err("bad codelengths", "Corrupt PNG"); + z->maxcode[i] = code << (16 - i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i = 0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); + z->size[c] = (stbi_uc)s; + z->value[c] = (stbi__uint16)i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s], s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct { + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) + stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b, s, k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s = STBI__ZFAST_BITS + 1;; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) + return -1; // invalid code! + // code size is s, so: + b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) + return -1; // some data was corrupt somewhere! + if (z->size[b] != s) + return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b, s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, + int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) + return stbi__err("output buffer limit", "Corrupt PNG"); + cur = (unsigned int)(z->zout - z->zout_start); + limit = old_limit = (unsigned)(z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned)n) + return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if (limit > UINT_MAX / 2) + return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) + return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, + 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, + 99, 115, 131, 163, 195, 227, 258, 0, 0 }; + +static const int stbi__zlength_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 }; + +static const int stbi__zdist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, + 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, + 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 }; + +static const int stbi__zdist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, + 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for (;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) + return stbi__err("bad huffman code", + "Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) + return 0; + zout = a->zout; + } + *zout++ = (char)z; + } else { + stbi_uc *p; + int len, dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) + len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) + dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) + return stbi__err("bad dist", "Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) + return 0; + zout = a->zout; + } + p = (stbi_uc *)(zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { + do + *zout++ = v; + while (--len); + } + } else { + if (len) { + do + *zout++ = *p++; + while (--len); + } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, + 11, 4, 12, 3, 13, 2, 14, 1, 15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286 + 32 + 137]; //padding for maximum single op + stbi_uc codelength_sizes[19]; + int i, n; + + int hlit = stbi__zreceive(a, 5) + 257; + int hdist = stbi__zreceive(a, 5) + 1; + int hclen = stbi__zreceive(a, 4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i = 0; i < hclen; ++i) { + int s = stbi__zreceive(a, 3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) + return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) + return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc)c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a, 2) + 3; + if (n == 0) + return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n - 1]; + } else if (c == 17) { + c = stbi__zreceive(a, 3) + 3; + } else if (c == 18) { + c = stbi__zreceive(a, 7) + 11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) + return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes + n, fill, c); + n += c; + } + } + if (n != ntot) + return stbi__err("bad codelengths", "Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) + return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) + return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len, nlen, k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) + return stbi__err("zlib corrupt", "Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) + return stbi__err("zlib corrupt", "Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) + return stbi__err("read past buffer", "Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) + return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) + return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + if ((cmf * 256 + flg) % 31 != 0) + return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + if (flg & 32) + return stbi__err("no preset dict", + "Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) + return stbi__err("bad compression", + "Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = { + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8 +}; +static const stbi_uc stbi__zdefault_distance[32] = { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) + return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a, 1); + type = stbi__zreceive(a, 2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) + return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, + STBI__ZNSYMS)) + return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, + 32)) + return 0; + } else { + if (!stbi__compute_huffman_codes(a)) + return 0; + } + if (!stbi__parse_huffman_block(a)) + return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, + int *outlen) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(initial_size); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, + int initial_size, int *outlen, + int parse_header) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(initial_size); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *)ibuffer; + a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int)(a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(16384); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *)ibuffer; + a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int)(a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct { + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; + int i; + for (i = 0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) + return stbi__err("bad png sig", "Not a PNG"); + return 1; +} + +typedef struct { + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + +enum { + STBI__F_none = 0, + STBI__F_sub = 1, + STBI__F_up = 2, + STBI__F_avg = 3, + STBI__F_paeth = 4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = { STBI__F_none, STBI__F_sub, STBI__F_none, STBI__F_avg_first, + STBI__F_paeth_first }; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p - a); + int pb = abs(p - b); + int pc = abs(p - c); + if (pa <= pb && pa <= pc) + return a; + if (pb <= pc) + return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0, 0, 0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, + stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16 ? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i, j, stride = x * out_n * bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n * bytes; + int filter_bytes = img_n * bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); + a->out = (stbi_uc *)stbi__malloc_mad3(x, y, output_bytes, + 0); // extra bytes to write off the end into + if (!a->out) + return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) + return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) + return stbi__err("not enough pixels", "Corrupt PNG"); + + for (j = 0; j < y; ++j) { + stbi_uc *cur = a->out + stride * j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter", "Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) + return stbi__err("invalid width", "Corrupt PNG"); + cur += x * out_n - + img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - + stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) + filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k = 0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none: + cur[k] = raw[k]; + break; + case STBI__F_sub: + cur[k] = raw[k]; + break; + case STBI__F_up: + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + break; + case STBI__F_avg: + cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); + break; + case STBI__F_paeth: + cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); + break; + case STBI__F_avg_first: + cur[k] = raw[k]; + break; + case STBI__F_paeth_first: + cur[k] = raw[k]; + break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes + 1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1) * filter_bytes; +#define STBI__CASE(f) \ + case f: \ + for (k = 0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: + memcpy(cur, raw, nk); + break; + STBI__CASE(STBI__F_sub) + { + cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); + } + break; + STBI__CASE(STBI__F_up) + { + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + } + break; + STBI__CASE(STBI__F_avg) + { + cur[k] = STBI__BYTECAST( + raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); + } + break; + STBI__CASE(STBI__F_paeth) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - filter_bytes], + prior[k], + prior[k - filter_bytes])); + } + break; + STBI__CASE(STBI__F_avg_first) + { + cur[k] = STBI__BYTECAST(raw[k] + + (cur[k - filter_bytes] >> 1)); + } + break; + STBI__CASE(STBI__F_paeth_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); + } + break; + } +#undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n + 1 == out_n); +#define STBI__CASE(f) \ + case f: \ + for (i = x - 1; i >= 1; --i, cur[filter_bytes] = 255, raw += filter_bytes, \ + cur += output_bytes, prior += output_bytes) \ + for (k = 0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) + { + cur[k] = raw[k]; + } + break; + STBI__CASE(STBI__F_sub) + { + cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); + } + break; + STBI__CASE(STBI__F_up) + { + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + } + break; + STBI__CASE(STBI__F_avg) + { + cur[k] = STBI__BYTECAST( + raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); + } + break; + STBI__CASE(STBI__F_paeth) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - output_bytes], + prior[k], + prior[k - output_bytes])); + } + break; + STBI__CASE(STBI__F_avg_first) + { + cur[k] = STBI__BYTECAST(raw[k] + + (cur[k - output_bytes] >> 1)); + } + break; + STBI__CASE(STBI__F_paeth_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); + } + break; + } +#undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + + stride * j; // start at the beginning of the row again + for (i = 0; i < x; ++i, cur += output_bytes) { + cur[filter_bytes + 1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j = 0; j < y; ++j) { + stbi_uc *cur = a->out + stride * j; + stbi_uc *in = a->out + stride * j + x * out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : + 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k = x * img_n; k >= 2; k -= 2, ++in) { + *cur++ = scale * ((*in >> 4)); + *cur++ = scale * ((*in) & 0x0f); + } + if (k > 0) + *cur++ = scale * ((*in >> 4)); + } else if (depth == 2) { + for (k = x * img_n; k >= 4; k -= 4, ++in) { + *cur++ = scale * ((*in >> 6)); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in) & 0x03); + } + if (k > 0) + *cur++ = scale * ((*in >> 6)); + if (k > 1) + *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) + *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k = x * img_n; k >= 8; k -= 8, ++in) { + *cur++ = scale * ((*in >> 7)); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in) & 0x01); + } + if (k > 0) + *cur++ = scale * ((*in >> 7)); + if (k > 1) + *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) + *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) + *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) + *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) + *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) + *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride * j; + if (img_n == 1) { + for (q = x - 1; q >= 0; --q) { + cur[q * 2 + 1] = 255; + cur[q * 2 + 0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q = x - 1; q >= 0; --q) { + cur[q * 4 + 3] = 255; + cur[q * 4 + 2] = cur[q * 3 + 2]; + cur[q * 4 + 1] = cur[q * 3 + 1]; + cur[q * 4 + 0] = cur[q * 3 + 0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16 *)cur; + + for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, + int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, + a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) + return stbi__err("outofmem", "Out of memory"); + for (p = 0; p < 7; ++p) { + int xorig[] = { 0, 4, 0, 2, 0, 1, 0 }; + int yorig[] = { 0, 0, 4, 0, 2, 0, 1 }; + int xspc[] = { 8, 8, 4, 4, 2, 2, 1 }; + int yspc[] = { 8, 8, 8, 4, 4, 2, 2 }; + int i, j, x, y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, + depth, color)) { + STBI_FREE(final); + return 0; + } + for (j = 0; j < y; ++j) { + for (i = 0; i < x; ++i) { + int out_y = j * yspc[p] + yorig[p]; + int out_x = i * xspc[p] + xorig[p]; + memcpy(final + out_y * a->s->img_x * out_bytes + + out_x * out_bytes, + a->out + (j * x + i) * out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16 *)z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *)stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) + return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i = 0; i < pixel_count; ++i) { + int n = orig[i] * 4; + p[0] = palette[n]; + p[1] = palette[n + 1]; + p[2] = palette[n + 2]; + p += 3; + } + } else { + for (i = 0; i < pixel_count; ++i) { + int n = orig[i] * 4; + p[0] = palette[n]; + p[1] = palette[n + 1]; + p[2] = palette[n + 2]; + p[3] = palette[n + 3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load \ + (stbi__unpremultiply_on_load_set ? stbi__unpremultiply_on_load_local : \ + stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag \ + (stbi__de_iphone_flag_set ? stbi__de_iphone_flag_local : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i = 0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i = 0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = (t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i = 0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a, b, c, d) \ + (((unsigned)(a) << 24) + ((unsigned)(b) << 16) + ((unsigned)(c) << 8) + (unsigned)(d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n = 0; + stbi_uc has_trans = 0, tc[3] = { 0 }; + stbi__uint16 tc16[3]; + stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; + int first = 1, k, interlace = 0, color = 0, is_iphone = 0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) + return 0; + + if (scan == STBI__SCAN_type) + return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C', 'g', 'B', 'I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { + int comp, filter; + if (!first) + return stbi__err("multiple IHDR", "Corrupt PNG"); + first = 0; + if (c.length != 13) + return stbi__err("bad IHDR len", "Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + z->depth = stbi__get8(s); + if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && + z->depth != 16) + return stbi__err("1/2/4/8/16-bit only", + "PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); + if (color > 6) + return stbi__err("bad ctype", "Corrupt PNG"); + if (color == 3 && z->depth == 16) + return stbi__err("bad ctype", "Corrupt PNG"); + if (color == 3) + pal_img_n = 3; + else if (color & 1) + return stbi__err("bad ctype", "Corrupt PNG"); + comp = stbi__get8(s); + if (comp) + return stbi__err("bad comp method", "Corrupt PNG"); + filter = stbi__get8(s); + if (filter) + return stbi__err("bad filter method", "Corrupt PNG"); + interlace = stbi__get8(s); + if (interlace > 1) + return stbi__err("bad interlace method", "Corrupt PNG"); + if (!s->img_x || !s->img_y) + return stbi__err("0-pixel image", "Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) + return stbi__err("too large", "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) + return stbi__err("too large", "Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; + } + + case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256 * 3) + return stbi__err("invalid PLTE", "Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) + return stbi__err("invalid PLTE", "Corrupt PNG"); + for (i = 0; i < pal_len; ++i) { + palette[i * 4 + 0] = stbi__get8(s); + palette[i * 4 + 1] = stbi__get8(s); + palette[i * 4 + 2] = stbi__get8(s); + palette[i * 4 + 3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) + return stbi__err("tRNS after IDAT", "Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { + s->img_n = 4; + return 1; + } + if (pal_len == 0) + return stbi__err("tRNS before PLTE", "Corrupt PNG"); + if (c.length > pal_len) + return stbi__err("bad tRNS len", "Corrupt PNG"); + pal_img_n = 4; + for (i = 0; i < c.length; ++i) + palette[i * 4 + 3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) + return stbi__err("tRNS with alpha", "Corrupt PNG"); + if (c.length != (stbi__uint32)s->img_n * 2) + return stbi__err("bad tRNS len", "Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { + ++s->img_n; + return 1; + } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) + tc16[k] = (stbi__uint16)stbi__get16be( + s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) + tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * + stbi__depth_scale_table + [z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) + return stbi__err("no PLTE", "Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) + return stbi__err("IDAT size limit", + "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) + return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) + idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *)STBI_REALLOC_SIZED(z->idata, idata_limit_old, + idata_limit); + if (p == NULL) + return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata + ioff, c.length)) + return stbi__err("outofdata", "Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { + stbi__uint32 raw_len, bpl; + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) + return 1; + if (z->idata == NULL) + return stbi__err("no IDAT", "Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *)stbi_zlib_decode_malloc_guesssize_headerflag( + (char *)z->idata, ioff, raw_len, (int *)&raw_len, !is_iphone); + if (z->expanded == NULL) + return 0; // zlib should set error + STBI_FREE(z->idata); + z->idata = NULL; + if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n + 1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, + color, interlace)) + return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) + return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) + return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) + s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); + z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { +#ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +#endif + return stbi__err(invalid_chunk, + "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result = NULL; + if (req_comp < 0 || req_comp > 4) + return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", + "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *)result, + p->s->img_out_n, req_comp, + p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *)result, + p->s->img_out_n, req_comp, + p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) + return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) + *n = p->s->img_n; + } + STBI_FREE(p->out); + p->out = NULL; + STBI_FREE(p->expanded); + p->expanded = NULL; + STBI_FREE(p->idata); + p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x, y, comp, req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind(p->s); + return 0; + } + if (x) + *x = p->s->img_x; + if (y) + *y = p->s->img_y; + if (comp) + *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') + return 0; + if (stbi__get8(s) != 'M') + return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n = 0; + if (z == 0) + return -1; + if (z >= 0x10000) { + n += 16; + z >>= 16; + } + if (z >= 0x00100) { + n += 8; + z >>= 8; + } + if (z >= 0x00010) { + n += 4; + z >>= 4; + } + if (z >= 0x00004) { + n += 2; + z >>= 2; + } + if (z >= 0x00002) { + n += 1; /* >>= 1;*/ + } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff /*0b11111111*/, + 0x55 /*0b01010101*/, + 0x49 /*0b01001001*/, + 0x11 /*0b00010001*/, + 0x21 /*0b00100001*/, + 0x41 /*0b01000001*/, + 0x81 /*0b10000001*/, + 0x01 /*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0, 0, 1, 0, 2, 4, 6, 0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8 - bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct { + int bpp, offset, hsz; + unsigned int mr, mg, mb, ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = + 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') + return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) + return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) + return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) + return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) + return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) + return stbi__errpuc( + "BMP JPEG/PNG", + "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) + return stbi__errpuc("bad BMP", + "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != + 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i = 0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *)1; +} + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; + stbi_uc pal[256][4]; + int psize = 0, i, j, width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int)s->img_y) > 0; + s->img_y = abs((int)s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = + s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = + 256 * + 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); + } + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || + info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z = 0; + if (psize == 0 || psize > 256) { + STBI_FREE(out); + return stbi__errpuc("invalid", "Corrupt BMP"); + } + for (i = 0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) + stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - + psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) + width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) + width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) + width = s->img_x; + else { + STBI_FREE(out); + return stbi__errpuc("bad bpp", "Corrupt BMP"); + } + pad = (-width) & 3; + if (info.bpp == 1) { + for (j = 0; j < (int)s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i = 0; i < (int)s->img_x; ++i) { + int color = (v >> bit_offset) & 0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) + out[z++] = 255; + if (i + 1 == (int)s->img_x) + break; + if ((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j = 0; j < (int)s->img_y; ++j) { + for (i = 0; i < (int)s->img_x; i += 2) { + int v = stbi__get8(s), v2 = 0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) + out[z++] = 255; + if (i + 1 == (int)s->img_x) + break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) + out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, + bcount = 0, acount = 0; + int z = 0; + int easy = 0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) + width = 3 * s->img_x; + else if (info.bpp == 16) + width = 2 * s->img_x; + else /* bpp = 32 and pad = 0 */ + width = 0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { + STBI_FREE(out); + return stbi__errpuc("bad masks", "Corrupt BMP"); + } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr) - 7; + rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg) - 7; + gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb) - 7; + bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma) - 7; + acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { + STBI_FREE(out); + return stbi__errpuc("bad masks", "Corrupt BMP"); + } + } + for (j = 0; j < (int)s->img_y; ++j) { + if (easy) { + for (i = 0; i < (int)s->img_x; ++i) { + unsigned char a; + out[z + 2] = stbi__get8(s); + out[z + 1] = stbi__get8(s); + out[z + 0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) + out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i = 0; i < (int)s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? + (stbi__uint32)stbi__get16le(s) : + stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) + out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j = 0; j < (int)s->img_y >> 1; ++j) { + stbi_uc *p1 = out + j * s->img_x * target; + stbi_uc *p2 = out + (s->img_y - 1 - j) * s->img_x * target; + for (i = 0; i < (int)s->img_x * target; ++i) { + t = p1[i]; + p1[i] = p2[i]; + p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) + *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int *is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) + *is_rgb16 = 0; + switch (bits_per_pixel) { + case 8: + return STBI_grey; + case 16: + if (is_grey) + return STBI_grey_alpha; + // fallthrough + case 15: + if (is_rgb16) + *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: + return bits_per_pixel / 8; + default: + return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if (tga_colormap_type > 1) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if (tga_colormap_type == 1) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, + 4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && + (tga_image_type != 11)) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s, + 9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if (tga_w < 1) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if (tga_h < 1) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp( + tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if (!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) + *x = tga_w; + if (y) + *y = tga_h; + if (comp) + *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if (tga_color_type > 1) + goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if (tga_color_type == 1) { // colormapped (paletted) image + if (sz != 1 && sz != 9) + goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s, + 4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) + goto errorEnd; + stbi__skip(s, 4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) + goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s, + 9); // skip colormap specification and image x/y origin + } + if (stbi__get16le(s) < 1) + goto errorEnd; // test width + if (stbi__get16le(s) < 1) + goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) + goto errorEnd; // for colormapped images, bpp is size of an index + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) + goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc *out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255) / 31); + out[1] = (stbi_uc)((g * 255) / 31); + out[2] = (stbi_uc)((b * 255) / 31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16 = 0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = { 0 }; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + // do a tiny bit of precessing + if (tga_image_type >= 8) { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if (tga_indexed) + tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else + tga_comp = + stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) + *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char *)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) + return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset); + + if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { + for (i = 0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height - i - 1 : i; + stbi_uc *tga_row = tga_data + row * tga_width * tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if (tga_indexed) { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start); + // load the palette + tga_palette = + (unsigned char *)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i = 0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i = 0; i < tga_width * tga_height; ++i) { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if (tga_is_RLE) { + if (RLE_count == 0) { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if (!RLE_repeating) { + read_next_pixel = 1; + } + } else { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if (read_next_pixel) { + // load however much data we did have + if (tga_indexed) { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : + stbi__get16le(s); + if (pal_idx >= tga_palette_len) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx + j]; + } + } else if (tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i * tga_comp + j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if (tga_inverted) { + for (j = 0; j * 2 < tga_height; ++j) { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if (tga_palette != NULL) { + STBI_FREE(tga_palette); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) { + unsigned char *tga_pixel = tga_data; + for (i = 0; i < tga_width * tga_height; ++i) { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = + stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) + return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) + return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w, h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", + "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s, stbi__get32be(s)); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s)); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s)); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *)stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *)stbi__malloc(4 * w * h); + + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w * h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out + channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *)out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out + channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *)out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16)stbi__get16be(s); + } else { + stbi_uc *p = out + channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc)(stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i = 0; i < w * h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *)out + 4 * i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + } + } + } else { + for (i = 0; i < w * h; ++i) { + unsigned char *pixel = out + 4 * i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, 4, req_comp, w, + h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + + if (comp) + *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s, const char *str) +{ + int i; + for (i = 0; i < 4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + return 0; + + for (i = 0; i < 84; ++i) + stbi__get8(s); + + if (!stbi__pic_is4(s, "PICT")) + return 0; + + return 1; +} + +typedef struct { + stbi_uc size, type, channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask = 0x80, i; + + for (i = 0; i < 4; ++i, mask >>= 1) { + if (channel & mask) { + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "PIC file too short"); + dest[i] = stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel, stbi_uc *dest, const stbi_uc *src) +{ + int mask = 0x80, i; + + for (i = 0; i < 4; ++i, mask >>= 1) + if (channel & mask) + dest[i] = src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s, int width, int height, int *comp, + stbi_uc *result) +{ + int act_comp = 0, num_packets = 0, y, chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets == sizeof(packets) / sizeof(packets[0])) + return stbi__errpuc("bad format", "too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "file too short (reading packets)"); + if (packet->size != 8) + return stbi__errpuc("bad format", "packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for (y = 0; y < height; ++y) { + int packet_idx; + + for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { + stbi__pic_packet *packet = &packets[packet_idx]; + stbi_uc *dest = result + y * width * 4; + + switch (packet->type) { + default: + return stbi__errpuc("bad format", + "packet has bad compression type"); + + case 0: { //uncompressed + int x; + + for (x = 0; x < width; ++x, dest += 4) + if (!stbi__readval(s, packet->channel, dest)) + return 0; + break; + } + + case 1: //Pure RLE + { + int left = width, i; + + while (left > 0) { + stbi_uc count, value[4]; + + count = stbi__get8(s); + if (stbi__at_eof(s)) + return stbi__errpuc( + "bad file", + "file too short (pure read count)"); + + if (count > left) + count = (stbi_uc)left; + + if (!stbi__readval(s, packet->channel, value)) + return 0; + + for (i = 0; i < count; ++i, dest += 4) + stbi__copyval(packet->channel, dest, value); + left -= count; + } + } break; + + case 2: { //Mixed RLE + int left = width; + while (left > 0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) + return stbi__errpuc( + "bad file", + "file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count == 128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file", + "scanline overrun"); + + if (!stbi__readval(s, packet->channel, value)) + return 0; + + for (i = 0; i < count; ++i, dest += 4) + stbi__copyval(packet->channel, dest, value); + } else { // Raw + ++count; + if (count > left) + return stbi__errpuc("bad file", + "scanline overrun"); + + for (i = 0; i < count; ++i, dest += 4) + if (!stbi__readval(s, packet->channel, + dest)) + return 0; + } + left -= count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s, int *px, int *py, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *result; + int i, x, y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) + comp = &internal_comp; + + for (i = 0; i < 92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) + return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *)stbi__malloc_mad3(x, y, 4, 0); + if (!result) + return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x * y * 4); + + if (!stbi__pic_load_core(s, x, y, comp, result)) { + STBI_FREE(result); + result = 0; + } + *px = x; + *py = y; + if (req_comp == 0) + req_comp = *comp; + result = stbi__convert_format(result, 4, req_comp, x, y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct { + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct { + int w, h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || + stbi__get8(s) != '8') + return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') + return 0; + if (stbi__get8(s) != 'a') + return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, + int transp) +{ + int i; + for (i = 0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || + stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') + return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') + return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + + if (comp != 0) + *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) + return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif *g = (stbi__gif *)stbi__malloc(sizeof(stbi__gif)); + if (!g) + return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind(s); + return 0; + } + if (x) + *x = g->w; + if (y) + *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) + return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) + return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc)init_code; + g->codes[init_code].suffix = (stbi_uc)init_code; + } + + // support no starting clear code + avail = clear + 2; + oldcode = -1; + + len = 0; + for (;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32)stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s, len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", + "Corrupt GIF"); + } + + p->prefix = (stbi__int16)oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : + g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", + "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16)code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, + stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp, 0)) + return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *)stbi__malloc(4 * pcount); + g->background = (stbi_uc *)stbi__malloc(4 * pcount); + g->history = (stbi_uc *)stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, + 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, + pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = + 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy(&g->out[pi * 4], &two_back[pi * 4], 4); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy(g->background, g->out, 4 * g->w * g->h); + } + + // clear my history; + memset(g->history, 0x00, + g->w * g->h); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7), + g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *)g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *)g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) + return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = + 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = + 10 * + stbi__get16le( + s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *)s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) + STBI_FREE(out); + if (delays && *delays) + STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, + int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *)s) + u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc *)STBI_REALLOC_SIZED(out, out_size, + layers * stride); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, + delays); + else { + out = (stbi_uc *)tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int *)STBI_REALLOC_SIZED( + *delays, delays_size, sizeof(int) * layers); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, + delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc *)stbi__malloc(layers * stride); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, + delays); + out_size = layers * stride; + if (delays) { + *delays = (int *)stbi__malloc(layers * sizeof(int)); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, + delays); + delays_size = layers * sizeof(int); + } + } + memcpy(out + ((layers - 1) * stride), u, stride); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *)s) + u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s, x, y, comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i = 0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context *s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if (!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len = 0; + char c = '\0'; + + c = (char)stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN - 1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char)stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if (input[3] != 0) { + float f1; + // Exponent + f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) + output[1] = 1; + if (req_comp == 4) + output[3] = 1; + } else { + switch (req_comp) { + case 4: + output[3] = 1; /* fallthrough */ + case 3: + output[0] = output[1] = output[2] = 0; + break; + case 2: + output[1] = 1; /* fallthrough */ + case 1: + output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1, c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s, buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for (;;) { + token = stbi__hdr_gettoken(s, buffer); + if (token[0] == 0) + break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) + valid = 1; + } + + if (!valid) + return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s, buffer); + if (strncmp(token, "-Y ", 3)) + return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int)strtol(token, &token, 10); + while (*token == ' ') + ++token; + if (strncmp(token, "+X ", 3)) + return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int)strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) + return stbi__errpf("too large", "Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) + return stbi__errpf("too large", "Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) + *comp = 3; + if (req_comp == 0) + req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *)stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if (width < 8 || width >= 32768) { + // Read flat data + for (j = 0; j < height; ++j) { + for (i = 0; i < width; ++i) { + stbi_uc rgbe[4]; +main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, + rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc)c1; + rgbe[1] = (stbi_uc)c2; + rgbe[2] = (stbi_uc)len; + rgbe[3] = (stbi_uc)stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf("invalid decoded scanline length", + "corrupt HDR"); + } + if (scanline == NULL) { + scanline = (stbi_uc *)stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || (count > nleft)) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf("corrupt", + "bad RLE data in HDR"); + } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if ((count == 0) || (count > nleft)) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf("corrupt", + "bad RLE data in HDR"); + } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i = 0; i < width; ++i) + stbi__hdr_convert(hdr_data + (j * width + i) * req_comp, + scanline + i * 4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind(s); + return 0; + } + + for (;;) { + token = stbi__hdr_gettoken(s, buffer); + if (token[0] == 0) + break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) + valid = 1; + } + + if (!valid) { + stbi__rewind(s); + return 0; + } + token = stbi__hdr_gettoken(s, buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind(s); + return 0; + } + token += 3; + *y = (int)strtol(token, &token, 10); + while (*token == ' ') + ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind(s); + return 0; + } + token += 3; + *x = (int)strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind(s); + return 0; + } + if (x) + *x = s->img_x; + if (y) + *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind(s); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind(s); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind(s); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind(s); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp = 0, num_packets = 0, chained, dummy; + stbi__pic_packet packets[10]; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind(s); + return 0; + } + if ((*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets == sizeof(packets) / sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind(s); + return 0; + } + if (packet->size != 8) { + stbi__rewind(s); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char)stbi__get8(s); + t = (char)stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = + stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) + *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, + 0); + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, s->img_n, + req_comp, s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + } + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char)stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r') + *c = (char)stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value * 10 + (*c - '0'); + *c = (char)stbi__get8(s); + if ((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err( + "integer parse overflow", + "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char)stbi__get8(s); + t = (char)stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char)stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if (*x == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", + "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ +#ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) + return 1; +#endif + + // test tga last because it's a crappy test! +#ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; +#endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ +#ifndef STBI_NO_PNG + if (stbi__png_is16(s)) + return 1; +#endif + +#ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) + return 1; +#endif + +#ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) + return 1; +#endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) + return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s, x, y, comp); + fseek(f, pos, SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) + return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f, pos, SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__info_main(&s, x, y, comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, + int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user); + return stbi__info_main(&s, x, y, comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user); + return stbi__is_16_main(&s); +} + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +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. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +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 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. +------------------------------------------------------------------------------ +*/ diff --git a/内核源代码/StgSharp.C/stb_image.h b/内核源代码/StgSharp.C/stb_image.h new file mode 100644 index 00000000..ae870bf6 --- /dev/null +++ b/内核源代码/StgSharp.C/stb_image.h @@ -0,0 +1,787 @@ +/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff + 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes + 2.26 (2020-07-13) many minor fixes + 2.25 (2020-02-02) fix warnings + 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically + 2.23 (2019-08-11) fix clang static analysis warning + 2.22 (2019-03-04) gif fixes, fix warnings + 2.21 (2019-02-25) fix typo in comment + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine Simon Breuss (16-bit PNM) + John-Mark Allen + Carmelo J Fdez-Aguera + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski + Phil Jordan Dave Moore Roy Eltham + Hayaki Saito Nathan Reed Won Chun + Luke Graham Johan Duparc Nick Verigakis the Horde3D community + Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Eugene Golushkov Laurent Gomila Cort Stratton github:snagar + Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex + Cass Everitt Ryamond Barbiero github:grim210 + Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw + Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus + Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo + Julian Raschke Gregory Mullen Christian Floisand github:darealshinji + Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 + Brad Weinberger Matvey Cherevko github:mosra + Luca Sas Alexander Veselov Zack Middleton [reserved] + Ryan C. Gordon [reserved] [reserved] + DO NOT ADD YOUR NAME HERE + + Jacko Dirks + + To add your name to the credits, pick a random blank space in the middle and fill it. + 80% of merge conflicts on stb PRs are due to people adding their name at the end + of the credits. +*/ + +#pragma once + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data); +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// To query the width, height and component count of an image without having to +// decode the full file, you can use the stbi_info family of functions: +// +// int x,y,n,ok; +// ok = stbi_info(filename, &x, &y, &n); +// // returns ok=1 and sets x, y, n if image is a supported format, +// // 0 otherwise. +// +// Note that stb_image pervasively uses ints in its public API for sizes, +// including sizes of memory buffers. This is now part of the API and thus +// hard to change without causing breakage. As a result, the various image +// loaders all have certain limits on image size; these differ somewhat +// by format but generally boil down to either just under 2GB or just under +// 1GB. When the decoded image would be larger than this, stb_image decoding +// will fail. +// +// Additionally, stb_image will reject image files that have any of their +// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, +// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, +// the only way to have an image with such dimensions load correctly +// is for it to have a rather extreme aspect ratio. Either way, the +// assumption here is that such larger images are likely to be malformed +// or malicious. If you do need to load an image with individual dimensions +// larger than that, and it still fits in the overall size limit, you can +// #define STBI_MAX_DIMENSIONS on your own to be something larger. +// +// =========================================================================== +// +// UNICODE: +// +// If compiling for Windows and you wish to use Unicode filenames, compile +// with +// #define STBI_WINDOWS_UTF8 +// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert +// Windows wchar_t filenames to utf8. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy-to-use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// provide more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image supports loading HDR images in general, and currently the Radiance +// .HDR file format specifically. You can still load any file through the existing +// interface; if you attempt to load an HDR file, it will be automatically remapped +// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// We optionally support converting iPhone-formatted PNGs (which store +// premultiplied BGRA) back to RGB, even though they're internally encoded +// differently. To enable this conversion, call +// stbi_convert_iphone_png_to_rgb(1). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// +// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater +// than that size (in either width or height) without further processing. +// This is to let programs in the wild set an upper bound to prevent +// denial-of-service attacks on untrusted data, as one could generate a +// valid image of gigantic dimensions and force stb_image to allocate a +// huge block of memory and spend disproportionate time decoding it. By +// default this is set to (1 << 24), which is 16777216, but that's still +// very big. + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum { + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct { + int (*read)( + void *user, char *data, + int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip)(void *user, + int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof)(void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); +STBIDEF void stbi_load_to_target(char const *filename, int *x, int *y, stbi_uc *target, + int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *channels_in_file, + int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, + int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t *input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, + int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, + int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels); +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *channels_in_file, + int desired_channels); +#endif +#endif + +#ifndef STBI_NO_HDR +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); +STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); +STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr(char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason(void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free(void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit(char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, + int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, + int initial_size, int *outlen, + int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, + int ilen); + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +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. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +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 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. +------------------------------------------------------------------------------ +*/ diff --git a/内核源代码/StgSharp.C/vector.c b/内核源代码/StgSharp.C/vector.c new file mode 100644 index 00000000..c534bae7 --- /dev/null +++ b/内核源代码/StgSharp.C/vector.c @@ -0,0 +1,31 @@ +#include "StgSharpC.h" +#include "ssc_internal.h" + +SSCAPI void SSCDECL normalize(__m128 *source, __m128 *target) +{ + __m128 a_length_sq = _mm_mul_ps(*source, *source); + a_length_sq = _mm_add_ps(a_length_sq, + _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); + a_length_sq = _mm_add_ss(a_length_sq, + _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); + + __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); + *source = _mm_mul_ps(*source, a_inv_length); + + __m128 dot_product = _mm_mul_ps(*target, *source); + dot_product = _mm_add_ps(dot_product, + _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1))); + dot_product = _mm_add_ss(dot_product, + _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2))); + + __m128 b_orthogonal = _mm_sub_ps(*target, _mm_mul_ps(*source, dot_product)); + + __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal); + b_length_sq = _mm_add_ps(b_length_sq, + _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); + b_length_sq = _mm_add_ss(b_length_sq, + _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); + + __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq); + *target = _mm_mul_ps(b_orthogonal, b_inv_length); +} diff --git a/内核源代码/StgSharp.C/vector_dot.c b/内核源代码/StgSharp.C/vector_dot.c new file mode 100644 index 00000000..a6152e89 --- /dev/null +++ b/内核源代码/StgSharp.C/vector_dot.c @@ -0,0 +1,147 @@ +#include "ssc_intrinsic.h" +#include "SSC_internal.h" + +static const int avxdot_indices[] = { 0, 4, 1, 5, 2, 3, 6, 7 }; + +INTERNAL void FORCEINLINE SSCDECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + *ans = _mm_dp_ps(transpose->column[0], *vector, 0B11110001); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 1)); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[3], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 4)); +} + +INTERNAL void SSCDECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __m256 _double = _mm256_set_m128(vector[0], vector[0]); + __m256 tmp = _mm256_dp_ps(transpose->half[0], _double, 0B11110001); + tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->half[0], _double, 0B11110010), + 0B00100010); + *ans = _mm256_castps256_ps128( + _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); +} + +INTERNAL void FORCEINLINE SSCDECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + *ans = _mm_dp_ps(transpose->column[0], *vector, 0B11110001); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); +} + +INTERNAL void FORCEINLINE SSCDECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __m256 _double = _mm256_set_m128(vector[0], vector[0]); + __m256 tmp = _mm256_dp_ps(transpose->part, _double, 0B11110001); + *ans = _mm256_castps256_ps128( + _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); +} + +INTERNAL void SSCDECL dot_42_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + ans[0] = _mm_dp_ps(transpose->column[0], vector[0], 0B11110001); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[3], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 4)); + + ans[1] = _mm_dp_ps(transpose->column[0], vector[1], 0B11110001); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[3], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 4)); +} + +INTERNAL void SSCDECL dot_32_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + ans[0] = _mm_dp_ps(transpose->column[0], vector[0], 0B11110001); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + + ans[1] = _mm_dp_ps(transpose->column[0], vector[1], 0B11110001); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); +} + +INTERNAL void SSCDECL dot_42_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __2_columnset *ans_ptr = (__2_columnset *)ans, *right_ptr = (__2_columnset *)vector; + __m256 temp = ALIGN256(transpose->half[0]); + + ans_ptr->stream = _mm256_dp_ps(temp, right_ptr->stream, 0B11110001); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110010), 0B00100010); + + temp = ALIGN256(transpose->half[1]); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110100), 0B01000100); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11111000), 0B10001000); + + ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 3, 0, 1)); +} + +INTERNAL void SSCDECL dot_32_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __2_columnset *ans_ptr = (__2_columnset *)ans, *right_ptr = (__2_columnset *)vector; + __m256 temp = transpose->part; + + ans_ptr->stream = _mm256_dp_ps(temp, right_ptr->stream, 0B11110001); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110010), 0B00100010); + + temp = _mm256_set_m128(transpose->column[2], transpose->column[2]); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110100), 0B01000100); + + ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 2, 0, 1)); +} + +INTERNAL void SSCDECL dot_43_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + dot_41_sse(transpose, vector, ans); + dot_41_sse(transpose, vector + 1, ans + 1); + dot_41_sse(transpose, vector + 2, ans + 2); +} + +INTERNAL void SSCDECL dot_43_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __3_columnset *ans_ptr = (__3_columnset *)ans, *right_ptr = (__3_columnset *)vector; + __m256 temp = ALIGN256(transpose->half[0]); + __m256 third = _mm256_set_m128(right_ptr->column[2], right_ptr->column[2]); + + ans_ptr->part = _mm256_dp_ps(temp, right_ptr->part, 0B11110001); + __m256 ans_third = _mm256_dp_ps(temp, third, 0B11110001); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->part = _mm256_blend_ps( + ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11110010), 0B00100010); + + temp = ALIGN256(transpose->half[1]); + ans_ptr->part = _mm256_blend_ps( + ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11110100), 0B01000100); + ans_third = _mm256_blend_ps(ans_third, _mm256_dp_ps(temp, third, 0B11110010), 0B00100010); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->part = _mm256_blend_ps( + ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11111000), 0B10001000); + + ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 3, 0, 1)); + ans[2] = _mm256_castps256_ps128( + _mm256_permutevar8x32_ps(ans_third, _mm256_loadu_epi32(avxdot_indices))); +} diff --git a/内核源代码/StgSharp.C/wgl.h b/内核源代码/StgSharp.C/wgl.h new file mode 100644 index 00000000..a48052de --- /dev/null +++ b/内核源代码/StgSharp.C/wgl.h @@ -0,0 +1,1076 @@ +/** + * Loader generated by glad 2.0.5 on Fri Feb 16 00:51:03 2024 + * + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + * + * Generator: C/C++ + * Specification: wgl + * Extensions: 57 + * + * APIs: + * - wgl=1.0 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False + * - MX = True + * - ON_DEMAND = False + * + * Commandline: + * --api='wgl=1.0' --extensions='WGL_3DFX_multisample,WGL_3DL_stereo_control,WGL_AMD_gpu_association,WGL_ARB_buffer_region,WGL_ARB_context_flush_control,WGL_ARB_create_context,WGL_ARB_create_context_no_error,WGL_ARB_create_context_profile,WGL_ARB_create_context_robustness,WGL_ARB_extensions_string,WGL_ARB_framebuffer_sRGB,WGL_ARB_make_current_read,WGL_ARB_multisample,WGL_ARB_pbuffer,WGL_ARB_pixel_format,WGL_ARB_pixel_format_float,WGL_ARB_render_texture,WGL_ARB_robustness_application_isolation,WGL_ARB_robustness_share_group_isolation,WGL_ATI_pixel_format_float,WGL_ATI_render_texture_rectangle,WGL_EXT_colorspace,WGL_EXT_create_context_es2_profile,WGL_EXT_create_context_es_profile,WGL_EXT_depth_float,WGL_EXT_display_color_table,WGL_EXT_extensions_string,WGL_EXT_framebuffer_sRGB,WGL_EXT_make_current_read,WGL_EXT_multisample,WGL_EXT_pbuffer,WGL_EXT_pixel_format,WGL_EXT_pixel_format_packed_float,WGL_EXT_swap_control,WGL_EXT_swap_control_tear,WGL_I3D_digital_video_control,WGL_I3D_gamma,WGL_I3D_genlock,WGL_I3D_image_buffer,WGL_I3D_swap_frame_lock,WGL_I3D_swap_frame_usage,WGL_NV_DX_interop,WGL_NV_DX_interop2,WGL_NV_copy_image,WGL_NV_delay_before_swap,WGL_NV_float_buffer,WGL_NV_gpu_affinity,WGL_NV_multigpu_context,WGL_NV_multisample_coverage,WGL_NV_present_video,WGL_NV_render_depth_texture,WGL_NV_render_texture_rectangle,WGL_NV_swap_group,WGL_NV_vertex_array_range,WGL_NV_video_capture,WGL_NV_video_output,WGL_OML_sync_control' c --mx + * + * Online: + * http://glad.sh/#api=wgl%3D1.0&extensions=WGL_3DFX_multisample%2CWGL_3DL_stereo_control%2CWGL_AMD_gpu_association%2CWGL_ARB_buffer_region%2CWGL_ARB_context_flush_control%2CWGL_ARB_create_context%2CWGL_ARB_create_context_no_error%2CWGL_ARB_create_context_profile%2CWGL_ARB_create_context_robustness%2CWGL_ARB_extensions_string%2CWGL_ARB_framebuffer_sRGB%2CWGL_ARB_make_current_read%2CWGL_ARB_multisample%2CWGL_ARB_pbuffer%2CWGL_ARB_pixel_format%2CWGL_ARB_pixel_format_float%2CWGL_ARB_render_texture%2CWGL_ARB_robustness_application_isolation%2CWGL_ARB_robustness_share_group_isolation%2CWGL_ATI_pixel_format_float%2CWGL_ATI_render_texture_rectangle%2CWGL_EXT_colorspace%2CWGL_EXT_create_context_es2_profile%2CWGL_EXT_create_context_es_profile%2CWGL_EXT_depth_float%2CWGL_EXT_display_color_table%2CWGL_EXT_extensions_string%2CWGL_EXT_framebuffer_sRGB%2CWGL_EXT_make_current_read%2CWGL_EXT_multisample%2CWGL_EXT_pbuffer%2CWGL_EXT_pixel_format%2CWGL_EXT_pixel_format_packed_float%2CWGL_EXT_swap_control%2CWGL_EXT_swap_control_tear%2CWGL_I3D_digital_video_control%2CWGL_I3D_gamma%2CWGL_I3D_genlock%2CWGL_I3D_image_buffer%2CWGL_I3D_swap_frame_lock%2CWGL_I3D_swap_frame_usage%2CWGL_NV_DX_interop%2CWGL_NV_DX_interop2%2CWGL_NV_copy_image%2CWGL_NV_delay_before_swap%2CWGL_NV_float_buffer%2CWGL_NV_gpu_affinity%2CWGL_NV_multigpu_context%2CWGL_NV_multisample_coverage%2CWGL_NV_present_video%2CWGL_NV_render_depth_texture%2CWGL_NV_render_texture_rectangle%2CWGL_NV_swap_group%2CWGL_NV_vertex_array_range%2CWGL_NV_video_capture%2CWGL_NV_video_output%2CWGL_OML_sync_control&generator=c&options=MX + * + */ + +#ifndef GLAD_WGL_H_ +#define GLAD_WGL_H_ + +#include +#include "gl.h" + +#define GLAD_WGL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) +#define GLAD_PLATFORM_WIN32 1 +#else +#define GLAD_PLATFORM_WIN32 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_APPLE +#ifdef __APPLE__ +#define GLAD_PLATFORM_APPLE 1 +#else +#define GLAD_PLATFORM_APPLE 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN +#ifdef __EMSCRIPTEN__ +#define GLAD_PLATFORM_EMSCRIPTEN 1 +#else +#define GLAD_PLATFORM_EMSCRIPTEN 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) +#ifdef __has_include +#if __has_include() +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY +#include +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#define GLAD_PLATFORM_UWP 1 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#define GLAD_PLATFORM_UWP 0 +#endif +#endif + +#ifdef __GNUC__ +#define GLAD_GNUC_EXTENSION __extension__ +#else +#define GLAD_GNUC_EXTENSION +#endif + +#define GLAD_UNUSED(x) (void)(x) + +#ifndef GLAD_API_CALL +#if defined(GLAD_API_CALL_EXPORT) +#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) +#if defined(GLAD_API_CALL_EXPORT_BUILD) +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllexport)) extern +#else +#define GLAD_API_CALL __declspec(dllexport) extern +#endif +#else +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllimport)) extern +#else +#define GLAD_API_CALL __declspec(dllimport) extern +#endif +#endif +#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) +#define GLAD_API_CALL __attribute__((visibility("default"))) extern +#else +#define GLAD_API_CALL extern +#endif +#else +#define GLAD_API_CALL extern +#endif +#endif + +#ifdef APIENTRY +#define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 +#define GLAD_API_PTR __stdcall +#else +#define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.5" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, + ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 +#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 +#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 +#define ERROR_INVALID_PROFILE_ARB 0x2096 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_ACCELERATION_EXT 0x2003 +#define WGL_ACCESS_READ_ONLY_NV 0x00000000 +#define WGL_ACCESS_READ_WRITE_NV 0x00000001 +#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 +#define WGL_ACCUM_BITS_ARB 0x201D +#define WGL_ACCUM_BITS_EXT 0x201D +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 +#define WGL_ACCUM_GREEN_BITS_ARB 0x201F +#define WGL_ACCUM_GREEN_BITS_EXT 0x201F +#define WGL_ACCUM_RED_BITS_ARB 0x201E +#define WGL_ACCUM_RED_BITS_EXT 0x201E +#define WGL_ALPHA_BITS_ARB 0x201B +#define WGL_ALPHA_BITS_EXT 0x201B +#define WGL_ALPHA_SHIFT_ARB 0x201C +#define WGL_ALPHA_SHIFT_EXT 0x201C +#define WGL_AUX0_ARB 0x2087 +#define WGL_AUX1_ARB 0x2088 +#define WGL_AUX2_ARB 0x2089 +#define WGL_AUX3_ARB 0x208A +#define WGL_AUX4_ARB 0x208B +#define WGL_AUX5_ARB 0x208C +#define WGL_AUX6_ARB 0x208D +#define WGL_AUX7_ARB 0x208E +#define WGL_AUX8_ARB 0x208F +#define WGL_AUX9_ARB 0x2090 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_AUX_BUFFERS_EXT 0x2024 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 +#define WGL_BACK_LEFT_ARB 0x2085 +#define WGL_BACK_RIGHT_ARB 0x2086 +#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 +#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 +#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_BITS_EXT 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201A +#define WGL_BLUE_SHIFT_EXT 0x201A +#define WGL_COLORSPACE_EXT 0x309D +#define WGL_COLORSPACE_LINEAR_EXT 0x308A +#define WGL_COLORSPACE_SRGB_EXT 0x3089 +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_COLOR_BITS_EXT 0x2014 +#define WGL_COLOR_SAMPLES_NV 0x20B9 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC +#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD +#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE +#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA +#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB +#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0 +#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_COVERAGE_SAMPLES_NV 0x2042 +#define WGL_CUBE_MAP_FACE_ARB 0x207C +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_DEPTH_BITS_EXT 0x2022 +#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 +#define WGL_DEPTH_COMPONENT_NV 0x20A7 +#define WGL_DEPTH_FLOAT_EXT 0x2040 +#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_DOUBLE_BUFFER_EXT 0x2011 +#define WGL_DRAW_TO_BITMAP_ARB 0x2002 +#define WGL_DRAW_TO_BITMAP_EXT 0x2002 +#define WGL_DRAW_TO_PBUFFER_ARB 0x202D +#define WGL_DRAW_TO_PBUFFER_EXT 0x202D +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_DRAW_TO_WINDOW_EXT 0x2001 +#define WGL_FLOAT_COMPONENTS_NV 0x20B0 +#define WGL_FONT_LINES 0 +#define WGL_FONT_POLYGONS 1 +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_FRONT_LEFT_ARB 0x2083 +#define WGL_FRONT_RIGHT_ARB 0x2084 +#define WGL_FULL_ACCELERATION_ARB 0x2027 +#define WGL_FULL_ACCELERATION_EXT 0x2027 +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F +#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E +#define WGL_GENERIC_ACCELERATION_ARB 0x2026 +#define WGL_GENERIC_ACCELERATION_EXT 0x2026 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GPU_CLOCK_AMD 0x21A4 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_NUM_PIPES_AMD 0x21A5 +#define WGL_GPU_NUM_RB_AMD 0x21A7 +#define WGL_GPU_NUM_SIMD_AMD 0x21A6 +#define WGL_GPU_NUM_SPI_AMD 0x21A8 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_RAM_AMD 0x21A3 +#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 +#define WGL_GPU_VENDOR_AMD 0x1F00 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_BITS_EXT 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_GREEN_SHIFT_EXT 0x2018 +#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 +#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 +#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E +#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F +#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F +#define WGL_MIPMAP_LEVEL_ARB 0x207B +#define WGL_MIPMAP_TEXTURE_ARB 0x2074 +#define WGL_NEED_PALETTE_ARB 0x2004 +#define WGL_NEED_PALETTE_EXT 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 +#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_NO_ACCELERATION_EXT 0x2025 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_NUMBER_OVERLAYS_ARB 0x2008 +#define WGL_NUMBER_OVERLAYS_EXT 0x2008 +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 +#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 +#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF +#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 +#define WGL_PBUFFER_HEIGHT_ARB 0x2035 +#define WGL_PBUFFER_HEIGHT_EXT 0x2035 +#define WGL_PBUFFER_LARGEST_ARB 0x2033 +#define WGL_PBUFFER_LARGEST_EXT 0x2033 +#define WGL_PBUFFER_LOST_ARB 0x2036 +#define WGL_PBUFFER_WIDTH_ARB 0x2034 +#define WGL_PBUFFER_WIDTH_EXT 0x2034 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_PIXEL_TYPE_EXT 0x2013 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_BITS_EXT 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_RED_SHIFT_EXT 0x2016 +#define WGL_SAMPLES_3DFX 0x2061 +#define WGL_SAMPLES_ARB 0x2042 +#define WGL_SAMPLES_EXT 0x2042 +#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 +#define WGL_SAMPLE_BUFFERS_ARB 0x2041 +#define WGL_SAMPLE_BUFFERS_EXT 0x2041 +#define WGL_SHARE_ACCUM_ARB 0x200E +#define WGL_SHARE_ACCUM_EXT 0x200E +#define WGL_SHARE_DEPTH_ARB 0x200C +#define WGL_SHARE_DEPTH_EXT 0x200C +#define WGL_SHARE_STENCIL_ARB 0x200D +#define WGL_SHARE_STENCIL_EXT 0x200D +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_STENCIL_BITS_EXT 0x2023 +#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 +#define WGL_STEREO_ARB 0x2012 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 +#define WGL_STEREO_EXT 0x2012 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_SUPPORT_GDI_ARB 0x200F +#define WGL_SUPPORT_GDI_EXT 0x200F +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_SUPPORT_OPENGL_EXT 0x2010 +#define WGL_SWAP_COPY_ARB 0x2029 +#define WGL_SWAP_COPY_EXT 0x2029 +#define WGL_SWAP_EXCHANGE_ARB 0x2028 +#define WGL_SWAP_EXCHANGE_EXT 0x2028 +#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 +#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 +#define WGL_SWAP_MAIN_PLANE 0x00000001 +#define WGL_SWAP_METHOD_ARB 0x2007 +#define WGL_SWAP_METHOD_EXT 0x2007 +#define WGL_SWAP_OVERLAY1 0x00000002 +#define WGL_SWAP_OVERLAY10 0x00000400 +#define WGL_SWAP_OVERLAY11 0x00000800 +#define WGL_SWAP_OVERLAY12 0x00001000 +#define WGL_SWAP_OVERLAY13 0x00002000 +#define WGL_SWAP_OVERLAY14 0x00004000 +#define WGL_SWAP_OVERLAY15 0x00008000 +#define WGL_SWAP_OVERLAY2 0x00000004 +#define WGL_SWAP_OVERLAY3 0x00000008 +#define WGL_SWAP_OVERLAY4 0x00000010 +#define WGL_SWAP_OVERLAY5 0x00000020 +#define WGL_SWAP_OVERLAY6 0x00000040 +#define WGL_SWAP_OVERLAY7 0x00000080 +#define WGL_SWAP_OVERLAY8 0x00000100 +#define WGL_SWAP_OVERLAY9 0x00000200 +#define WGL_SWAP_UNDEFINED_ARB 0x202A +#define WGL_SWAP_UNDEFINED_EXT 0x202A +#define WGL_SWAP_UNDERLAY1 0x00010000 +#define WGL_SWAP_UNDERLAY10 0x02000000 +#define WGL_SWAP_UNDERLAY11 0x04000000 +#define WGL_SWAP_UNDERLAY12 0x08000000 +#define WGL_SWAP_UNDERLAY13 0x10000000 +#define WGL_SWAP_UNDERLAY14 0x20000000 +#define WGL_SWAP_UNDERLAY15 0x40000000 +#define WGL_SWAP_UNDERLAY2 0x00020000 +#define WGL_SWAP_UNDERLAY3 0x00040000 +#define WGL_SWAP_UNDERLAY4 0x00080000 +#define WGL_SWAP_UNDERLAY5 0x00100000 +#define WGL_SWAP_UNDERLAY6 0x00200000 +#define WGL_SWAP_UNDERLAY7 0x00400000 +#define WGL_SWAP_UNDERLAY8 0x00800000 +#define WGL_SWAP_UNDERLAY9 0x01000000 +#define WGL_TEXTURE_1D_ARB 0x2079 +#define WGL_TEXTURE_2D_ARB 0x207A +#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 +#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 +#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 +#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 +#define WGL_TEXTURE_FORMAT_ARB 0x2072 +#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 +#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 +#define WGL_TEXTURE_RGBA_ARB 0x2076 +#define WGL_TEXTURE_RGB_ARB 0x2075 +#define WGL_TEXTURE_TARGET_ARB 0x2073 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_ARB 0x200A +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_EXT 0x200A +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B +#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 +#define WGL_TRANSPARENT_VALUE_EXT 0x200B +#define WGL_TYPE_COLORINDEX_ARB 0x202C +#define WGL_TYPE_COLORINDEX_EXT 0x202C +#define WGL_TYPE_RGBA_ARB 0x202B +#define WGL_TYPE_RGBA_EXT 0x202B +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 +#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 +#define WGL_UNIQUE_ID_NV 0x20CE +#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 +#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 +#define WGL_VIDEO_OUT_FIELD_1 0x20C9 +#define WGL_VIDEO_OUT_FIELD_2 0x20CA +#define WGL_VIDEO_OUT_FRAME 0x20C8 +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC + +struct _GPU_DEVICE { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD Flags; + RECT rcVirtualScreen; +}; +DECLARE_HANDLE(HPBUFFERARB); +DECLARE_HANDLE(HPBUFFEREXT); +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); +DECLARE_HANDLE(HPVIDEODEV); +DECLARE_HANDLE(HPGPUNV); +DECLARE_HANDLE(HGPUNV); +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); +typedef struct _GPU_DEVICE GPU_DEVICE; +typedef struct _GPU_DEVICE *PGPU_DEVICE; + +#define WGL_VERSION_1_0 1 +GLAD_API_CALL int GLAD_WGL_VERSION_1_0; +#define WGL_3DFX_multisample 1 +GLAD_API_CALL int GLAD_WGL_3DFX_multisample; +#define WGL_3DL_stereo_control 1 +GLAD_API_CALL int GLAD_WGL_3DL_stereo_control; +#define WGL_AMD_gpu_association 1 +GLAD_API_CALL int GLAD_WGL_AMD_gpu_association; +#define WGL_ARB_buffer_region 1 +GLAD_API_CALL int GLAD_WGL_ARB_buffer_region; +#define WGL_ARB_context_flush_control 1 +GLAD_API_CALL int GLAD_WGL_ARB_context_flush_control; +#define WGL_ARB_create_context 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context; +#define WGL_ARB_create_context_no_error 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context_no_error; +#define WGL_ARB_create_context_profile 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context_profile; +#define WGL_ARB_create_context_robustness 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context_robustness; +#define WGL_ARB_extensions_string 1 +GLAD_API_CALL int GLAD_WGL_ARB_extensions_string; +#define WGL_ARB_framebuffer_sRGB 1 +GLAD_API_CALL int GLAD_WGL_ARB_framebuffer_sRGB; +#define WGL_ARB_make_current_read 1 +GLAD_API_CALL int GLAD_WGL_ARB_make_current_read; +#define WGL_ARB_multisample 1 +GLAD_API_CALL int GLAD_WGL_ARB_multisample; +#define WGL_ARB_pbuffer 1 +GLAD_API_CALL int GLAD_WGL_ARB_pbuffer; +#define WGL_ARB_pixel_format 1 +GLAD_API_CALL int GLAD_WGL_ARB_pixel_format; +#define WGL_ARB_pixel_format_float 1 +GLAD_API_CALL int GLAD_WGL_ARB_pixel_format_float; +#define WGL_ARB_render_texture 1 +GLAD_API_CALL int GLAD_WGL_ARB_render_texture; +#define WGL_ARB_robustness_application_isolation 1 +GLAD_API_CALL int GLAD_WGL_ARB_robustness_application_isolation; +#define WGL_ARB_robustness_share_group_isolation 1 +GLAD_API_CALL int GLAD_WGL_ARB_robustness_share_group_isolation; +#define WGL_ATI_pixel_format_float 1 +GLAD_API_CALL int GLAD_WGL_ATI_pixel_format_float; +#define WGL_ATI_render_texture_rectangle 1 +GLAD_API_CALL int GLAD_WGL_ATI_render_texture_rectangle; +#define WGL_EXT_colorspace 1 +GLAD_API_CALL int GLAD_WGL_EXT_colorspace; +#define WGL_EXT_create_context_es2_profile 1 +GLAD_API_CALL int GLAD_WGL_EXT_create_context_es2_profile; +#define WGL_EXT_create_context_es_profile 1 +GLAD_API_CALL int GLAD_WGL_EXT_create_context_es_profile; +#define WGL_EXT_depth_float 1 +GLAD_API_CALL int GLAD_WGL_EXT_depth_float; +#define WGL_EXT_display_color_table 1 +GLAD_API_CALL int GLAD_WGL_EXT_display_color_table; +#define WGL_EXT_extensions_string 1 +GLAD_API_CALL int GLAD_WGL_EXT_extensions_string; +#define WGL_EXT_framebuffer_sRGB 1 +GLAD_API_CALL int GLAD_WGL_EXT_framebuffer_sRGB; +#define WGL_EXT_make_current_read 1 +GLAD_API_CALL int GLAD_WGL_EXT_make_current_read; +#define WGL_EXT_multisample 1 +GLAD_API_CALL int GLAD_WGL_EXT_multisample; +#define WGL_EXT_pbuffer 1 +GLAD_API_CALL int GLAD_WGL_EXT_pbuffer; +#define WGL_EXT_pixel_format 1 +GLAD_API_CALL int GLAD_WGL_EXT_pixel_format; +#define WGL_EXT_pixel_format_packed_float 1 +GLAD_API_CALL int GLAD_WGL_EXT_pixel_format_packed_float; +#define WGL_EXT_swap_control 1 +GLAD_API_CALL int GLAD_WGL_EXT_swap_control; +#define WGL_EXT_swap_control_tear 1 +GLAD_API_CALL int GLAD_WGL_EXT_swap_control_tear; +#define WGL_I3D_digital_video_control 1 +GLAD_API_CALL int GLAD_WGL_I3D_digital_video_control; +#define WGL_I3D_gamma 1 +GLAD_API_CALL int GLAD_WGL_I3D_gamma; +#define WGL_I3D_genlock 1 +GLAD_API_CALL int GLAD_WGL_I3D_genlock; +#define WGL_I3D_image_buffer 1 +GLAD_API_CALL int GLAD_WGL_I3D_image_buffer; +#define WGL_I3D_swap_frame_lock 1 +GLAD_API_CALL int GLAD_WGL_I3D_swap_frame_lock; +#define WGL_I3D_swap_frame_usage 1 +GLAD_API_CALL int GLAD_WGL_I3D_swap_frame_usage; +#define WGL_NV_DX_interop 1 +GLAD_API_CALL int GLAD_WGL_NV_DX_interop; +#define WGL_NV_DX_interop2 1 +GLAD_API_CALL int GLAD_WGL_NV_DX_interop2; +#define WGL_NV_copy_image 1 +GLAD_API_CALL int GLAD_WGL_NV_copy_image; +#define WGL_NV_delay_before_swap 1 +GLAD_API_CALL int GLAD_WGL_NV_delay_before_swap; +#define WGL_NV_float_buffer 1 +GLAD_API_CALL int GLAD_WGL_NV_float_buffer; +#define WGL_NV_gpu_affinity 1 +GLAD_API_CALL int GLAD_WGL_NV_gpu_affinity; +#define WGL_NV_multigpu_context 1 +GLAD_API_CALL int GLAD_WGL_NV_multigpu_context; +#define WGL_NV_multisample_coverage 1 +GLAD_API_CALL int GLAD_WGL_NV_multisample_coverage; +#define WGL_NV_present_video 1 +GLAD_API_CALL int GLAD_WGL_NV_present_video; +#define WGL_NV_render_depth_texture 1 +GLAD_API_CALL int GLAD_WGL_NV_render_depth_texture; +#define WGL_NV_render_texture_rectangle 1 +GLAD_API_CALL int GLAD_WGL_NV_render_texture_rectangle; +#define WGL_NV_swap_group 1 +GLAD_API_CALL int GLAD_WGL_NV_swap_group; +#define WGL_NV_vertex_array_range 1 +GLAD_API_CALL int GLAD_WGL_NV_vertex_array_range; +#define WGL_NV_video_capture 1 +GLAD_API_CALL int GLAD_WGL_NV_video_capture; +#define WGL_NV_video_output 1 +GLAD_API_CALL int GLAD_WGL_NV_video_output; +#define WGL_OML_sync_control 1 +GLAD_API_CALL int GLAD_WGL_OML_sync_control; + +typedef int(GLAD_API_PTR *PFNCHOOSEPIXELFORMATPROC)(HDC hDc, const PIXELFORMATDESCRIPTOR *pPfd); +typedef int(GLAD_API_PTR *PFNDESCRIBEPIXELFORMATPROC)(HDC hdc, int ipfd, UINT cjpfd, + PIXELFORMATDESCRIPTOR *ppfd); +typedef UINT(GLAD_API_PTR *PFNGETENHMETAFILEPIXELFORMATPROC)(HENHMETAFILE hemf, UINT cbBuffer, + PIXELFORMATDESCRIPTOR *ppfd); +typedef int(GLAD_API_PTR *PFNGETPIXELFORMATPROC)(HDC hdc); +typedef BOOL(GLAD_API_PTR *PFNSETPIXELFORMATPROC)(HDC hdc, int ipfd, + const PIXELFORMATDESCRIPTOR *ppfd); +typedef BOOL(GLAD_API_PTR *PFNSWAPBUFFERSPROC)(HDC hdc); +typedef void *(GLAD_API_PTR *PFNWGLALLOCATEMEMORYNVPROC)(GLsizei size, GLfloat readfreq, + GLfloat writefreq, GLfloat priority); +typedef BOOL(GLAD_API_PTR *PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)(HDC hDC, const HANDLE *pEvent, + const LPVOID *pAddress, + const DWORD *pSize, UINT count); +typedef BOOL(GLAD_API_PTR *PFNWGLBEGINFRAMETRACKINGI3DPROC)(void); +typedef GLboolean(GLAD_API_PTR *PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)(GLushort id); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDSWAPBARRIERNVPROC)(GLuint group, GLuint barrier); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDTEXIMAGEARBPROC)(HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEOCAPTUREDEVICENVPROC)(UINT uVideoSlot, + HVIDEOINPUTDEVICENV hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEODEVICENVPROC)(HDC hDc, unsigned int uVideoSlot, + HVIDEOOUTPUTDEVICENV hVideoDevice, + const int *piAttribList); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEOIMAGENVPROC)(HPVIDEODEV hVideoDevice, + HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef VOID(GLAD_API_PTR *PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)( + HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef BOOL(GLAD_API_PTR *PFNWGLCHOOSEPIXELFORMATARBPROC)(HDC hdc, const int *piAttribIList, + const FLOAT *pfAttribFList, + UINT nMaxFormats, int *piFormats, + UINT *nNumFormats); +typedef BOOL(GLAD_API_PTR *PFNWGLCHOOSEPIXELFORMATEXTPROC)(HDC hdc, const int *piAttribIList, + const FLOAT *pfAttribFList, + UINT nMaxFormats, int *piFormats, + UINT *nNumFormats); +typedef BOOL(GLAD_API_PTR *PFNWGLCOPYCONTEXTPROC)(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask); +typedef BOOL(GLAD_API_PTR *PFNWGLCOPYIMAGESUBDATANVPROC)( + HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, + GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, + GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +typedef HDC(GLAD_API_PTR *PFNWGLCREATEAFFINITYDCNVPROC)(const HGPUNV *phGpuList); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)(UINT id); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)(UINT id, + HGLRC hShareContext, + const int *attribList); +typedef HANDLE(GLAD_API_PTR *PFNWGLCREATEBUFFERREGIONARBPROC)(HDC hDC, int iLayerPlane, UINT uType); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATECONTEXTPROC)(HDC hDc); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC hDC, HGLRC hShareContext, + const int *attribList); +typedef GLboolean(GLAD_API_PTR *PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)(GLushort id); +typedef LPVOID(GLAD_API_PTR *PFNWGLCREATEIMAGEBUFFERI3DPROC)(HDC hDC, DWORD dwSize, UINT uFlags); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATELAYERCONTEXTPROC)(HDC hDc, int level); +typedef HPBUFFERARB(GLAD_API_PTR *PFNWGLCREATEPBUFFERARBPROC)(HDC hDC, int iPixelFormat, int iWidth, + int iHeight, const int *piAttribList); +typedef HPBUFFEREXT(GLAD_API_PTR *PFNWGLCREATEPBUFFEREXTPROC)(HDC hDC, int iPixelFormat, int iWidth, + int iHeight, const int *piAttribList); +typedef BOOL(GLAD_API_PTR *PFNWGLDXCLOSEDEVICENVPROC)(HANDLE hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLDXLOCKOBJECTSNVPROC)(HANDLE hDevice, GLint count, + HANDLE *hObjects); +typedef BOOL(GLAD_API_PTR *PFNWGLDXOBJECTACCESSNVPROC)(HANDLE hObject, GLenum access); +typedef HANDLE(GLAD_API_PTR *PFNWGLDXOPENDEVICENVPROC)(void *dxDevice); +typedef HANDLE(GLAD_API_PTR *PFNWGLDXREGISTEROBJECTNVPROC)(HANDLE hDevice, void *dxObject, + GLuint name, GLenum type, GLenum access); +typedef BOOL(GLAD_API_PTR *PFNWGLDXSETRESOURCESHAREHANDLENVPROC)(void *dxObject, + HANDLE shareHandle); +typedef BOOL(GLAD_API_PTR *PFNWGLDXUNLOCKOBJECTSNVPROC)(HANDLE hDevice, GLint count, + HANDLE *hObjects); +typedef BOOL(GLAD_API_PTR *PFNWGLDXUNREGISTEROBJECTNVPROC)(HANDLE hDevice, HANDLE hObject); +typedef BOOL(GLAD_API_PTR *PFNWGLDELAYBEFORESWAPNVPROC)(HDC hDC, GLfloat seconds); +typedef BOOL(GLAD_API_PTR *PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)(HGLRC hglrc); +typedef VOID(GLAD_API_PTR *PFNWGLDELETEBUFFERREGIONARBPROC)(HANDLE hRegion); +typedef BOOL(GLAD_API_PTR *PFNWGLDELETECONTEXTPROC)(HGLRC oldContext); +typedef BOOL(GLAD_API_PTR *PFNWGLDELETEDCNVPROC)(HDC hdc); +typedef BOOL(GLAD_API_PTR *PFNWGLDESCRIBELAYERPLANEPROC)(HDC hDc, int pixelFormat, int layerPlane, + UINT nBytes, LAYERPLANEDESCRIPTOR *plpd); +typedef VOID(GLAD_API_PTR *PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)(GLushort id); +typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYIMAGEBUFFERI3DPROC)(HDC hDC, LPVOID pAddress); +typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYPBUFFERARBPROC)(HPBUFFERARB hPbuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYPBUFFEREXTPROC)(HPBUFFEREXT hPbuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLDISABLEFRAMELOCKI3DPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLDISABLEGENLOCKI3DPROC)(HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLENABLEFRAMELOCKI3DPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLENABLEGENLOCKI3DPROC)(HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLENDFRAMETRACKINGI3DPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUDEVICESNVPROC)(HGPUNV hGpu, UINT iDeviceIndex, + PGPU_DEVICE lpGpuDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)(HDC hAffinityDC, UINT iGpuIndex, + HGPUNV *hGpu); +typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUSNVPROC)(UINT iGpuIndex, HGPUNV *phGpu); +typedef UINT(GLAD_API_PTR *PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC)( + HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList); +typedef int(GLAD_API_PTR *PFNWGLENUMERATEVIDEODEVICESNVPROC)(HDC hDc, + HVIDEOOUTPUTDEVICENV *phDeviceList); +typedef void(GLAD_API_PTR *PFNWGLFREEMEMORYNVPROC)(void *pointer); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSAMPLERATEI3DPROC)(HDC hDC, UINT uRate); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEDELAYI3DPROC)(HDC hDC, UINT uDelay); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEEDGEI3DPROC)(HDC hDC, UINT uEdge); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEI3DPROC)(HDC hDC, UINT uSource); +typedef UINT(GLAD_API_PTR *PFNWGLGETCONTEXTGPUIDAMDPROC)(HGLRC hglrc); +typedef HGLRC(GLAD_API_PTR *PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)(void); +typedef HGLRC(GLAD_API_PTR *PFNWGLGETCURRENTCONTEXTPROC)(void); +typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTDCPROC)(void); +typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTREADDCARBPROC)(void); +typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTREADDCEXTPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + int *piValue); +typedef const char *(GLAD_API_PTR *PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); +typedef const char *(GLAD_API_PTR *PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLGETFRAMEUSAGEI3DPROC)(float *pUsage); +typedef UINT(GLAD_API_PTR *PFNWGLGETGPUIDSAMDPROC)(UINT maxCount, UINT *ids); +typedef INT(GLAD_API_PTR *PFNWGLGETGPUINFOAMDPROC)(UINT id, INT property, GLenum dataType, + UINT size, void *data); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGAMMATABLEI3DPROC)(HDC hDC, int iEntries, USHORT *puRed, + USHORT *puGreen, USHORT *puBlue); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSAMPLERATEI3DPROC)(HDC hDC, UINT *uRate); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)(HDC hDC, UINT *uDelay); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)(HDC hDC, UINT *uEdge); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEI3DPROC)(HDC hDC, UINT *uSource); +typedef int(GLAD_API_PTR *PFNWGLGETLAYERPALETTEENTRIESPROC)(HDC hdc, int iLayerPlane, int iStart, + int cEntries, COLORREF *pcr); +typedef BOOL(GLAD_API_PTR *PFNWGLGETMSCRATEOMLPROC)(HDC hdc, INT32 *numerator, INT32 *denominator); +typedef HDC(GLAD_API_PTR *PFNWGLGETPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer); +typedef HDC(GLAD_API_PTR *PFNWGLGETPBUFFERDCEXTPROC)(HPBUFFEREXT hPbuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBFVARBPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + const int *piAttributes, + FLOAT *pfValues); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + int *piAttributes, FLOAT *pfValues); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + const int *piAttributes, + int *piValues); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + int *piAttributes, int *piValues); +typedef PROC(GLAD_API_PTR *PFNWGLGETPROCADDRESSPROC)(LPCSTR lpszProc); +typedef int(GLAD_API_PTR *PFNWGLGETSWAPINTERVALEXTPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLGETSYNCVALUESOMLPROC)(HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc); +typedef BOOL(GLAD_API_PTR *PFNWGLGETVIDEODEVICENVPROC)(HDC hDC, int numDevices, + HPVIDEODEV *hVideoDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLGETVIDEOINFONVPROC)(HPVIDEODEV hpVideoDevice, + unsigned long *pulCounterOutputPbuffer, + unsigned long *pulCounterOutputVideo); +typedef BOOL(GLAD_API_PTR *PFNWGLISENABLEDFRAMELOCKI3DPROC)(BOOL *pFlag); +typedef BOOL(GLAD_API_PTR *PFNWGLISENABLEDGENLOCKI3DPROC)(HDC hDC, BOOL *pFlag); +typedef BOOL(GLAD_API_PTR *PFNWGLJOINSWAPGROUPNVPROC)(HDC hDC, GLuint group); +typedef GLboolean(GLAD_API_PTR *PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)(const GLushort *table, + GLuint length); +typedef BOOL(GLAD_API_PTR *PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC)(HDC hDc, + HVIDEOINPUTDEVICENV hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)(HGLRC hglrc); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKECONTEXTCURRENTARBPROC)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKECONTEXTCURRENTEXTPROC)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKECURRENTPROC)(HDC hDc, HGLRC newContext); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYCURRENTCONTEXTNVPROC)(int iAttribute, int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMECOUNTNVPROC)(HDC hDC, GLuint *count); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMELOCKMASTERI3DPROC)(BOOL *pFlag); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMETRACKINGI3DPROC)(DWORD *pFrameCount, + DWORD *pMissedFrames, + float *pLastMissedUsage); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)(HDC hDC, UINT *uMaxLineDelay, + UINT *uMaxPixelDelay); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYMAXSWAPGROUPSNVPROC)(HDC hDC, GLuint *maxGroups, + GLuint *maxBarriers); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYPBUFFERARBPROC)(HPBUFFERARB hPbuffer, int iAttribute, + int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYPBUFFEREXTPROC)(HPBUFFEREXT hPbuffer, int iAttribute, + int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYSWAPGROUPNVPROC)(HDC hDC, GLuint *group, GLuint *barrier); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC)(HDC hDc, + HVIDEOINPUTDEVICENV hDevice, + int iAttribute, int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLREALIZELAYERPALETTEPROC)(HDC hdc, int iLayerPlane, BOOL bRealize); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)(HDC hDC, const LPVOID *pAddress, + UINT count); +typedef int(GLAD_API_PTR *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer, HDC hDC); +typedef int(GLAD_API_PTR *PFNWGLRELEASEPBUFFERDCEXTPROC)(HPBUFFEREXT hPbuffer, HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASETEXIMAGEARBPROC)(HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC)(HDC hDc, + HVIDEOINPUTDEVICENV hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEODEVICENVPROC)(HPVIDEODEV hVideoDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEOIMAGENVPROC)(HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLRESETFRAMECOUNTNVPROC)(HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLRESTOREBUFFERREGIONARBPROC)(HANDLE hRegion, int x, int y, + int width, int height, int xSrc, + int ySrc); +typedef BOOL(GLAD_API_PTR *PFNWGLSAVEBUFFERREGIONARBPROC)(HANDLE hRegion, int x, int y, int width, + int height); +typedef BOOL(GLAD_API_PTR *PFNWGLSENDPBUFFERTOVIDEONVPROC)(HPBUFFERARB hPbuffer, int iBufferType, + unsigned long *pulCounterPbuffer, + BOOL bBlock); +typedef BOOL(GLAD_API_PTR *PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + const int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLSETGAMMATABLEI3DPROC)(HDC hDC, int iEntries, const USHORT *puRed, + const USHORT *puGreen, const USHORT *puBlue); +typedef BOOL(GLAD_API_PTR *PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + const int *piValue); +typedef int(GLAD_API_PTR *PFNWGLSETLAYERPALETTEENTRIESPROC)(HDC hdc, int iLayerPlane, int iStart, + int cEntries, const COLORREF *pcr); +typedef BOOL(GLAD_API_PTR *PFNWGLSETPBUFFERATTRIBARBPROC)(HPBUFFERARB hPbuffer, + const int *piAttribList); +typedef BOOL(GLAD_API_PTR *PFNWGLSETSTEREOEMITTERSTATE3DLPROC)(HDC hDC, UINT uState); +typedef BOOL(GLAD_API_PTR *PFNWGLSHARELISTSPROC)(HGLRC hrcSrvShare, HGLRC hrcSrvSource); +typedef INT64(GLAD_API_PTR *PFNWGLSWAPBUFFERSMSCOMLPROC)(HDC hdc, INT64 target_msc, INT64 divisor, + INT64 remainder); +typedef BOOL(GLAD_API_PTR *PFNWGLSWAPINTERVALEXTPROC)(int interval); +typedef BOOL(GLAD_API_PTR *PFNWGLSWAPLAYERBUFFERSPROC)(HDC hdc, UINT fuFlags); +typedef INT64(GLAD_API_PTR *PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)(HDC hdc, INT fuPlanes, + INT64 target_msc, INT64 divisor, + INT64 remainder); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSAPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSWPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase, FLOAT deviation, + FLOAT extrusion, int format, + LPGLYPHMETRICSFLOAT lpgmf); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESAPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase, FLOAT deviation, + FLOAT extrusion, int format, + LPGLYPHMETRICSFLOAT lpgmf); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESWPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase, FLOAT deviation, + FLOAT extrusion, int format, + LPGLYPHMETRICSFLOAT lpgmf); +typedef BOOL(GLAD_API_PTR *PFNWGLWAITFORMSCOMLPROC)(HDC hdc, INT64 target_msc, INT64 divisor, + INT64 remainder, INT64 *ust, INT64 *msc, + INT64 *sbc); +typedef BOOL(GLAD_API_PTR *PFNWGLWAITFORSBCOMLPROC)(HDC hdc, INT64 target_sbc, INT64 *ust, + INT64 *msc, INT64 *sbc); + +GLAD_API_CALL PFNWGLALLOCATEMEMORYNVPROC glad_wglAllocateMemoryNV; +#define wglAllocateMemoryNV glad_wglAllocateMemoryNV +GLAD_API_CALL PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC glad_wglAssociateImageBufferEventsI3D; +#define wglAssociateImageBufferEventsI3D glad_wglAssociateImageBufferEventsI3D +GLAD_API_CALL PFNWGLBEGINFRAMETRACKINGI3DPROC glad_wglBeginFrameTrackingI3D; +#define wglBeginFrameTrackingI3D glad_wglBeginFrameTrackingI3D +GLAD_API_CALL PFNWGLBINDDISPLAYCOLORTABLEEXTPROC glad_wglBindDisplayColorTableEXT; +#define wglBindDisplayColorTableEXT glad_wglBindDisplayColorTableEXT +GLAD_API_CALL PFNWGLBINDSWAPBARRIERNVPROC glad_wglBindSwapBarrierNV; +#define wglBindSwapBarrierNV glad_wglBindSwapBarrierNV +GLAD_API_CALL PFNWGLBINDTEXIMAGEARBPROC glad_wglBindTexImageARB; +#define wglBindTexImageARB glad_wglBindTexImageARB +GLAD_API_CALL PFNWGLBINDVIDEOCAPTUREDEVICENVPROC glad_wglBindVideoCaptureDeviceNV; +#define wglBindVideoCaptureDeviceNV glad_wglBindVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLBINDVIDEODEVICENVPROC glad_wglBindVideoDeviceNV; +#define wglBindVideoDeviceNV glad_wglBindVideoDeviceNV +GLAD_API_CALL PFNWGLBINDVIDEOIMAGENVPROC glad_wglBindVideoImageNV; +#define wglBindVideoImageNV glad_wglBindVideoImageNV +GLAD_API_CALL PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC glad_wglBlitContextFramebufferAMD; +#define wglBlitContextFramebufferAMD glad_wglBlitContextFramebufferAMD +GLAD_API_CALL PFNWGLCHOOSEPIXELFORMATARBPROC glad_wglChoosePixelFormatARB; +#define wglChoosePixelFormatARB glad_wglChoosePixelFormatARB +GLAD_API_CALL PFNWGLCHOOSEPIXELFORMATEXTPROC glad_wglChoosePixelFormatEXT; +#define wglChoosePixelFormatEXT glad_wglChoosePixelFormatEXT +GLAD_API_CALL PFNWGLCOPYIMAGESUBDATANVPROC glad_wglCopyImageSubDataNV; +#define wglCopyImageSubDataNV glad_wglCopyImageSubDataNV +GLAD_API_CALL PFNWGLCREATEAFFINITYDCNVPROC glad_wglCreateAffinityDCNV; +#define wglCreateAffinityDCNV glad_wglCreateAffinityDCNV +GLAD_API_CALL PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC glad_wglCreateAssociatedContextAMD; +#define wglCreateAssociatedContextAMD glad_wglCreateAssociatedContextAMD +GLAD_API_CALL PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC glad_wglCreateAssociatedContextAttribsAMD; +#define wglCreateAssociatedContextAttribsAMD glad_wglCreateAssociatedContextAttribsAMD +GLAD_API_CALL PFNWGLCREATEBUFFERREGIONARBPROC glad_wglCreateBufferRegionARB; +#define wglCreateBufferRegionARB glad_wglCreateBufferRegionARB +GLAD_API_CALL PFNWGLCREATECONTEXTATTRIBSARBPROC glad_wglCreateContextAttribsARB; +#define wglCreateContextAttribsARB glad_wglCreateContextAttribsARB +GLAD_API_CALL PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC glad_wglCreateDisplayColorTableEXT; +#define wglCreateDisplayColorTableEXT glad_wglCreateDisplayColorTableEXT +GLAD_API_CALL PFNWGLCREATEIMAGEBUFFERI3DPROC glad_wglCreateImageBufferI3D; +#define wglCreateImageBufferI3D glad_wglCreateImageBufferI3D +GLAD_API_CALL PFNWGLCREATEPBUFFERARBPROC glad_wglCreatePbufferARB; +#define wglCreatePbufferARB glad_wglCreatePbufferARB +GLAD_API_CALL PFNWGLCREATEPBUFFEREXTPROC glad_wglCreatePbufferEXT; +#define wglCreatePbufferEXT glad_wglCreatePbufferEXT +GLAD_API_CALL PFNWGLDXCLOSEDEVICENVPROC glad_wglDXCloseDeviceNV; +#define wglDXCloseDeviceNV glad_wglDXCloseDeviceNV +GLAD_API_CALL PFNWGLDXLOCKOBJECTSNVPROC glad_wglDXLockObjectsNV; +#define wglDXLockObjectsNV glad_wglDXLockObjectsNV +GLAD_API_CALL PFNWGLDXOBJECTACCESSNVPROC glad_wglDXObjectAccessNV; +#define wglDXObjectAccessNV glad_wglDXObjectAccessNV +GLAD_API_CALL PFNWGLDXOPENDEVICENVPROC glad_wglDXOpenDeviceNV; +#define wglDXOpenDeviceNV glad_wglDXOpenDeviceNV +GLAD_API_CALL PFNWGLDXREGISTEROBJECTNVPROC glad_wglDXRegisterObjectNV; +#define wglDXRegisterObjectNV glad_wglDXRegisterObjectNV +GLAD_API_CALL PFNWGLDXSETRESOURCESHAREHANDLENVPROC glad_wglDXSetResourceShareHandleNV; +#define wglDXSetResourceShareHandleNV glad_wglDXSetResourceShareHandleNV +GLAD_API_CALL PFNWGLDXUNLOCKOBJECTSNVPROC glad_wglDXUnlockObjectsNV; +#define wglDXUnlockObjectsNV glad_wglDXUnlockObjectsNV +GLAD_API_CALL PFNWGLDXUNREGISTEROBJECTNVPROC glad_wglDXUnregisterObjectNV; +#define wglDXUnregisterObjectNV glad_wglDXUnregisterObjectNV +GLAD_API_CALL PFNWGLDELAYBEFORESWAPNVPROC glad_wglDelayBeforeSwapNV; +#define wglDelayBeforeSwapNV glad_wglDelayBeforeSwapNV +GLAD_API_CALL PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC glad_wglDeleteAssociatedContextAMD; +#define wglDeleteAssociatedContextAMD glad_wglDeleteAssociatedContextAMD +GLAD_API_CALL PFNWGLDELETEBUFFERREGIONARBPROC glad_wglDeleteBufferRegionARB; +#define wglDeleteBufferRegionARB glad_wglDeleteBufferRegionARB +GLAD_API_CALL PFNWGLDELETEDCNVPROC glad_wglDeleteDCNV; +#define wglDeleteDCNV glad_wglDeleteDCNV +GLAD_API_CALL PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC glad_wglDestroyDisplayColorTableEXT; +#define wglDestroyDisplayColorTableEXT glad_wglDestroyDisplayColorTableEXT +GLAD_API_CALL PFNWGLDESTROYIMAGEBUFFERI3DPROC glad_wglDestroyImageBufferI3D; +#define wglDestroyImageBufferI3D glad_wglDestroyImageBufferI3D +GLAD_API_CALL PFNWGLDESTROYPBUFFERARBPROC glad_wglDestroyPbufferARB; +#define wglDestroyPbufferARB glad_wglDestroyPbufferARB +GLAD_API_CALL PFNWGLDESTROYPBUFFEREXTPROC glad_wglDestroyPbufferEXT; +#define wglDestroyPbufferEXT glad_wglDestroyPbufferEXT +GLAD_API_CALL PFNWGLDISABLEFRAMELOCKI3DPROC glad_wglDisableFrameLockI3D; +#define wglDisableFrameLockI3D glad_wglDisableFrameLockI3D +GLAD_API_CALL PFNWGLDISABLEGENLOCKI3DPROC glad_wglDisableGenlockI3D; +#define wglDisableGenlockI3D glad_wglDisableGenlockI3D +GLAD_API_CALL PFNWGLENABLEFRAMELOCKI3DPROC glad_wglEnableFrameLockI3D; +#define wglEnableFrameLockI3D glad_wglEnableFrameLockI3D +GLAD_API_CALL PFNWGLENABLEGENLOCKI3DPROC glad_wglEnableGenlockI3D; +#define wglEnableGenlockI3D glad_wglEnableGenlockI3D +GLAD_API_CALL PFNWGLENDFRAMETRACKINGI3DPROC glad_wglEndFrameTrackingI3D; +#define wglEndFrameTrackingI3D glad_wglEndFrameTrackingI3D +GLAD_API_CALL PFNWGLENUMGPUDEVICESNVPROC glad_wglEnumGpuDevicesNV; +#define wglEnumGpuDevicesNV glad_wglEnumGpuDevicesNV +GLAD_API_CALL PFNWGLENUMGPUSFROMAFFINITYDCNVPROC glad_wglEnumGpusFromAffinityDCNV; +#define wglEnumGpusFromAffinityDCNV glad_wglEnumGpusFromAffinityDCNV +GLAD_API_CALL PFNWGLENUMGPUSNVPROC glad_wglEnumGpusNV; +#define wglEnumGpusNV glad_wglEnumGpusNV +GLAD_API_CALL PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC glad_wglEnumerateVideoCaptureDevicesNV; +#define wglEnumerateVideoCaptureDevicesNV glad_wglEnumerateVideoCaptureDevicesNV +GLAD_API_CALL PFNWGLENUMERATEVIDEODEVICESNVPROC glad_wglEnumerateVideoDevicesNV; +#define wglEnumerateVideoDevicesNV glad_wglEnumerateVideoDevicesNV +GLAD_API_CALL PFNWGLFREEMEMORYNVPROC glad_wglFreeMemoryNV; +#define wglFreeMemoryNV glad_wglFreeMemoryNV +GLAD_API_CALL PFNWGLGENLOCKSAMPLERATEI3DPROC glad_wglGenlockSampleRateI3D; +#define wglGenlockSampleRateI3D glad_wglGenlockSampleRateI3D +GLAD_API_CALL PFNWGLGENLOCKSOURCEDELAYI3DPROC glad_wglGenlockSourceDelayI3D; +#define wglGenlockSourceDelayI3D glad_wglGenlockSourceDelayI3D +GLAD_API_CALL PFNWGLGENLOCKSOURCEEDGEI3DPROC glad_wglGenlockSourceEdgeI3D; +#define wglGenlockSourceEdgeI3D glad_wglGenlockSourceEdgeI3D +GLAD_API_CALL PFNWGLGENLOCKSOURCEI3DPROC glad_wglGenlockSourceI3D; +#define wglGenlockSourceI3D glad_wglGenlockSourceI3D +GLAD_API_CALL PFNWGLGETCONTEXTGPUIDAMDPROC glad_wglGetContextGPUIDAMD; +#define wglGetContextGPUIDAMD glad_wglGetContextGPUIDAMD +GLAD_API_CALL PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC glad_wglGetCurrentAssociatedContextAMD; +#define wglGetCurrentAssociatedContextAMD glad_wglGetCurrentAssociatedContextAMD +GLAD_API_CALL PFNWGLGETCURRENTREADDCARBPROC glad_wglGetCurrentReadDCARB; +#define wglGetCurrentReadDCARB glad_wglGetCurrentReadDCARB +GLAD_API_CALL PFNWGLGETCURRENTREADDCEXTPROC glad_wglGetCurrentReadDCEXT; +#define wglGetCurrentReadDCEXT glad_wglGetCurrentReadDCEXT +GLAD_API_CALL PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC glad_wglGetDigitalVideoParametersI3D; +#define wglGetDigitalVideoParametersI3D glad_wglGetDigitalVideoParametersI3D +GLAD_API_CALL PFNWGLGETEXTENSIONSSTRINGARBPROC glad_wglGetExtensionsStringARB; +#define wglGetExtensionsStringARB glad_wglGetExtensionsStringARB +GLAD_API_CALL PFNWGLGETEXTENSIONSSTRINGEXTPROC glad_wglGetExtensionsStringEXT; +#define wglGetExtensionsStringEXT glad_wglGetExtensionsStringEXT +GLAD_API_CALL PFNWGLGETFRAMEUSAGEI3DPROC glad_wglGetFrameUsageI3D; +#define wglGetFrameUsageI3D glad_wglGetFrameUsageI3D +GLAD_API_CALL PFNWGLGETGPUIDSAMDPROC glad_wglGetGPUIDsAMD; +#define wglGetGPUIDsAMD glad_wglGetGPUIDsAMD +GLAD_API_CALL PFNWGLGETGPUINFOAMDPROC glad_wglGetGPUInfoAMD; +#define wglGetGPUInfoAMD glad_wglGetGPUInfoAMD +GLAD_API_CALL PFNWGLGETGAMMATABLEI3DPROC glad_wglGetGammaTableI3D; +#define wglGetGammaTableI3D glad_wglGetGammaTableI3D +GLAD_API_CALL PFNWGLGETGAMMATABLEPARAMETERSI3DPROC glad_wglGetGammaTableParametersI3D; +#define wglGetGammaTableParametersI3D glad_wglGetGammaTableParametersI3D +GLAD_API_CALL PFNWGLGETGENLOCKSAMPLERATEI3DPROC glad_wglGetGenlockSampleRateI3D; +#define wglGetGenlockSampleRateI3D glad_wglGetGenlockSampleRateI3D +GLAD_API_CALL PFNWGLGETGENLOCKSOURCEDELAYI3DPROC glad_wglGetGenlockSourceDelayI3D; +#define wglGetGenlockSourceDelayI3D glad_wglGetGenlockSourceDelayI3D +GLAD_API_CALL PFNWGLGETGENLOCKSOURCEEDGEI3DPROC glad_wglGetGenlockSourceEdgeI3D; +#define wglGetGenlockSourceEdgeI3D glad_wglGetGenlockSourceEdgeI3D +GLAD_API_CALL PFNWGLGETGENLOCKSOURCEI3DPROC glad_wglGetGenlockSourceI3D; +#define wglGetGenlockSourceI3D glad_wglGetGenlockSourceI3D +GLAD_API_CALL PFNWGLGETMSCRATEOMLPROC glad_wglGetMscRateOML; +#define wglGetMscRateOML glad_wglGetMscRateOML +GLAD_API_CALL PFNWGLGETPBUFFERDCARBPROC glad_wglGetPbufferDCARB; +#define wglGetPbufferDCARB glad_wglGetPbufferDCARB +GLAD_API_CALL PFNWGLGETPBUFFERDCEXTPROC glad_wglGetPbufferDCEXT; +#define wglGetPbufferDCEXT glad_wglGetPbufferDCEXT +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBFVARBPROC glad_wglGetPixelFormatAttribfvARB; +#define wglGetPixelFormatAttribfvARB glad_wglGetPixelFormatAttribfvARB +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBFVEXTPROC glad_wglGetPixelFormatAttribfvEXT; +#define wglGetPixelFormatAttribfvEXT glad_wglGetPixelFormatAttribfvEXT +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBIVARBPROC glad_wglGetPixelFormatAttribivARB; +#define wglGetPixelFormatAttribivARB glad_wglGetPixelFormatAttribivARB +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBIVEXTPROC glad_wglGetPixelFormatAttribivEXT; +#define wglGetPixelFormatAttribivEXT glad_wglGetPixelFormatAttribivEXT +GLAD_API_CALL PFNWGLGETSWAPINTERVALEXTPROC glad_wglGetSwapIntervalEXT; +#define wglGetSwapIntervalEXT glad_wglGetSwapIntervalEXT +GLAD_API_CALL PFNWGLGETSYNCVALUESOMLPROC glad_wglGetSyncValuesOML; +#define wglGetSyncValuesOML glad_wglGetSyncValuesOML +GLAD_API_CALL PFNWGLGETVIDEODEVICENVPROC glad_wglGetVideoDeviceNV; +#define wglGetVideoDeviceNV glad_wglGetVideoDeviceNV +GLAD_API_CALL PFNWGLGETVIDEOINFONVPROC glad_wglGetVideoInfoNV; +#define wglGetVideoInfoNV glad_wglGetVideoInfoNV +GLAD_API_CALL PFNWGLISENABLEDFRAMELOCKI3DPROC glad_wglIsEnabledFrameLockI3D; +#define wglIsEnabledFrameLockI3D glad_wglIsEnabledFrameLockI3D +GLAD_API_CALL PFNWGLISENABLEDGENLOCKI3DPROC glad_wglIsEnabledGenlockI3D; +#define wglIsEnabledGenlockI3D glad_wglIsEnabledGenlockI3D +GLAD_API_CALL PFNWGLJOINSWAPGROUPNVPROC glad_wglJoinSwapGroupNV; +#define wglJoinSwapGroupNV glad_wglJoinSwapGroupNV +GLAD_API_CALL PFNWGLLOADDISPLAYCOLORTABLEEXTPROC glad_wglLoadDisplayColorTableEXT; +#define wglLoadDisplayColorTableEXT glad_wglLoadDisplayColorTableEXT +GLAD_API_CALL PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC glad_wglLockVideoCaptureDeviceNV; +#define wglLockVideoCaptureDeviceNV glad_wglLockVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC glad_wglMakeAssociatedContextCurrentAMD; +#define wglMakeAssociatedContextCurrentAMD glad_wglMakeAssociatedContextCurrentAMD +GLAD_API_CALL PFNWGLMAKECONTEXTCURRENTARBPROC glad_wglMakeContextCurrentARB; +#define wglMakeContextCurrentARB glad_wglMakeContextCurrentARB +GLAD_API_CALL PFNWGLMAKECONTEXTCURRENTEXTPROC glad_wglMakeContextCurrentEXT; +#define wglMakeContextCurrentEXT glad_wglMakeContextCurrentEXT +GLAD_API_CALL PFNWGLQUERYCURRENTCONTEXTNVPROC glad_wglQueryCurrentContextNV; +#define wglQueryCurrentContextNV glad_wglQueryCurrentContextNV +GLAD_API_CALL PFNWGLQUERYFRAMECOUNTNVPROC glad_wglQueryFrameCountNV; +#define wglQueryFrameCountNV glad_wglQueryFrameCountNV +GLAD_API_CALL PFNWGLQUERYFRAMELOCKMASTERI3DPROC glad_wglQueryFrameLockMasterI3D; +#define wglQueryFrameLockMasterI3D glad_wglQueryFrameLockMasterI3D +GLAD_API_CALL PFNWGLQUERYFRAMETRACKINGI3DPROC glad_wglQueryFrameTrackingI3D; +#define wglQueryFrameTrackingI3D glad_wglQueryFrameTrackingI3D +GLAD_API_CALL PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC glad_wglQueryGenlockMaxSourceDelayI3D; +#define wglQueryGenlockMaxSourceDelayI3D glad_wglQueryGenlockMaxSourceDelayI3D +GLAD_API_CALL PFNWGLQUERYMAXSWAPGROUPSNVPROC glad_wglQueryMaxSwapGroupsNV; +#define wglQueryMaxSwapGroupsNV glad_wglQueryMaxSwapGroupsNV +GLAD_API_CALL PFNWGLQUERYPBUFFERARBPROC glad_wglQueryPbufferARB; +#define wglQueryPbufferARB glad_wglQueryPbufferARB +GLAD_API_CALL PFNWGLQUERYPBUFFEREXTPROC glad_wglQueryPbufferEXT; +#define wglQueryPbufferEXT glad_wglQueryPbufferEXT +GLAD_API_CALL PFNWGLQUERYSWAPGROUPNVPROC glad_wglQuerySwapGroupNV; +#define wglQuerySwapGroupNV glad_wglQuerySwapGroupNV +GLAD_API_CALL PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC glad_wglQueryVideoCaptureDeviceNV; +#define wglQueryVideoCaptureDeviceNV glad_wglQueryVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC glad_wglReleaseImageBufferEventsI3D; +#define wglReleaseImageBufferEventsI3D glad_wglReleaseImageBufferEventsI3D +GLAD_API_CALL PFNWGLRELEASEPBUFFERDCARBPROC glad_wglReleasePbufferDCARB; +#define wglReleasePbufferDCARB glad_wglReleasePbufferDCARB +GLAD_API_CALL PFNWGLRELEASEPBUFFERDCEXTPROC glad_wglReleasePbufferDCEXT; +#define wglReleasePbufferDCEXT glad_wglReleasePbufferDCEXT +GLAD_API_CALL PFNWGLRELEASETEXIMAGEARBPROC glad_wglReleaseTexImageARB; +#define wglReleaseTexImageARB glad_wglReleaseTexImageARB +GLAD_API_CALL PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC glad_wglReleaseVideoCaptureDeviceNV; +#define wglReleaseVideoCaptureDeviceNV glad_wglReleaseVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLRELEASEVIDEODEVICENVPROC glad_wglReleaseVideoDeviceNV; +#define wglReleaseVideoDeviceNV glad_wglReleaseVideoDeviceNV +GLAD_API_CALL PFNWGLRELEASEVIDEOIMAGENVPROC glad_wglReleaseVideoImageNV; +#define wglReleaseVideoImageNV glad_wglReleaseVideoImageNV +GLAD_API_CALL PFNWGLRESETFRAMECOUNTNVPROC glad_wglResetFrameCountNV; +#define wglResetFrameCountNV glad_wglResetFrameCountNV +GLAD_API_CALL PFNWGLRESTOREBUFFERREGIONARBPROC glad_wglRestoreBufferRegionARB; +#define wglRestoreBufferRegionARB glad_wglRestoreBufferRegionARB +GLAD_API_CALL PFNWGLSAVEBUFFERREGIONARBPROC glad_wglSaveBufferRegionARB; +#define wglSaveBufferRegionARB glad_wglSaveBufferRegionARB +GLAD_API_CALL PFNWGLSENDPBUFFERTOVIDEONVPROC glad_wglSendPbufferToVideoNV; +#define wglSendPbufferToVideoNV glad_wglSendPbufferToVideoNV +GLAD_API_CALL PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC glad_wglSetDigitalVideoParametersI3D; +#define wglSetDigitalVideoParametersI3D glad_wglSetDigitalVideoParametersI3D +GLAD_API_CALL PFNWGLSETGAMMATABLEI3DPROC glad_wglSetGammaTableI3D; +#define wglSetGammaTableI3D glad_wglSetGammaTableI3D +GLAD_API_CALL PFNWGLSETGAMMATABLEPARAMETERSI3DPROC glad_wglSetGammaTableParametersI3D; +#define wglSetGammaTableParametersI3D glad_wglSetGammaTableParametersI3D +GLAD_API_CALL PFNWGLSETPBUFFERATTRIBARBPROC glad_wglSetPbufferAttribARB; +#define wglSetPbufferAttribARB glad_wglSetPbufferAttribARB +GLAD_API_CALL PFNWGLSETSTEREOEMITTERSTATE3DLPROC glad_wglSetStereoEmitterState3DL; +#define wglSetStereoEmitterState3DL glad_wglSetStereoEmitterState3DL +GLAD_API_CALL PFNWGLSWAPBUFFERSMSCOMLPROC glad_wglSwapBuffersMscOML; +#define wglSwapBuffersMscOML glad_wglSwapBuffersMscOML +GLAD_API_CALL PFNWGLSWAPINTERVALEXTPROC glad_wglSwapIntervalEXT; +#define wglSwapIntervalEXT glad_wglSwapIntervalEXT +GLAD_API_CALL PFNWGLSWAPLAYERBUFFERSMSCOMLPROC glad_wglSwapLayerBuffersMscOML; +#define wglSwapLayerBuffersMscOML glad_wglSwapLayerBuffersMscOML +GLAD_API_CALL PFNWGLWAITFORMSCOMLPROC glad_wglWaitForMscOML; +#define wglWaitForMscOML glad_wglWaitForMscOML +GLAD_API_CALL PFNWGLWAITFORSBCOMLPROC glad_wglWaitForSbcOML; +#define wglWaitForSbcOML glad_wglWaitForSbcOML + +GLAD_API_CALL int gladLoadWGLUserPtr(HDC hdc, GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadWGL(HDC hdc, GLADloadfunc load); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/内核源代码/StgSharp.C/x64/Debug/StgSharpC.vcxproj.FileListAbsolute.txt b/内核源代码/StgSharp.C/x64/Debug/StgSharpC.vcxproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin b/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin new file mode 100644 index 00000000..a6c8b397 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin differ diff --git a/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.projects.v9.bin b/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.projects.v9.bin new file mode 100644 index 00000000..aa31d652 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.projects.v9.bin differ diff --git a/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.strings.v9.bin b/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.strings.v9.bin new file mode 100644 index 00000000..3d6ca935 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.strings.v9.bin differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db new file mode 100644 index 00000000..c1bb6030 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db new file mode 100644 index 00000000..e5d4c7bd Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm new file mode 100644 index 00000000..be0ea137 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal new file mode 100644 index 00000000..fabd6f58 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 b/内核源代码/StgSharp.Common/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 00000000..584637d9 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/FileContentIndex/92be5d18-8537-44c7-935e-adcc6dd8469c.vsidx b/内核源代码/StgSharp.Common/.vs/StgSharp/FileContentIndex/92be5d18-8537-44c7-935e-adcc6dd8469c.vsidx new file mode 100644 index 00000000..2a8d9877 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/FileContentIndex/92be5d18-8537-44c7-935e-adcc6dd8469c.vsidx differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/v17/.futdcache.v2 b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/.futdcache.v2 new file mode 100644 index 00000000..86aed3d4 Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/.futdcache.v2 differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/v17/.suo b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/.suo new file mode 100644 index 00000000..016d83df Binary files /dev/null and b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/.suo differ diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.backup.json b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.backup.json new file mode 100644 index 00000000..9d96a1d9 --- /dev/null +++ b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.backup.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.json b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.json new file mode 100644 index 00000000..9d96a1d9 --- /dev/null +++ b/内核源代码/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Collections/BidirectionalDictionary.cs b/内核源代码/StgSharp.Common/Collections/BidirectionalDictionary.cs new file mode 100644 index 00000000..407fe313 --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/BidirectionalDictionary.cs @@ -0,0 +1,223 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BidirectionalDictionary.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; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; + +namespace StgSharp.Commom.Collections +{ + public sealed class BidirectionalDictionary : IBidirectionalDictionary + { + + private readonly Dictionary _forward; + private readonly Dictionary _reverse; + + public BidirectionalDictionary() + { + _forward = new Dictionary(); + _reverse = new Dictionary(); + } + + public TFirst this[TSecond key] + { + get + { + if (_reverse.TryGetValue(key, out TFirst value)) + { + return value; + } + throw new ArgumentException( + $"Cannot find key {key!.ToString()} in dictionary."); + } + set + { + if (_reverse.TryGetValue(key, out TFirst origin)) + { + _reverse[key] = value; + _forward.Remove(origin); + } + else + { + _reverse.Add(key, value); + } + _forward.Add(value, key); + } + } + + public TSecond this[TFirst key] + { + get + { + if (_forward.TryGetValue(key, out TSecond value)) + { + return value; + } + throw new ArgumentException( + $"Cannot find key {key!.ToString()} in dictionary."); + } + set + { + if (_forward.TryGetValue(key, out TSecond origin)) + { + _forward[key] = value; + _reverse.Remove(origin); + } + else + { + _forward.Add(key, value); + } + _reverse.Add(value, key); + } + } + + public bool IsReadOnly => false; + + public ICollection FirstIndex => _forward.Keys; + + public ICollection SecondIndex => _reverse.Keys; + + public int Count => _forward.Count; + + public IReadOnlyDictionary Forward => new ReadOnlyDictionary( + _forward); + + public IReadOnlyDictionary Reverse => new ReadOnlyDictionary( + _reverse); + + public void Add(KeyValuePair item) + { + if (_forward.ContainsKey(item.Key) || _reverse.ContainsKey( + item.Value)) + { + throw new ArgumentException("Duplicate key or value."); + } + _forward.Add(item.Key, item.Value); + _reverse.Add(item.Value, item.Key); + } + + public void Add(TFirst key, TSecond value) + { + if (_forward.ContainsKey(key) || _reverse.ContainsKey(value)) + { + throw new ArgumentException("Duplicate key or value."); + } + _forward.Add(key, value); + _reverse.Add(value, key); + } + + public void Clear() + { + _forward.Clear(); + _reverse.Clear(); + } + + public bool Contains(KeyValuePair item) + { + return _forward.Contains(item) && _reverse.TryGetValue( + item.Value, out TFirst var) && var!.Equals(item.Key); + } + + public bool Contains(TSecond key) + { + return _reverse.ContainsKey(key); + } + + public bool Contains(TFirst key) + { + return _forward.ContainsKey(key); + } + + public void CopyTo( + KeyValuePair[] array, + int arrayIndex) + { + if (array == null) + { + throw new ArgumentNullException(nameof(array)); + } + if (arrayIndex < 0 || arrayIndex > array.Length) + { + throw new ArgumentOutOfRangeException(nameof(arrayIndex)); + } + if (array.Length - arrayIndex < _forward.Count) + { + throw new ArgumentException( + "The array is too small to copy the elements."); + } + + foreach (KeyValuePair pair in _forward) + { + array[arrayIndex++] = pair; + } + } + + public IEnumerator> GetEnumerator() + { + foreach (KeyValuePair pair in _forward) + { + yield return pair; + } + } + + public bool Remove(TFirst key) + { + throw new NotImplementedException(); + } + + public bool Remove(KeyValuePair item) + { + if (_forward.Remove(item.Key)) + { + return _reverse.Remove(item.Value); + } + return false; + } + + public bool TryGetValue(TFirst key, out TSecond value) + { + return _forward.TryGetValue(key, out value); + } + + public bool TryGetValue(TSecond key, out TFirst value) + { + return _reverse.TryGetValue(key, out value); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Collections/CachePool.cs b/内核源代码/StgSharp.Common/Collections/CachePool.cs new file mode 100644 index 00000000..7b857bfe --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/CachePool.cs @@ -0,0 +1,59 @@ +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Commom.Collections +{ + public interface IPoolable + { + public int ID { get; } + } + + public class CacheIndexPool : IEnumerable where T : IPoolable + { + private ConcurrentDictionary _cache; + private Func _defaultCreater; + + public CacheIndexPool(Func defaultCreater) + { + _cache = new ConcurrentDictionary(); + _defaultCreater = defaultCreater; + } + + public T this[int index] + { + get + { + if (_cache.TryGetValue(index, out T value)) + { + return value; + } + T newValue = _defaultCreater(); + _cache.TryAdd(index, newValue); + return newValue; + } + } + + public IEnumerator GetEnumerator() + { + return _cache.Values.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public T CreateObject() + { + T _new = _defaultCreater(); + _cache.AddOrUpdate(1, _new,static (_,origin)=>origin); + throw new NotImplementedException(); + return _new; + } + } +} diff --git a/内核源代码/StgSharp.Common/Collections/CapacityFixedList.cs b/内核源代码/StgSharp.Common/Collections/CapacityFixedList.cs new file mode 100644 index 00000000..2452ab4f --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/CapacityFixedList.cs @@ -0,0 +1,176 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CapacityFixedList.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; +using System.Collections.Generic; +using System.Reflection; +using System.Text; + +namespace StgSharp.Commom.Collections +{ + internal class CapacityFixedList : IList + { + private T[] values; + private int capacity, _index; + + public CapacityFixedList(int size) + { + values = new T[size]; + } + + public T this[int index] + { + get => index < _index ? + values[index] : throw new ArgumentOutOfRangeException( + nameof(index)); + set + { + if (index < _index) + { + values[index] = value; + } + else + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + } + } + + public bool IsReadOnly => false; + + public int Count => _index + 1; + + public void Add(T item) + { + if (_index < capacity - 1) + { + _index++; + this[_index] = item; + } + } + + public void Clear() + { + values = new T[capacity]; + _index = 0; + } + + public bool Contains(T item) + { + for (int i = 0; i <= _index; i++) + { + if (item.Equals(values[i])) + { + return true; + } + } + return false; + } + + public void CopyTo(T[] array, int arrayIndex) + { + values.CopyTo(array, arrayIndex); + } + + public IEnumerator GetEnumerator() + { + for (int i = 0; i <= _index; i++) + { + yield return values[i]; + } + } + + public int IndexOf(T item) + { + T v; + for (int i = 0; i <= _index; i++) + { + if ((v = values[i]) != null && v.Equals(item)) + { + return i; + } + } + return -1; + } + + public bool Remove(T item) + { + T v; + for (int i = 0; i <= _index; i++) + { + if ((v = values[i]) != null && v.Equals(item)) + { + values[i] = values[_index]; + _index--; + return true; + } + } + return false; + } + + public void RemoveAll(Predicate predicate) + { + for (int i = _index; i > 0; i--) + { + if (predicate(values[i])) + { + values[i] = values[_index]; + _index--; + } + } + } + + public void RemoveAt(int index) + { + if (index <= _index) + { + values[index] = values[_index]; + _index--; + } + } + + public void Resize(int newSize) + { + Array.Resize(ref values, newSize); + } + + IEnumerator IEnumerable.GetEnumerator() + { + yield return GetEnumerator(); + } + + void IList.Insert(int index, T item) + { + throw new NotSupportedException(); + } + + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/内核源代码/StgSharp.Common/Collections/IBidrirectionalDictionary.cs b/内核源代码/StgSharp.Common/Collections/IBidrirectionalDictionary.cs new file mode 100644 index 00000000..dba1214b --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/IBidrirectionalDictionary.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IBidrirectionalDictionary.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; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace StgSharp.Commom.Collections +{ + public interface IBidirectionalDictionary : IDictionary + { + + public TFirst this[TSecond key] + { + get; + set; + } + + public ICollection FirstIndex + { + get; + } + + public ICollection SecondIndex + { + get; + } + + public IReadOnlyDictionary Forward + { + get; + } + + public IReadOnlyDictionary Reverse + { + get; + } + + /// + /// Determines whether the contains + /// the specified key. + /// + /// The value to locate in the . + /// + /// true if the contains an element + /// with the specified key; otherwise, false. + /// + public bool Contains(TSecond key); + + /// + /// Determines whether the contains + /// the specified key. + /// + /// The value to locate in the . + /// + /// true if the contains an element + /// with the specified key; otherwise, false. + /// + public bool Contains(TFirst key); + + public bool TryGetValue(TSecond key, out TFirst value); + +#pragma warning disable CA1033 + ICollection IDictionary.Keys => FirstIndex; + + ICollection IDictionary.Values => SecondIndex; + + bool IDictionary.ContainsKey(TFirst key) => Contains( + key); +#pragma warning restore CA1033 + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Collections/IStringHashMultiplexer.cs b/内核源代码/StgSharp.Common/Collections/IStringHashMultiplexer.cs new file mode 100644 index 00000000..9b53a0de --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/IStringHashMultiplexer.cs @@ -0,0 +1,12 @@ +using System.Diagnostics.CodeAnalysis; + +namespace StgSharp.Collections +{ + public interface IStringHashMultiplexer + { + int RemainedMultiplexCount { get; set; } + void CacheHash(string obj, int count); + void ExtendCache(int count); + int ForceComputeHash([NotNull] string obj); + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Collections/KeyMultiplexer.cs b/内核源代码/StgSharp.Common/Collections/KeyMultiplexer.cs new file mode 100644 index 00000000..b505240e --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/KeyMultiplexer.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; + +namespace StgSharp.Collections +{ + public class StringHashMultiplexer : IEqualityComparer, IStringHashMultiplexer + { + private string _source, _sourceLast; + private int _initCount, _remainedCount, _hashCache, _hashLast; + + public int RemainedMultiplexCount + { + get => _remainedCount; + set => _initCount = value; + } + + public bool Equals(string x, string y) + { + return x == y; + } + + public int GetHashCode(string obj) + { + if (_remainedCount > 0 && ReferenceEquals(_source, obj)) + { + _remainedCount--; + return _hashCache; + } + if (ReferenceEquals(_sourceLast, obj)) + { + return _hashLast; + } + _sourceLast = obj; + _hashLast = ForceComputeHash(obj); + return _hashLast; + } + + public void CacheHash(string obj, int count) + { + _hashCache = ForceComputeHash(obj); + _initCount = count; + _remainedCount = _initCount; + _source = obj; + } + + public void ExtendCache(int count) + { + _initCount += count; + _remainedCount += count; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe int ForceComputeHash([NotNull] string obj) + { + int hash; + fixed (char* cPtr = obj.AsSpan()) + { + hash = InternalIO.Intrinsic.cityhash_simplify(cPtr, obj.Length); + } + return hash; + } + } + + public class ConcurrentStringHashMultiplexer : IEqualityComparer, IStringHashMultiplexer + { + private readonly ThreadLocal multiplexers = + new (); + + public int RemainedMultiplexCount + { + get => multiplexers.Value.RemainedMultiplexCount; + set => multiplexers.Value.RemainedMultiplexCount = value; + } + + public void CacheHash(string obj, int count) + { + throw new NotImplementedException(); + } + + public bool Equals(string x, string y) + { + return x == y; + } + + public void ExtendCache(int count) + { + multiplexers.Value.ExtendCache(count); + } + + public unsafe int ForceComputeHash([NotNull] string obj) + { + int hash; + fixed (char* cPtr = obj.AsSpan()) + { + hash = InternalIO.Intrinsic.cityhash_simplify(cPtr, obj.Length); + } + return hash; + } + + public int GetHashCode(string obj) + { + return multiplexers.Value.GetHashCode(obj); + } + } +} diff --git a/内核源代码/StgSharp.Common/Collections/PartialDictionary.cs b/内核源代码/StgSharp.Common/Collections/PartialDictionary.cs new file mode 100644 index 00000000..bf3f5c8b --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/PartialDictionary.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionary.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; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary : IDictionary + { + + private readonly Dictionary _source; + private readonly HashSet _keys; + private readonly PartialDictionaryValues _values; + + public PartialDictionary( + Dictionary source, + TKey[] index ) + { + _source = source; + _keys = new HashSet( index ); + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public PartialDictionary( + Dictionary source, + HashSet keys ) + { + _source = source; + _keys = keys; + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public TValue this[ TKey key ] + { + get + { + if( _keys.Contains( key ) ) { + return _source[ key ]; + } + throw new KeyNotFoundException(); + } + set + { + if( _keys.Contains( key ) ) { + _source[ key ] = value; + } + throw new KeyNotFoundException(); + } + } + + public ICollection Keys => _keys; + + public ICollection Values => _values; + + public int Count => _keys.Count; + + public bool Contains( KeyValuePair item ) + { + return _keys.Contains( item.Key ) && _source.Contains( item ); + } + + public bool ContainsKey( TKey key ) + { + return _keys.Contains( key ); + } + + public void CopyTo( KeyValuePair[] array, int arrayIndex ) + { + throw new NotImplementedException(); + } + + public IEnumerator> GetEnumerator() + { + foreach( TKey item in _keys ) { + yield return new KeyValuePair(item, _source[item]); + } + } + + public bool TryGetValue( TKey key, out TValue value ) + { + if( _keys.Contains( key ) ) { + value = _source[ key ]; + return true; + } + value = default!; + return false; + } + + void ICollection>.Add( + KeyValuePair item ) + { + return; + } + + void ICollection>.Clear() + { + throw new NotSupportedException(); + } + + bool ICollection>.IsReadOnly => true; + + bool ICollection>.Remove( + KeyValuePair item ) + { + throw new NotSupportedException(); + } + + void IDictionary.Add( TKey key, TValue value ) + { + return; + } + + bool IDictionary.Remove( TKey key ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Collections/PartialDictionaryValues.cs b/内核源代码/StgSharp.Common/Collections/PartialDictionaryValues.cs new file mode 100644 index 00000000..e429cd73 --- /dev/null +++ b/内核源代码/StgSharp.Common/Collections/PartialDictionaryValues.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionaryValues.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; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary + { + + internal sealed class PartialDictionaryValues : ICollection + { + + private readonly PartialDictionary _values; + + public PartialDictionaryValues( + PartialDictionary value ) + { + _values = value; + } + + public bool IsReadOnly => true; + + public int Count => _values.Count; + + void ICollection.Add( TValue item ) + { + return; + } + + void ICollection.Clear() + { + return; + } + + public bool Contains( TValue item ) + { + foreach (var kvp in _values) + { + if (kvp.Value != null && kvp.Value.Equals(item)) + { + return true; + } + } + return false; + } + + public void CopyTo( TValue[] array, int arrayIndex ) + { + foreach (var kvp in _values) + { + array[arrayIndex] = kvp.Value; + arrayIndex++; + } + } + + public IEnumerator GetEnumerator() + { + foreach (var key in _values._keys) + { + yield return _values._source[key]; + } + } + + bool ICollection.Remove( TValue item ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/Controls/BattleField.cs b/内核源代码/StgSharp.Common/Controlling/Controls/BattleField.cs new file mode 100644 index 00000000..3f0d2d59 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/BattleField.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BattleField.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; + +using System; +using System.Collections.Generic; +using System.Text; + +//TODO 这玩意如何加载一个渲染流程以获得各个图元还没搞清楚 + +namespace StgSharp.Controls +{ + public class BattleField : ControllingItem + { + + public bool IsEntity => true; + + public ReadOnlySpan TextureBox + { + get => throw new NotImplementedException(); + } + + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } + + public IEnumerator GetEnumerator() + { + throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/Controls/ButtonGroup.cs b/内核源代码/StgSharp.Common/Controlling/Controls/ButtonGroup.cs new file mode 100644 index 00000000..a02a98d8 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/ButtonGroup.cs @@ -0,0 +1,159 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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; + +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 abstract class KeyboardButtonGroup : ControllingItem + { + + private List buttonList; + private TriggerButton current; + + public KeyboardButtonGroup() + { + buttonList = new List(); + } + + public bool IsEntity + { + get => false; + } + + public ReadOnlySpan TextureBox + { + get => throw new NotSupportedException(); + } + + public Rectangle BoundingBox + { + get; + set; + } + + public TriggerButton CurrentButton + { + get => current; + } + + public Vec2 Position + { + get; + set; + } + + protected List AllButton + { + get => buttonList; + } + + public void AddButton( TriggerButton button ) + { + buttonList.Add( button ); + } + + public abstract void Confirm(); + + public IEnumerator GetEnumerator() + { + 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.Common/Controlling/Controls/CharacterIndexImage.cs b/内核源代码/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs new file mode 100644 index 00000000..326b01b0 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CharacterIndexImage.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; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Text; + +namespace StgSharp.Controls +{ + public class CharacterLineIndexImage : ControllingItem + { + + private char[] displayIndex; + private char defaultChar; + + private Dictionary texIndex; + private int length; + private PlainGeometryMesh _tittleMesh; + + public CharacterLineIndexImage( + int length, + char defaultChar, + PlainGeometryMesh tittleMesh, + IEnumerable<(char, PlainGeometryMesh)> indexEnumeration ) + { + this.length = length; + displayIndex = new char[length]; + _tittleMesh = tittleMesh; + texIndex = indexEnumeration.ToDictionary( + item => item.Item1, item => item.Item2 ); + } + + public bool IsEntity + { + get => true; + } + + public ReadOnlySpan TextureBox + { + get => throw new NotSupportedException(); + } + + public Rectangle BoundingBox + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public Vec2 Position + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public void Display( string message ) + { + if( string.IsNullOrEmpty( message ) ) { + message = string.Empty; + } + + string result = ( message.Length >= length ) ? + message.Substring( message.Length - displayIndex.Length ) : message.PadLeft( + length, defaultChar ); + + displayIndex = result.ToCharArray(); + } + + public IEnumerator GetEnumerator() + { + yield return _tittleMesh; + foreach( char item in displayIndex ) { + yield return texIndex[ item ]; + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/Controls/ControllingIntem.cs b/内核源代码/StgSharp.Common/Controlling/Controls/ControllingIntem.cs new file mode 100644 index 00000000..32c7b151 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/ControllingIntem.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ControllingIntem.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; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Controls +{ + public interface ControllingItem : IEnumerable + { + + public abstract bool IsEntity + { + get; + } + + public abstract ReadOnlySpan TextureBox + { + get; + } + + public abstract Rectangle BoundingBox + { + get; + set; + } + + public abstract Vec2 Position + { + get; + set; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/Controls/DecorationBox.cs b/内核源代码/StgSharp.Common/Controlling/Controls/DecorationBox.cs new file mode 100644 index 00000000..b9c906d2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/DecorationBox.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DecorationBox.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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Controls +{ + public class DecorationBox : ControllingItem + { + + private PlainGeometryMesh renderMesh; + + public DecorationBox( Rectangle bound, Image texture, Vec2[] texCoord ) + { + renderMesh = new PlainGeometryMesh( + BoundingBox, new TextureProvider( texture, texCoord ) ); + } + + public bool IsEntity => true; + + public ReadOnlySpan TextureBox + { + get => renderMesh.TextureCoord; + } + + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } + + public IEnumerator GetEnumerator() + { + yield return renderMesh; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/Controls/MarkingLable.cs b/内核源代码/StgSharp.Common/Controlling/Controls/MarkingLable.cs new file mode 100644 index 00000000..b334e9e3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/MarkingLable.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MarkingLable.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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Math; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; + +namespace StgSharp.Controls +{ + public class MarkingLabel : ControllingItem + { + + private PlainGeometryMesh marker; + + private TimeFunction _movement; + + private Vec2 _currentPosition, _movementVec; + + public MarkingLabel( PlainGeometryMesh marker, TimeFunction movement ) + { + this.marker = marker; + _movement = movement; + } + + public bool IsEntity => true; + + public ReadOnlySpan TextureBox + { + get => marker.TextureCoord; + } + + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } + + public IEnumerator GetEnumerator() + { + yield return marker; + } + + public void Move( Vec2 movement ) + { + if( !_movement.IsComplete ) { + Position = _currentPosition + ( _movement.Calculate() * _movementVec ); + } + } + + public void MoveTo( Vec2 target ) + { + Move( target - Position ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/Controls/TriggerButton.cs b/内核源代码/StgSharp.Common/Controlling/Controls/TriggerButton.cs new file mode 100644 index 00000000..b135005f --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/Controls/TriggerButton.cs @@ -0,0 +1,248 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriggerButton.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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Controls +{ + public delegate void RenderButtonTextureCallback( + ButtonStatus status, + float beginTime, + in TextureProvider texture ); + + 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 class TriggerButton : ControllingItem + { + + private Action? confirmCallback; + private Action? disableCallback; + + #nullable enable + private Action? enableCallback; + private float _statusBeginTime; + + private RenderButtonTextureCallback _renderButton; + private TextureProvider _texture; + + #nullable restore + + public TriggerButton() + { + CurrentStatus = ButtonStatus.Disable; + } + + public event Action ConfirmEvent + { + add { confirmCallback += value; } + remove { confirmCallback -= value; } + } + + public event Action DisableEvent + { + add { disableCallback += value; } + remove { disableCallback -= value; } + } + + public event Action EnableEvent + { + add { enableCallback += value; } + remove { enableCallback -= value; } + } + + public event RenderButtonTextureCallback RenderButtonTexture + { + add + { + if( _renderButton == null ) { + _renderButton = value; + } else { + _renderButton += value; + } + } + remove + { + if( _renderButton != null ) { + _renderButton -= value; + } + } + } + + public bool IsHighLighted + { + get; + internal set; + } + + public bool IsDisabled + { + get; + internal set; + } + + public bool IsEntity => true; + + public ReadOnlySpan TextureBox + { + get => MemoryMarshal.Cast( _texture.TextureCoordinate ); + } + + public Rectangle BoundingBox + { + get; + set; + } + + public TriggerButton Left + { + get; + internal set; + } + + public TriggerButton Right + { + get; + internal set; + } + + public TriggerButton Up + { + get; + internal set; + } + + public TriggerButton Down + { + get; + internal set; + } + + public Vec2 Position + { + get; + set; + } + + internal TextureProvider Texture + { + get => _texture; + set => _texture = value; + } + + protected ButtonStatus CurrentStatus + { + get; + set; + } + + public void DeHighlight() + { + if( CurrentStatus == ButtonStatus.Highlight ) { + CurrentStatus = ButtonStatus.HighlightToEnable; + } + } + + public void Disable() + { + CurrentStatus = CurrentStatus switch + { + ButtonStatus.Enable => ButtonStatus.EnableToDisable, + ButtonStatus.Highlight => ButtonStatus.HighlightToDisable, + _ => CurrentStatus, + }; + if( disableCallback != null ) { + disableCallback(); + } + } + + public void Enable() + { + if( CurrentStatus == ButtonStatus.Disable ) { + CurrentStatus = ButtonStatus.DisableToEnable; + } else { + return; + } + if( enableCallback != null ) { + enableCallback(); + } + } + + public IEnumerator GetEnumerator() + { + _renderButton( CurrentStatus, _statusBeginTime, in _texture ); + yield return new PlainGeometryMesh( this.BoundingBox, _texture ); + } + + public void Highlight() + { + if( CurrentStatus == ButtonStatus.Enable ) { + CurrentStatus |= ButtonStatus.EnableToHighlight; + } else { + return; + } + if( confirmCallback != null ) { + confirmCallback(); + } + } + + internal void Init( ButtonStatus status ) + { + if( CurrentStatus == ButtonStatus.Error ) { + CurrentStatus = status; + } + } + + }//----------------------------------- End of class -------------------------------------------- +} diff --git a/内核源代码/StgSharp.Common/Controlling/KeyEnum.cs b/内核源代码/StgSharp.Common/Controlling/KeyEnum.cs new file mode 100644 index 00000000..24f75d92 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/KeyEnum.cs @@ -0,0 +1,238 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyEnum.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.Internal.OpenGL; + +using System; + +namespace StgSharp +{ + public enum KeyboardKey : int + { + + UNKNOWN = -1, + None = 0, + Space = 32, + Apostrophe = 39/*'*/, + Comma = 44/*,*/, + Minus = 45/*-*/, + Period = 46/*.*/, + Slash = 47/*/*/, + Zero = 48, + One = 49, + Two = 50, + Three = 51, + Four = 52, + Five = 53, + Six = 54, + Seven = 55, + Eight = 56, + Nine = 57, + Semicolon = 59/*,*/, + Equal = 61/*=*/, + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + LeftBracket = 91/*[*/, + BACKSLASH = 92/*\*/, + RightBracket = 93/*]*/, + GraveAccent = 96/*`*/, + World1 = 161/*non-US#1*/, + World2 = 162/*non-US#2*/, + Esc = 256, + Enter = 257, + Tab = 258, + Backspace = 259, + Insert = 260, + Delete = 261, + Right = 262, + Left = 263, + Down = 264, + Up = 265, + PgUp = 266, + PgDown = 267, + Home = 268, + End = 269, + CapsLock = 280, + ScrollLock = 281, + NumLock = 282, + PrintScreen = 283, + Pause = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + NumPad0 = 320, + NumPad1 = 321, + NumPad2 = 322, + NumPad3 = 323, + NumPad4 = 324, + NumPad5 = 325, + NumPad6 = 326, + NumPad7 = 327, + NumPad8 = 328, + NumPad9 = 329, + NumPadDec = 330, + NumPadDiv = 331, + NumPadMul = 332, + NumPadSub = 333, + NumPadAdd = 334, + NumPadAnter = 335, + NumPadEqual = 336, + LeftShift = 340, + LeftControl = 341, + LeftAlt = 342, + LeftSuper = 343, + RightShift = 344, + RightControl = 345, + RightAlt = 346, + RightSuper = 347, + Menu = 348, + First = Space, + Last = Menu, + + } + + #pragma warning disable CA1707 + #pragma warning disable CA1712 + #pragma warning disable CA1008 + #pragma warning disable CA1027 + public enum Joystick : int + #pragma warning restore CA1027 + { + + Joystick_1 = glConst.GLFW_JOYSTICK_1, + Joystick_2 = glConst.GLFW_JOYSTICK_2, + Joystick_3 = glConst.GLFW_JOYSTICK_3, + Joystick_4 = glConst.GLFW_JOYSTICK_4, + Joystick_5 = glConst.GLFW_JOYSTICK_5, + Joystick_6 = glConst.GLFW_JOYSTICK_6, + Joystick_7 = glConst.GLFW_JOYSTICK_7, + Joystick_8 = glConst.GLFW_JOYSTICK_8, + Joystick_9 = glConst.GLFW_JOYSTICK_9, + Joystick_10 = glConst.GLFW_JOYSTICK_10, + Joystick_11 = glConst.GLFW_JOYSTICK_11, + Joystick_12 = glConst.GLFW_JOYSTICK_12, + Joystick_13 = glConst.GLFW_JOYSTICK_13, + Joystick_14 = glConst.GLFW_JOYSTICK_14, + Joystick_15 = glConst.GLFW_JOYSTICK_15, + Joystick_16 = glConst.GLFW_JOYSTICK_16, + First = Joystick_1, + Last = Joystick_16 + + } + + [System.Flags] + public enum Mouse : int + { + + Button1 = 0, + Button2 = 1, + Button3 = 2, + Button4 = 3, + Button5 = 4, + Button6 = 5, + Button7 = 6, + Button8 = 7, + First = Button1, + Last = Button8, + Left = Button1, + Right = Button2, + Middle = Button3 + + } + + #pragma warning restore CA1707 + #pragma warning restore CA1712 + #pragma warning restore CA7008 + + internal enum InputEquipment + { + + Keyboard, + Mouse, + Joystick + + } + + public enum KeyStatus : int + { + + RELEASE = 0, + PRESS = 1 + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/KeyEventAttribute.cs b/内核源代码/StgSharp.Common/Controlling/KeyEventAttribute.cs new file mode 100644 index 00000000..d56ee7b1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/KeyEventAttribute.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyEventAttribute.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.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + [AttributeUsage( AttributeTargets.Method )] + public class KeyEventAttribute : Attribute + { + + internal int _equipment; + internal int _keyStat; + internal int _keyTarget; + + public KeyEventAttribute( KeyboardKey key, KeyStatus status ) + { + _equipment = ( int )InputEquipment.Keyboard; + _keyTarget = ( int )key; + _keyStat = ( int )status; + } + + public KeyEventAttribute( Joystick joystick, KeyStatus status ) + { + _equipment = ( int )InputEquipment.Keyboard; + _keyTarget = ( int )joystick; + _keyStat = ( int )status; + } + + public KeyEventAttribute( Mouse mouse, KeyStatus status ) + { + _equipment = ( int )InputEquipment.Keyboard; + _keyTarget = ( int )mouse; + _keyStat = ( int )status; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs b/内核源代码/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs new file mode 100644 index 00000000..327b8a32 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IClickTrigger.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.Controlling.UsrActivity +{ + public interface IClickTrigger + { + + public int TargetKeyOrButtonID + { + get; + } + + public KeyStatus TriggeredStatus + { + get; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs b/内核源代码/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs new file mode 100644 index 00000000..a8d76f10 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="JoystickTrigger.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.Controlling.UsrActivity +{ + public readonly struct JoystickTrigger : IClickTrigger, IEquatable + { + + private readonly Joystick _stick; + private readonly KeyStatus _status; + + public JoystickTrigger( Joystick targetKey, KeyStatus status ) + { + this._stick = targetKey; + _status = status; + } + + public int TargetKeyOrButtonID => ( int )_stick; + + public Joystick Stick + { + get => _stick; + } + + public KeyStatus TriggeredStatus => _status; + + public override bool Equals( object obj ) + { + return base.Equals( obj ); + } + + public override int GetHashCode() + { + return ( ( int )_stick ) + ( 17 * ( ( int )_status ) ); + } + + public override string ToString() + { + return $"Key {_stick} triggered when {_status}"; + } + + public static bool operator !=( + JoystickTrigger left, + JoystickTrigger right ) + { + return !( left == right ); + } + + public static bool operator ==( + JoystickTrigger left, + JoystickTrigger right ) + { + return ( left._status == right._status ) && ( left._stick == right._stick ); + } + + bool IEquatable.Equals( JoystickTrigger other ) + { + return other == this; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs b/内核源代码/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs new file mode 100644 index 00000000..3988d883 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs @@ -0,0 +1,85 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyTrigger.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.Data.Common; +using System.Text; + +namespace StgSharp.Controlling.UsrActivity +{ + public readonly struct KeyTrigger : IClickTrigger, IEquatable + { + + private readonly KeyboardKey _targetKey; + private readonly KeyStatus _triggerStat; + + public KeyTrigger( KeyboardKey targetKey, KeyStatus targetStat ) + { + this._targetKey = targetKey; + this._triggerStat = targetStat; + } + + public int TargetKeyOrButtonID => ( int )_targetKey; + + public KeyStatus TriggeredStatus => _triggerStat; + + public override bool Equals( object obj ) + { + return base.Equals( obj ); + } + + public override int GetHashCode() + { + return ( ( int )_targetKey ) + ( 17 * ( ( int )_triggerStat ) ); + } + + public override string ToString() + { + return $"Key {_targetKey} triggered when {_triggerStat}"; + } + + public static bool operator !=( KeyTrigger left, KeyTrigger right ) + { + return !( left == right ); + } + + public static bool operator ==( KeyTrigger left, KeyTrigger right ) + { + return ( left._triggerStat == right._triggerStat ) && ( left._targetKey == right._targetKey ); + } + + bool IEquatable.Equals( KeyTrigger other ) + { + return other == this; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs b/内核源代码/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs new file mode 100644 index 00000000..9e9adbb3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MouseTrigger.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.Diagnostics.SymbolStore; +using System.Text; + +namespace StgSharp.Controlling.UsrActivity +{ + public readonly struct MouseTrigger : IClickTrigger, IEquatable + { + + private readonly KeyStatus _status; + private readonly Mouse _mouse; + + public MouseTrigger( Mouse mouse, KeyStatus status ) + { + _mouse = mouse; + _status = status; + } + + public int TargetKeyOrButtonID => ( int )_mouse; + + public KeyStatus TriggeredStatus => _status; + + public bool Equals( MouseTrigger other ) + { + return this == other; + } + + public static bool operator !=( MouseTrigger left, MouseTrigger right ) + { + return left._mouse != right._mouse || left._status != right._status; + } + + public static bool operator ==( MouseTrigger left, MouseTrigger right ) + { + return left._mouse == right._mouse && left._status == right._status; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs b/内核源代码/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs new file mode 100644 index 00000000..fc377378 --- /dev/null +++ b/内核源代码/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriggetFactory.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.Text; + +namespace StgSharp.Controlling.UsrActivity +{ + public static class TriggetBuilder + { + + private const int JoystickMax = ( int )Joystick.Last + 1; + private const int JoystickMin = ( int )Joystick.First - 1; + private const int KeyboardMax = ( int )KeyboardKey.Last + 1; + private const int KeyboardMin = ( int )KeyboardKey.First - 1; + private const int MouseMax = ( int )Mouse.Last + 1; + private const int MouseMin = ( int )Mouse.First - 1; + + private static KeyTrigger keyboardtemp; + private static MouseTrigger mousetemp; + + public static JoystickTrigger BuildJoystickClickTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode > MouseMin && keyCode < MouseMax ) { + return new JoystickTrigger( ( Joystick )keyCode, status ); + } + throw new InvalidOperationException( + "Known key code or key is not on joystick." ); + } + + public static KeyTrigger BuildKeyboardClickTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode > KeyboardMin && keyCode < KeyboardMax ) { + return new KeyTrigger( ( KeyboardKey )keyCode, status ); + } + throw new InvalidOperationException( + "Known key code or kay is not on keyboard." ); + } + + public static MouseTrigger BuildMouseClickTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode >= MouseMin && keyCode <= MouseMax ) { + return new MouseTrigger( ( Mouse )keyCode, status ); + } + throw new InvalidOperationException( + "Known key code or key is not on mouse." ); + } + + public static IClickTrigger BuildTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode > KeyboardMin && keyCode < KeyboardMax ) { + return new KeyTrigger( ( KeyboardKey )keyCode, status ); + } + if( keyCode > JoystickMin && keyCode < JoystickMax ) { + return new JoystickTrigger( ( Joystick )keyCode, status ); + } + if( keyCode >= MouseMin && keyCode <= MouseMax ) { + return new MouseTrigger( ( Mouse )keyCode, status ); + } + throw new InvalidOperationException( "Known key code." ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Data/GlobalData/root.cs b/内核源代码/StgSharp.Common/Data/GlobalData/root.cs new file mode 100644 index 00000000..1b2b9795 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/GlobalData/root.cs @@ -0,0 +1,56 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="root.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.Internal; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static unsafe partial class StgSharp + { + + private static byte leastUnusedArea; + private static List root = new List(); + private static SSD defaultIdProvider = new SSD(); + + public static byte NewArea() + { + byte ret = leastUnusedArea; + leastUnusedArea++; + return ret; + } + + }//------------------ end of class --------------------- +} diff --git a/内核源代码/StgSharp.Common/Data/Lable.cs b/内核源代码/StgSharp.Common/Data/Lable.cs new file mode 100644 index 00000000..77ace841 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/Lable.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Lable.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 System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Internal +{ + public class DataLabel + { + private readonly string _name; + + public DataLabel( string lableName ) + { + _name = lableName; + } + + public string Name + { + get => _name; + } + + public override unsafe int GetHashCode() + { + ReadOnlySpan nameSpan = _name.AsSpan(); + fixed( char* cptr = nameSpan ) { + return InternalIO.Intrinsic + .cityhash_simplify( cptr, _name.Length ); + } + } + + } + + public static class DataLabelBuilder + { + public static DataLabel AsLabel(this string name) + { + return new DataLabel(name); + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Data/RandomGenerator.cs b/内核源代码/StgSharp.Common/Data/RandomGenerator.cs new file mode 100644 index 00000000..369c17a7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/RandomGenerator.cs @@ -0,0 +1,173 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RandomGenerator.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; + +using System; +using System.IO; +using System.Numerics; +using System.Security.Cryptography; +using System.Text; +using System.Transactions; +using System.Xml; +using System.Xml.Serialization; + +namespace StgSharp.Internal +{ + public class RandomGenerator + { + + private byte[] currentKey; + + private readonly byte[] originKey; + private int cycleCount; + private SHA512 hash; + + public RandomGenerator() : this( DateTime.UtcNow.ToBinary() ) { } + + public RandomGenerator( object source ) + { + try { + if( source == null ) { + throw new ArgumentNullException( nameof( source ) ); + } + XmlSerializer s = new XmlSerializer( source.GetType() ); + using( StringWriter sw = new StringWriter() ) { + s.Serialize( sw, source ); + string data = sw.ToString(); + originKey = Encoding.UTF8.GetBytes( data ); + } + } + catch( Exception ) { + throw; + } + hash = SHA512.Create(); + originKey = hash.ComputeHash( originKey ); + currentKey = originKey; + cycleCount = 0; + } + + public int TotalGeneratedRandom + { + get => cycleCount; + } + + public unsafe int GenRandomInt() + { + M128 source = PrivateRand(); + cycleCount++; + + /* + float d0 = MathF.Sin(1 / source.Read(0)); + float d1 = MathF.Sin(1 / source.Read(1)); + float d2 = MathF.Sin(1 / source.Read(2)); + float d3 = MathF.Sin(1 / source.Read(3)); + + source.Write(0, *( short*)&d3); + source.Write(2, *((short*)&d2+1)); + source.Write(4, *( short*)&d1); + source.Write(6, *((short*)&d0+1)); + + /**/ + + return source.Read( cycleCount % 4 ); + } + + public byte GenRandomInt8() + { + cycleCount++; + if( cycleCount % 64 == 0 ) { + PrivateRand(); + } + return currentKey[ cycleCount % 64 ]; + } + + public float GenRandomSingle() + { + cycleCount++; + + while( true ) { + M128 source = PrivateRand(); + + uint + temp0 = source.Read( 0 ), + temp1 = source.Read( 2 ); + + if( temp0 * temp1 != 0 ) { + float ret = ( ( temp0 % temp1 ) * 1.0f ) / temp1; + if( ret < 0.335f ) { + ret = ret * ( ( ret * ( -0.7811934f ) ) + 1.4489113f ); + } else { + ret = ( ret * ( ( ret * ( -0.1158368f ) ) + 1.0580600f ) ) + 0.0590584f; + } + if( ret > 1 ) { + continue; + } + return ret; + } + } + } + + public void Reset() + { + currentKey = originKey; + cycleCount = 0; + } + + private unsafe M128 PrivateRand() + { + currentKey = hash.ComputeHash( currentKey ); + M128 ret; + fixed( byte* bptr = currentKey ) { + switch( ( cycleCount % 16 ) / 4 ) { + case 0: + ret = *( ( ( M128* )bptr ) + 0 ); + break; + case 1: + ret = *( ( ( M128* )bptr ) + 1 ); + break; + case 2: + ret = *( ( ( M128* )bptr ) + 2 ); + break; + case 3: + ret = *( ( ( M128* )bptr ) + 3 ); + break; + default: + throw new InvalidOperationException(); + } + } + + //Console.WriteLine(ret.ToString(16)); + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Data/SSD/Area.cs b/内核源代码/StgSharp.Common/Data/SSD/Area.cs new file mode 100644 index 00000000..0a3a8a36 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/SSD/Area.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Area.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.Internal.FileIO; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + /// + /// An independent storage area, used as the only folder type in root folder. Contains several + /// files reference as virtual disc. Data is actually stored in s in certain RAID mode. + /// + public partial class Area { } +} diff --git a/内核源代码/StgSharp.Common/Data/SSD/DataHead.cs b/内核源代码/StgSharp.Common/Data/SSD/DataHead.cs new file mode 100644 index 00000000..d0901964 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/SSD/DataHead.cs @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DataHead.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; + +namespace StgSharp.Internal +{ + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct SSDSegmentHead + { + + [FieldOffset( 12 )] internal byte size; + + [FieldOffset( 0 )] internal M128 data; + [FieldOffset( 13 )] public byte selfDefine_1; + [FieldOffset( 14 )] public byte selfDefine_2; + [FieldOffset( 15 )] public byte selfDefine_3; + + [FieldOffset( 0 )] public int globalID; + [FieldOffset( 4 )] public int nextID; + [FieldOffset( 8 )] public int previousHash; + + public int Size + { + get => ( ( int )size ) + 1; + set + { + if( ( value > 256 ) || ( value < 0 ) ) { + throw new ArgumentOutOfRangeException(); + } + size = ( byte )( value - 1 ); + } + } + + public unsafe byte[] GetBytes() + { + byte[] ret = new byte[16]; + fixed( Vector4* vptr = &data.vec ) { + byte* bptr = ( byte* )vptr; + for( int i = 0; i < 15; i++ ) { + ret[ i ] = *bptr; + } + } + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Data/SSD/DataSegment.cs b/内核源代码/StgSharp.Common/Data/SSD/DataSegment.cs new file mode 100644 index 00000000..d78a39bd --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/SSD/DataSegment.cs @@ -0,0 +1,182 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DataSegment.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + [StructLayout( LayoutKind.Explicit, Size = StgSharp.ssdSegmentLength * 16 )] + public unsafe struct SSDSegment : IComparable, IComparable + { + + [FieldOffset( 16 )] public fixed byte Data[ + 16 * ( StgSharp.ssdSegmentLength - 1 ) ]; + [FieldOffset( 12 )] public int DataHash; + [FieldOffset( 8 )] public int PreviousHash; + [FieldOffset( 0 * 16 )] public SSDSegmentHead Head; + + public SSDSegment( int previousHash ) + { + this.PreviousHash = previousHash; + } + + public byte this[ int index ] + { + get + { + if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + throw new IndexOutOfRangeException(); + } + return Data[ index ]; + } + + set + { + if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + throw new IndexOutOfRangeException(); + } + Data[ index ] = value; + } + } + + public int ID + { + get { return Head.globalID; } + set { Head.globalID = value; } + } + + public short Size => Head.size; + + public void FillRandomBytes( int begin ) + { + if( begin > 255 ) { + return; + } + for( int i = begin; i < 255; i++ ) { + Data[ i ] = Scaler.Random(); //TODO: 使用STGSHARP内部随机数工具处理它 + } + } + + public static SSDSegment FromStream( byte[] stream ) + { + if( stream.Length != 16 * StgSharp.ssdSegmentLength ) { + throw new ArgumentException(); + } + SSDSegment ret = new SSDSegment(); + fixed( byte* bptr = stream ) { + ret.Head.data = *( M128* )bptr; + for( int i = 1; i < StgSharp.ssdSegmentLength; i++ ) { + ret.WriteData( + i - 1, *( M128* )( bptr + ( 16 * i ) ) ); + } + } + return ret; + } + + public byte[] GetBytes() + { + byte[] ret = new byte[16 * StgSharp.ssdSegmentLength]; + fixed( M128* mptr = &Head.data ) { + fixed( byte* aptr = ret ) { + Vector4* vsptr = ( Vector4* )mptr; + Vector4* vtptr = ( Vector4* )aptr; + for( int i = 0; i < 18; i++ ) { + *( vtptr + i ) = *( vsptr + i ); + } + } + } + + return ret; + } + + public int GetDataHash() + { + Vector4 v = Vector4.One; + fixed( M128* mptr = &Head.data ) { + Vector4* vptr = ( Vector4* )mptr; + for( int i = 0; i < StgSharp.ssdSegmentLength - 1; i += 1 ) { + v += ( *vptr ) * 31; + } + } + M128 m = new M128( v ); + DataHash = m.vec.GetHashCode(); + return DataHash; + } + + public override int GetHashCode() + { + int ret = 17; + fixed( M128* mptr = &Head.data ) { + Vector4* vptr = ( Vector4* )mptr; + for( int i = 0; i < StgSharp.ssdSegmentLength; i++ ) { + ret = ( ret + ( *vptr ).GetHashCode() ) * 31; + } + } + return ret; + } + + public unsafe T ReadData( int index ) where T: struct + { + fixed( byte* bptr = Data ) { + T* tptr = ( T* )bptr; + return *( tptr + index ); + } + } + + public unsafe void WriteData( int index, T value ) where T: struct + { + fixed( byte* bptr = Data ) { + T* tptr = ( T* )bptr; + *( tptr + index ) = value; + } + } + + int IComparable.CompareTo( int other ) + { + return ID.CompareTo( other ); + } + + int IComparable.CompareTo( SSDSegment other ) + { + return ID.CompareTo( other.ID ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Data/SSD/SSD.cs b/内核源代码/StgSharp.Common/Data/SSD/SSD.cs new file mode 100644 index 00000000..ce6a5ca4 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/SSD/SSD.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SSD.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.Internal.FileIO; + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace StgSharp.Internal +{ + public partial class SSD + { + + private Dictionary fileList; + + private FileStream file; + private SSDrawHead head; + + public SSD() + { + fileList = new Dictionary(); + } + + public SSD( FileStream fileStream ) + { + fileList = new Dictionary(); + file = fileStream; + } + + public static SSD FromFile( string fileRoute ) + { + return new SSD( + new FileStream( fileRoute, FileMode.Open, FileAccess.Read ) ) + { + }; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Data/SSD/SSDVirtualFolder.cs b/内核源代码/StgSharp.Common/Data/SSD/SSDVirtualFolder.cs new file mode 100644 index 00000000..68dbb1d6 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/SSD/SSDVirtualFolder.cs @@ -0,0 +1,80 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SSDVirtualFolder.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.Internal.FileIO; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Internal +{ + public class SSDFolder : ISSDSerializable + { + + internal Dictionary folders; + internal int _folderID; + internal string _name; + + internal SSDFolder() + { + folders = new Dictionary(); + } + + internal SSDFolder( string name ) + { + if( name == "root" ) { + throw new ArgumentException( + "Name cannot be root," + "it is preserved for root file indexer." ); + } + if( name == "default" ) { + throw new ArgumentException( + "Name cannot be default," + "it is preserved for default file id provider." ); + } + _name = name; + folders = new Dictionary(); + } + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.VirtualFolder; + + public void FromBytes( byte[] stream ) + { + throw new NotImplementedException(); + } + + //TODO 虚拟文件夹的GetBytes好难写 + public byte[] GetBytes() + { + throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Data/SSD/SSDraw.cs b/内核源代码/StgSharp.Common/Data/SSD/SSDraw.cs new file mode 100644 index 00000000..409d9b05 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/SSD/SSDraw.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SSDraw.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.ShaderEdit; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; +using System.Xml.Serialization; + +namespace StgSharp.Internal.FileIO +{ + public class SSDraw + { + + private byte[] data; + + public SSDraw( string name, Stream streamSource ) + { + if( ( streamSource == null ) || ( streamSource.Length == 0 ) ) { + throw new ArgumentNullException( nameof( streamSource ) ); + } + Name = name; + data = new byte[streamSource.Length]; + streamSource.Read( data.AsSpan() ); + } + + public SSDrawHead Head + { + get; + set; + } + + public string Name + { + get; + set; + } + + } + + [StructLayout( LayoutKind.Explicit, Size = 32 * 16 )] + public unsafe struct SSDrawHead { } +} diff --git a/内核源代码/StgSharp.Common/Data/Serialize/Define.cs b/内核源代码/StgSharp.Common/Data/Serialize/Define.cs new file mode 100644 index 00000000..dce0b6d3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/Serialize/Define.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Define.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.Internal +{ + /// + /// A class contains a sets of methods to serialize several types + /// + public static partial class Serializer { } +} diff --git a/内核源代码/StgSharp.Common/Data/Serialize/ISSDSerializable.cs b/内核源代码/StgSharp.Common/Data/Serialize/ISSDSerializable.cs new file mode 100644 index 00000000..1067586e --- /dev/null +++ b/内核源代码/StgSharp.Common/Data/Serialize/ISSDSerializable.cs @@ -0,0 +1,109 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ISSDSerializable.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + public interface ISSDSerializable + { + + public SerializableTypeCode SSDTypeCode + { + get; + } + + public byte[] GetBytes(); + + internal void FromBytes( byte[] stream ); + + } + + public enum SerializableTypeCode + { + + Unknown = 0, + IndexTable = 1, + PixelImage = 2, + VectorImage = 3, + Audio = 4, + Shader = 5, + Text = 6, + RawData = 7, + VirtualFolder = int.MaxValue, + + } + + public static partial class Serializer + { + + public static T Deserialize( byte[] stream ) + where T: ISSDSerializable + { + T serializableObject = Activator.CreateInstance(); + serializableObject.FromBytes( stream ); + return serializableObject; + } + + public static string GetNameTail( SerializableTypeCode typeCode ) + { + switch( typeCode ) { + case SerializableTypeCode.IndexTable: + return "_idt"; + case SerializableTypeCode.PixelImage: + return "_pim"; + case SerializableTypeCode.VectorImage: + return "_vim"; + case SerializableTypeCode.Audio: + return "_wav"; + case SerializableTypeCode.Shader: + return "_gls"; + case SerializableTypeCode.Text: + return "_txt"; + case SerializableTypeCode.RawData: + return "_raw"; + case SerializableTypeCode.VirtualFolder: + return "_fod"; + default: + throw new ArgumentException( "Unknown file type" ); + } + } + + public static byte[] Serialize( ISSDSerializable serializableObject ) + { + return serializableObject.GetBytes(); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Entities/BehaviorArgs.cs b/内核源代码/StgSharp.Common/Entities/BehaviorArgs.cs new file mode 100644 index 00000000..01cc4e09 --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/BehaviorArgs.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BehaviorArgs.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Entities +{ + public abstract class BehaviorArgs { } +} diff --git a/内核源代码/StgSharp.Common/Entities/Enemy.cs b/内核源代码/StgSharp.Common/Entities/Enemy.cs new file mode 100644 index 00000000..6b5a48cc --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/Enemy.cs @@ -0,0 +1,66 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Enemy.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +namespace StgSharp.Entities +{ + public class Enemy : IEntity + { + + internal Launcher _awardLauncher; + internal Launcher _commonBulletLauncher; + internal Launcher _dieBulletLauncher; + public bool _selectalbe; + + public Launcher AwardLauncher + { + get; + set; + } + + public Launcher CommonBulletLauncher + { + get; + set; + } + + public Launcher DieBulletLauncher + { + get; + set; + } + + public override void OnRenderFrame() + { + CommonBulletLauncher.Launch(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Entities/EntityPartical.cs b/内核源代码/StgSharp.Common/Entities/EntityPartical.cs new file mode 100644 index 00000000..9b654c1a --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/EntityPartical.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EntityPartical.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Entities +{ + public abstract class EntityPartical : IEntity { } +} diff --git a/内核源代码/StgSharp.Common/Entities/IEntity.cs b/内核源代码/StgSharp.Common/Entities/IEntity.cs new file mode 100644 index 00000000..9ed41485 --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/IEntity.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IEntity.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.Math; + +using System; +using System.Collections.Generic; + +namespace StgSharp +{ + public abstract class IEntity + { + + protected uint _bornTick; + internal Func _movHandler; + internal LinkedList _collisionBox; + internal Point _basePoint; + internal Point _pos; + internal Point _position; + internal PlainGeometryCollisionSensor _collisionSensor; + internal string _texture; + + /// + /// X position of an enenmy entity + /// + public float X + { + get; + set; + } + + /// + /// Y position of an enemy entity + /// + public float Y + { + get; + set; + } + + public LinkedList CollisionBox + { + get => _collisionBox; + set => _collisionBox = value; + } + + /// + /// A sensor used for checking out if a bullet hit a player or something else + /// + public PlainGeometryCollisionSensor CollisionSensor + { + get => _collisionSensor; + set => _collisionSensor = value; + } + + public string TextureGL + { + get; + set; + } + + /// + /// A 2D vector presenting the position of an enemy entity, position can also be visited by + /// X, Y + /// + public Vec2 Location + { + get; + } + + public abstract void OnRenderFrame(); + + public void SetLocation( Point p ) + { + _pos = p; + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Entities/Launcher.cs b/内核源代码/StgSharp.Common/Entities/Launcher.cs new file mode 100644 index 00000000..1a1073ee --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/Launcher.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Launcher.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.Entities; +using StgSharp.Math; + +namespace StgSharp +{ + public class Launcher where T: IEntity + { + + internal uint[] launchtick; //发射子弹的内部计时 + internal Counter _internalParameter; //发射器的内部计时器 + + internal EntityPartical _bulletSample; //发射的子弹类型 + /* + *用于发射其他的实体,主要是子弹 和 掉落物 + */ + + internal Vec2 _center; //发射器的参考位置,运动轨迹的方程应当基于这个参考点构建 + + public EntityPartical Bullet + { + get => _bulletSample; + set => _bulletSample = value; + } + + internal virtual void Launch() { } + + } +} diff --git a/内核源代码/StgSharp.Common/Entities/Partical.cs b/内核源代码/StgSharp.Common/Entities/Partical.cs new file mode 100644 index 00000000..b4609948 --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/Partical.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Partical.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; + +namespace StgSharp +{ + public class Partical : IEntity + { + + public override void OnRenderFrame() + { + throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Entities/Player.cs b/内核源代码/StgSharp.Common/Entities/Player.cs new file mode 100644 index 00000000..1fed616b --- /dev/null +++ b/内核源代码/StgSharp.Common/Entities/Player.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Player.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp +{ + public abstract class Player : IEntity + { + + internal float _velocity; + + public float Velocity => _velocity; + + } +} diff --git a/内核源代码/StgSharp.Common/Environment/Dialogue.cs b/内核源代码/StgSharp.Common/Environment/Dialogue.cs new file mode 100644 index 00000000..172060cd --- /dev/null +++ b/内核源代码/StgSharp.Common/Environment/Dialogue.cs @@ -0,0 +1,185 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Dialogue.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.IO.Pipes; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; + +namespace StgSharp +{ + public static class Dialogue + { + + private static Process? _dialogueProcess; + private static AnonymousPipeServerStream _dialogueClientPipe,_dialogueServerPipe; + private static ConcurrentBag msgCache = new ConcurrentBag( + ); + private static int _readAndWriteThreadId; + private static ProcessStartInfo _dialogueProcessInfo; + private static StreamReader _dr; + private static StreamWriter _dw; + + public static bool NeedShowWhenStartup + { + get; + set; + } + + public static void SetReadAndWriteThread(Thread thread) + { + _readAndWriteThreadId = thread.ManagedThreadId; + } + + private static void AssertThread() + { + if (_readAndWriteThreadId != Environment.CurrentManagedThreadId) + { + throw new InvalidOperationException("Communication with dialogue can only call from certain thread."); + } + } + + internal static void CreateDialogueProcessIfNotExist() + { + if( _dialogueProcess != null ) { + return; + } + if (!File.Exists(_dialogueProcessInfo.FileName)) + { + + } + _dialogueProcess = Process.Start( _dialogueProcessInfo ); + + _dr = new StreamReader(_dialogueClientPipe); + _dw = new StreamWriter(_dialogueServerPipe); + + _dialogueProcess!.Exited += DialogueProcessExitCallback; + + _dialogueServerPipe.DisposeLocalCopyOfClientHandle(); + _dialogueClientPipe.DisposeLocalCopyOfClientHandle(); + } + + private static void DialogueProcessExitCallback(object? sender, EventArgs e) + { + _dialogueProcess = null; + _dr.Close(); + _dw.Close(); + } + + internal static void LoadDialogue() + { + _dialogueServerPipe = new AnonymousPipeServerStream( + PipeDirection.Out, HandleInheritability.Inheritable ); + _dialogueClientPipe = new AnonymousPipeServerStream( + PipeDirection.In, HandleInheritability.Inheritable ); + + string route = Assembly.GetAssembly( typeof( StgSharp ) ).Location; + string path = Path.GetDirectoryName( route ); + + string exeName; + + if( RuntimeInformation.IsOSPlatform( OSPlatform.Windows ) ) { + exeName = ".exe"; + } else if( RuntimeInformation.IsOSPlatform( OSPlatform.Linux ) || RuntimeInformation.IsOSPlatform( + OSPlatform.OSX ) ) { + exeName = string.Empty; + } else { + throw new PlatformNotSupportedException( "Unknown OS platform" ); + } + + string consoleRoute = Path.Combine(path, @"StgSharpTerminalDialogue", $@"StgSharpTerminalDialogue{exeName}"); + + _dialogueProcessInfo = new ProcessStartInfo + { + FileName = consoleRoute, + Arguments = $"{_dialogueServerPipe.GetClientHandleAsString()} {_dialogueClientPipe.GetClientHandleAsString()}", + UseShellExecute = true, + RedirectStandardOutput = false, + }; + + } + + internal static void PostMessage( + string instruction, + params string[] operands) + { + CreateDialogueProcessIfNotExist(); + + _dw.WriteLine($"{instruction} {operands}"); + + } + + public static void PostError(Exception ex) + { + CreateDialogueProcessIfNotExist(); + + _dw.WriteLine($"posterror {ex.Message}"); + + _dialogueProcess!.Exited -= DialogueProcessExitCallback; + } + + internal static void UnloadDialogue() + { + if( _dialogueProcess != null ) { + _dialogueProcess.Kill(); + } + _dialogueProcess = null; + + _dialogueServerPipe.Dispose(); + _dialogueClientPipe.Dispose(); + } + + internal static string WaitCertainReturn( string target ) + { + if( _dialogueProcess == null ) { + return string.Empty; + } + + string temp = string .Empty; + do { + temp = _dr.ReadLine(); + temp = temp ?? string.Empty; + if( !temp!.StartsWith( target ) ) { + break; + } + } while (true); + + int index = temp.IndexOf( ' ' ); + return index != -1 ? temp.Substring( index + 1 ) : string.Empty; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Environment/ErrorDefine.cs b/内核源代码/StgSharp.Common/Environment/ErrorDefine.cs new file mode 100644 index 00000000..05123fb7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Environment/ErrorDefine.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ErrorDefine.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.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class UniformEmptyReferenceException : Exception + { + + public UniformEmptyReferenceException( string program, string name ) + : base( + $"Location -1 returned when trying to find uniform {name} in shader program {program}" ) { } + + } +} diff --git a/内核源代码/StgSharp.Common/Environment/GlobalSetting.cs b/内核源代码/StgSharp.Common/Environment/GlobalSetting.cs new file mode 100644 index 00000000..205e9638 --- /dev/null +++ b/内核源代码/StgSharp.Common/Environment/GlobalSetting.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GlobalSetting.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.Reflection; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static unsafe partial class StgSharp + { + + internal const int ssdSegmentLength = 16; + + private static byte[] _currentHash; + + private static bool _inited; + private static int _mainThreadID = -1; + + public static byte[] CurrentAssemblyHash + { + get + { + if( _currentHash == null ) { + string route = Assembly.GetExecutingAssembly().Location; + string time = DateTime.UtcNow.ToString(); + using( SHA256 sh = SHA256.Create() ) { + byte[] bytes = Encoding.UTF8.GetBytes( route ); + _currentHash = sh.ComputeHash( bytes ); + } + } + return _currentHash; + } + } + + public static int MainThreadID + { + get => ( _mainThreadID == -1 ) ? + throw new InvalidOperationException( + "StgSharp environment is not inited. " + "Main thread id is not available" ) : _mainThreadID; + } + + /// + /// CustomizeInit an instance of OpenGL program, This method should be called before any + /// other StgSharp api. + /// + public static void InitGL( int majorVersion, int minorVersion ) + { + if( API == default ) { + API = GraphicAPI.GL; + } + if( API != GraphicAPI.GL ) { + return; + } + InternalIO.InternalInitGL( majorVersion, minorVersion ); + } + + public static class GlobalSetting + { + + private static bool vSyncActivated; + + public static bool VSyncActivated + { + get => vsyncActivated; + set + { + InternalIO.glfwSwapInterval( value ? 1 : 0 ); + vsyncActivated = value; + } + } + + } + + }//-------------------------------------- End of Class ---------------------------------------// +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Environment/Monitors.cs b/内核源代码/StgSharp.Common/Environment/Monitors.cs new file mode 100644 index 00000000..753ed36b --- /dev/null +++ b/内核源代码/StgSharp.Common/Environment/Monitors.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Monitors.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 System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static partial class StgSharp + { + + private static unsafe IntPtr[] monitorsArray; + + public static unsafe IntPtr[] MonitorsHandleArray + { + get + { + if( monitorsArray == null ) { + int count = 0; + IntPtr* arrayhandle = InternalIO.glfwGetMonitors( &count ); + monitorsArray = new IntPtr[count]; + Marshal.Copy( + ( IntPtr )arrayhandle, monitorsArray, 0, count ); + Marshal.FreeHGlobal( ( IntPtr )arrayhandle ); + } + return monitorsArray; + } + } + + public static IntPtr DefaultMonitor + { + get { return MonitorsHandleArray[ 0 ]; } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Environment/Platform.cs b/内核源代码/StgSharp.Common/Environment/Platform.cs new file mode 100644 index 00000000..1aba30a3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Environment/Platform.cs @@ -0,0 +1,209 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Platform.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.Envitronment; +// using StgSharp.Envitronment.Win32; +// using StgSharp.Graphics; +// using StgSharp.Math; + +using StgSharp.Internal; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +#if Windows + +// using Windows.Win32.UI.WindowsAndMessaging; +// using Windows.Win32; +// using Windows.Win32.Foundation; +// using Windows.Win32.Graphics.OpenGL; +// using Windows.Win32.Graphics.Gdi; +// using Windows.Win32.UI; + +#endif + +namespace StgSharp +{ + internal enum GraphicAPI : byte + { + + GL, + DX, + VK + + } + + public static partial class StgSharp + { + + /// + /// Version of current StgSharp platform. Main version represent in hundred's digit, and sub + /// version represent in ten's digit. + /// + public const long version = 430; + + private static bool vsyncActivated; + + private static uint markCount = 0; + internal static GraphicAPI API = default; + + public static unsafe void Init() + { + mainTimeProvider = new StgSharpTime(); + MainTimeProvider.StartProvidingTime(); + InternalIO.glfwInit(); + InternalIO.InternalAppendLog( "\n\n\n" ); + InternalIO.InternalWriteLog( + $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", + LogType.Info ); + _mainThreadID = Environment.CurrentManagedThreadId; + + + Dialogue.LoadDialogue(); + if (Dialogue.NeedShowWhenStartup) + { + Dialogue.CreateDialogueProcessIfNotExist(); + } + + InternalIO.InitIntrinsicContext(); + } + + public static void LogError( Exception ex ) + { + InternalIO.InternalWriteLog( ex.Message, LogType.Error ); + } + + public static void LogInfo( string log ) + { + InternalIO.InternalWriteLog( log, LogType.Info ); + } + + public static void LogWarning( string log ) + { + InternalIO.InternalWriteLog( log, LogType.Warning ); + } + + public static void LogWarning( Exception notVerySeriesException ) + { + InternalIO.InternalWriteLog( + notVerySeriesException.Message, LogType.Warning ); + } + + public static void Mark( bool needConsole ) + { + markCount++; + if( needConsole ) { + Console.WriteLine( markCount ); + } + } + + public static void Terminate() + { + MainTimeProvider.StopProvidingTime(); + InternalIO.glfwTerminate(); + } + + public static void Track( + object target, + string message, + bool isConsole, + [CallerFilePath] string filePath = "", + [CallerMemberName] string callerName = "", + [CallerLineNumber] int lineNumber = 0 ) + { + Type t = target.GetType(); + string log = $"Tracked object: {nameof(target)}\t\tType:{t.Name}\n"; + FieldInfo[] fieldInfo = t.GetFields( + BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance ); + log += "|\tFieldName\t|\tFieldType\t|\tFieldValue\t|\n"; + foreach( FieldInfo field in fieldInfo ) { + log += $"|{field.Name}\t\t|{field.FieldType}\t\t|{field.GetValue(target)}\t\t|\n"; + } + log += $"Tracking at:\n{filePath}\t{callerName}\tline {lineNumber}\n"; + log += $"Additional information:\n{message}\n"; + if( isConsole ) { + Console.WriteLine( log ); + } else { + InternalIO.InternalWriteLog( log, LogType.Info ); + } + } + + /// + /// Write a log message to log file, and mark the _level of this message. + /// + /// A string contains information of how current evironment runs. + /// The severity of current message. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static void WriteLog( string message, LogType logType ) + { + InternalIO.InternalWriteLog( message, logType ); + } + + internal static TDele ConvertAPI( IntPtr funcPtr ) + { + if( funcPtr == IntPtr.Zero ) { + throw new InvalidCastException( + "Failed to convert api, the function pointer is zero." ); + } + try { + return Marshal.GetDelegateForFunctionPointer( funcPtr ); + } + catch( Exception ) { + throw; + } + } + + internal static Delegate ConvertAPI( IntPtr funcPtr, Type T ) + { + if( funcPtr == IntPtr.Zero ) { + throw new InvalidCastException( + "Failed to convert api, the function pointer is zero." ); + } + try { + return Marshal.GetDelegateForFunctionPointer( funcPtr, T ); + } + catch( Exception ) { + throw; + } + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Environment/globalKeyStat.cs b/内核源代码/StgSharp.Common/Environment/globalKeyStat.cs new file mode 100644 index 00000000..afddb8ab --- /dev/null +++ b/内核源代码/StgSharp.Common/Environment/globalKeyStat.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="globalKeyStat.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.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static partial class StgSharp + { + + private static ConcurrentDictionary keyListener + = new ConcurrentDictionary(); + + public static KeyStatus CheckKey( KeyboardKey key ) + { + return keyListener.GetOrAdd( ( int )key, KeyStatus.RELEASE ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/Coordination/CoordinationBase.cs b/内核源代码/StgSharp.Common/Geometries/Coordination/CoordinationBase.cs new file mode 100644 index 00000000..e86c9be5 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/Coordination/CoordinationBase.cs @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CoordinationBase.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public abstract class CoordinationBase + { + + private bool globalCoordAvailable; + private CoordinationBase localCoordination; + private Matrix44 coordMat; + + public CoordinationBase( CoordinationBase localCoordination ) + { + this.localCoordination = localCoordination; + coordMat = new Matrix44(); + } + + public virtual Point LocalOrigin + { + get => new Point( coordMat.colum3.XYZ ); + internal set => coordMat.colum3.XYZ = value.Coord; + } + + public virtual Vec3 LocalX + { + get => coordMat.colum0.XYZ; + internal set => coordMat.colum0.XYZ = value; + } + + public virtual Vec3 LocalY + { + get => coordMat.colum1.XYZ; + internal set => coordMat.colum1.XYZ = value; + } + + public virtual Vec3 LocalZ + { + get => coordMat.colum2.XYZ; + set => coordMat.colum2.XYZ = value; + } + + protected ref Matrix44 CoordMat + { + get => ref coordMat; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs b/内核源代码/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs new file mode 100644 index 00000000..e8624a1e --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainCoordinate.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.Http.Headers; +using System.Text; + +namespace StgSharp.Geometries +{ + public class PlainCoordinate : CoordinationBase + { + + private static PlainCoordinate statndardPlainCoordination = new PlainCoordinate( + null, new Point( 0, 0, 0 ), new Vec3( 1, 0, 0 ), + new Vec3( 0, 1, 0 ) ); + + public PlainCoordinate( + CoordinationBase local, + Point origin, + Vec3 xAxis, + Vec3 yAxis ) + : base( local ) + { + CoordMat = Matrix44.Unit; + + CoordMat.colum0 = new Vec4( xAxis, 0 ); + CoordMat.colum1 = new Vec4( yAxis, 0 ); + CoordMat.colum2 = new Vec4( + Linear.Normalize( Vec3.Cross( xAxis, yAxis ) ), 0 ); + + LocalOrigin = origin; + } + + public static PlainCoordinate StandardPlainCoordination => statndardPlainCoordination; + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs b/内核源代码/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs new file mode 100644 index 00000000..4e83172d --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SpaceCoordinate.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.Text; + +namespace StgSharp.Geometries +{ + public class SpaceCoordinate : CoordinationBase + { + + public SpaceCoordinate( + CoordinationBase localCoordination, + Point origin, + Vec3 xAxis, + Vec3 yAxis, + Vec3 zAxis ) + : base( localCoordination ) { } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/Coordination/StreamLocalCoordinate.cs b/内核源代码/StgSharp.Common/Geometries/Coordination/StreamLocalCoordinate.cs new file mode 100644 index 00000000..2f311de4 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/Coordination/StreamLocalCoordinate.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StreamLocalCoordinate.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + /* + public class StreamLocalCoordinate : CoordinationBase + { + } + /**/ +} diff --git a/内核源代码/StgSharp.Common/Geometries/GemoryException.cs b/内核源代码/StgSharp.Common/Geometries/GemoryException.cs new file mode 100644 index 00000000..1189a134 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/GemoryException.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GemoryException.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.Runtime.Serialization; + +namespace StgSharp.Geometries +{ + public unsafe class ToUpperDimensionException : Exception + { + + protected ToUpperDimensionException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + public ToUpperDimensionException() { } + + public ToUpperDimensionException( string message ) : base( message ) { } + + public ToUpperDimensionException( + string message, + Exception innerException ) + : base( message, innerException ) { } + + } + + /// + /// 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + /// + public class UnusedVertexException : Exception + { + + protected UnusedVertexException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + public UnusedVertexException() { } + + public UnusedVertexException( string message ) : base( message ) { } + + public UnusedVertexException( string message, Exception innerException ) + : base( message, innerException ) { } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs b/内核源代码/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs new file mode 100644 index 00000000..c8833636 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GeometryOperation.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.Timing; + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Geometries +{ +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate Vec3 GeometryMotionDelegate( + TimeSpanProvider timeSource, + out float rotation ); + + public class GeometryMotion + { + + private bool isIncrementMode; + private bool sourceIsStatic; + private GeometryMotionDelegate movement; + private IntPtr handle; + private TimeSpanProvider time; + + public unsafe GeometryMotion( + bool isIncreament, + TimeSpanProvider timeSource, + GeometryMotionDelegate motionDelegate ) + { + isIncrementMode = isIncreament; + time = timeSource; + if( motionDelegate == null ) { + handle = ( IntPtr )( delegate* )&defaultMotion; + movement = defaultMotion; + } else if( motionDelegate.Method.IsStatic ) { + sourceIsStatic = true; + handle = Marshal.GetFunctionPointerForDelegate( motionDelegate ); + movement = motionDelegate; + } else { + movement = motionDelegate; + } + + //sourceIsStatic = false; + } + + public bool IsIncrement + { + get => isIncrementMode; + } + + public static GeometryMotion DefaultMotion + { + get => new GeometryMotion( true, null, null ); + } + + public unsafe void RunMotion( ref Vec3 coord, ref float rotation ) + { + float rot; + Vec3 vec; + if( sourceIsStatic ) { + vec = ( ( delegate* unmanaged[Cdecl] )handle )( + time, out rot ); + } else { + vec = movement( time, out rot ); + } + + if( isIncrementMode ) { + coord += vec; + rotation += rot; + } else { + coord = vec; + rotation = rot; + } + } + + private static Vec3 defaultMotion( + TimeSpanProvider provider, + out float rotation ) + { + rotation = 0; + return Vec3.Zero; + } + + }//------------------------------- End of Class ------------------------------- +} diff --git a/内核源代码/StgSharp.Common/Geometries/GeometryScaler/Angle.cs b/内核源代码/StgSharp.Common/Geometries/GeometryScaler/Angle.cs new file mode 100644 index 00000000..2b7d1dec --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/GeometryScaler/Angle.cs @@ -0,0 +1,178 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Angle.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.Math +{ + public static partial class GeometryScaler + { + + internal const float DegToRad = 180 / Scaler.Pi; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( Radius r ) + { + return MathF.Cos( r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( Degree r ) + { + return MathF.Cos( r._degree / DegToRad ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sin( Radius r ) + { + return MathF.Sin( r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sin( Degree r ) + { + return MathF.Sin( r._degree / DegToRad ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Tan( Radius r ) + { + return MathF.Tan( r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Tan( Degree r ) + { + return MathF.Tan( r._degree / DegToRad ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Degree ToDegree( float value ) + { + return new Degree( value ); + } + + } + + public struct Degree + { + + internal float _degree; + + public Degree( float dgree ) + { + _degree = dgree; + } + + public static implicit operator Radius( Degree d ) + { + return new Radius( d._degree / GeometryScaler.DegToRad ); + } + + } + + public struct Radius + { + + internal float _radius; + + [Obsolete( "Unsafe, you may forget this is radius.", true )] + public Radius() { } + + public Radius( float radius ) + { + _radius = radius; + } + + public static Radius Zero + { + get => new Radius( 0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator -( Radius r ) + { + return new Radius( -r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator -( Radius left, Radius Right ) + { + return new Radius( left._radius - Right._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( Radius left, Radius right ) + { + return left._radius != right._radius; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator *( Radius left, float right ) + { + return new Radius( left._radius * right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator /( Radius left, float right ) + { + return new Radius( left._radius / right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float operator /( Radius left, Radius right ) + { + return left._radius / right._radius; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator +( Radius left, Radius Right ) + { + return new Radius( left._radius + Right._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Radius left, Radius right ) + { + return left._radius == right._radius; + } + + public static implicit operator Degree( Radius r ) + { + return new Degree( ( r._radius * 180 ) / Scaler.Pi ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/IGeometry.cs b/内核源代码/StgSharp.Common/Geometries/IGeometry.cs new file mode 100644 index 00000000..22fda049 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/IGeometry.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IGeometry.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.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IGeometry + { + + public Point this[ int index ] + { + get; + set; + } + + #pragma warning disable CA1819 + public Vec4[] VertexStream + #pragma warning restore CA1819 + { + get; + } + + public CoordinationBase Coordination + { + get; + } + + public int VertexCount + { + get; + } + + public ReadOnlySpan VertexIndices + { + get; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/IGeomtryBuffer.cs b/内核源代码/StgSharp.Common/Geometries/IGeomtryBuffer.cs new file mode 100644 index 00000000..3dc01ff7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/IGeomtryBuffer.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IGeomtryBuffer.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IGeomtryBuffer { } +} diff --git a/内核源代码/StgSharp.Common/Geometries/IInstancing.cs b/内核源代码/StgSharp.Common/Geometries/IInstancing.cs new file mode 100644 index 00000000..33e26535 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/IInstancing.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IInstancing.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.Numerics; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IInstancing + { + + public float Rotation + { + get { return GlobalBuffer.CoordAndRotationList[ BufferId ].W; } + set + { + Vec4 temp = GlobalBuffer.CoordAndRotationList[ BufferId ]; + temp.W = value; + GlobalBuffer.CoordAndRotationList[ BufferId ] = temp; + } + } + + public float Scale + { + get { return GlobalBuffer.ScalingList[ BufferId ]; } + set { GlobalBuffer.ScalingList[ BufferId ] = value; } + } + + public GeometryMotion Motion + { + get; + set; + } + + public IInstancingBuffer GlobalBuffer + { + get; + internal set; + } + + public int BufferId + { + get; + internal set; + } + + public Vec3 CenterPositionGlobal + { + get; + internal set; + } + + public Vec3 Coord + { + get { return GlobalBuffer.CoordAndRotationList[ BufferId ].XYZ; } + set { GlobalBuffer.CoordAndRotationList[ BufferId ] = new Vec4( + value.vec ); } + } + + public void Move() + { + (Vec3 coord, float rotation) = (Coord, Rotation); + Motion.RunMotion( ref coord, ref rotation ); + (Coord, Rotation) = (coord, rotation); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/IInstancingBuffer.cs b/内核源代码/StgSharp.Common/Geometries/IInstancingBuffer.cs new file mode 100644 index 00000000..85e0841b --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/IInstancingBuffer.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IInstancingBuffer.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.Text; + +namespace StgSharp.Geometries +{ + public interface IInstancingBuffer + { + + public Span CoordAndRotationSpan + { + get; + } + + public Span ScalingSpan + { + get; + } + + internal IGeometry TypicalShape + { + get; + } + + internal List InstanceList + { + get; + } + + internal List CoordAndRotationList + { + get; + } + + internal List ScalingList + { + get; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs new file mode 100644 index 00000000..b90df786 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs @@ -0,0 +1,85 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Cordinate.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; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + [StructLayout( LayoutKind.Sequential )] + public struct PartialPlainCoordinate + { + + internal Matrix32 axis; + + /// + /// The origin of this coordinate. + /// + public Vec3 origin; + + public PartialPlainCoordinate( + Vec3 origin, + Vec3 horiziontial, + Vec3 vertical ) + { + this.origin = origin; + axis = new Matrix32(); + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out axis.mat ); + #endif + axis.colum0 = horiziontial; + axis.colum1 = vertical; + } + + /// + /// The horizontial axis of the coordinate. Point to the right direction. + /// + public Vec3 axis_H => axis.colum0; + + /// + /// The vertical axis of the coordinate. Point to the top direction. + /// + public Vec3 axis_V => axis.colum1; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public Vec3 GetRealLocate( Vec2 raletiveLocation ) + { + return origin + axis.VerticalVecMultiply( raletiveLocation ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/GeometryOperation.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/GeometryOperation.cs new file mode 100644 index 00000000..dbd0206c --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/GeometryOperation.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GeometryOperation.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.Runtime.CompilerServices; + +namespace StgSharp.Geometries +{ + public static unsafe class GeometryOperation + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 DefaultMotion( int tick ) + { + return default( Vec3 ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs new file mode 100644 index 00000000..a6773c55 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IPlainEntity.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IPlainEntity + { + + public Vec2 CenterPosition + { + get; + set; + } + + public bool CollideWith( IPlainEntity entity ); + + } + + public class PlainEntity : IPlainEntity + { + + private PlainGeometry _shape; + + public PlainEntity( PlainGeometry shape ) + { + _shape = shape; + } + + bool IPlainEntity.CollideWith( IPlainEntity entity ) + { + throw new NotImplementedException(); + } + + Vec2 IPlainEntity.CenterPosition + { + get => _shape.Coordination.LocalOrigin.Coord.XY; + set => throw new InvalidOperationException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs new file mode 100644 index 00000000..d9581574 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ParticleOnPlain.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.Numerics; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public class ParticleOnPlain : IInstancing, IPlainEntity + { + + public ParticleOnPlain( PlainInstancingBuffer buffer ) + { + if( buffer == null ) { + throw new ArgumentNullException( paramName: nameof( buffer ) ); + } + GlobalBuffer = buffer; + BufferId = buffer.CreateInstanceID(); + ( ( IInstancingBuffer )buffer ).InstanceList.Add( this ); + } + + public GeometryMotion Motion + { + get; + set; + } + + public IInstancingBuffer GlobalBuffer + { + get; + set; + } + + public int BufferId + { + get; + set; + } + + Vec3 IInstancing.CenterPositionGlobal + { + get; + set; + } + + bool IPlainEntity.CollideWith( IPlainEntity entity ) + { + throw new NotImplementedException(); + } + + Vec2 IPlainEntity.CenterPosition + { + get => GlobalBuffer.CoordAndRotationList[ BufferId ].XY; + set => throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs new file mode 100644 index 00000000..dd5466bf --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainGeometry.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.ComponentModel; + +namespace StgSharp.Geometries +{ + /// + /// Plain geometry only contains straight sides. + /// + public abstract class PlainGeometry : IGeometry + { + + protected Vec4[] vertexMat; + internal CoordinationBase coordinate; + + internal PlainGeometry( CoordinationBase coordination ) + { + coordinate = coordination; + } + + public Point this[ int index ] + { + get => new Point( vertexMat[ index ] ); + set => vertexMat[ index ].vec = value.coordVec; + } + + public int VertexCount => this.vertexMat.Length; + + public abstract ReadOnlySpan VertexIndices + { + get; + } + + #pragma warning disable CA1819 + public Vec4[] VertexStream => vertexMat; + + public CoordinationBase Coordination => this.coordinate; +#pragma warning restore CA1819 + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs new file mode 100644 index 00000000..86e54b61 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs @@ -0,0 +1,217 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainInstancingBuffer.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; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Numerics; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public class PlainInstancingBuffer : IDisposable, IEnumerable, IInstancingBuffer + where T: IInstancing + { + + private bool disposedValue; + + private CoordinatePlain globalCorrdinnate; + private List coordList; + private List instanceList; + private List scalingList; + private Mutex mutex; + + public PlainInstancingBuffer() + { + coordList = new List( capacity: 100 ); + instanceList = new List( capacity: 100 ); + scalingList = new List( capacity: 100 ); + coordArray = Array.Empty(); + scaleArray = Array.Empty(); + mutex = new Mutex(); + } + + public List InstanceList + { + get => instanceList; + } + + public List CoordAndRotationList + { + get => coordList; + } + + public List ScalingList + { + get => scalingList; + } + + public Span CoordAndRotationSpan + { + get + { + if( coordArray.Length != coordList.Capacity ) { + FieldInfo fieldInfo = typeof( List ). + GetField( + "_items", + BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) { + #pragma warning disable CA1065 + #pragma warning disable CA2201 + throw new NullReferenceException(); + #pragma warning restore CA2201 + #pragma warning restore CA1065 + } + coordArray = ( Vec4[] )fieldInfo.GetValue( coordList ); + } + return new Span( coordArray, 0, coordList.Count ); + } + } + + public Span ScalingSpan + { + get + { + if( scaleArray.Length != coordList.Capacity ) { + FieldInfo fieldInfo = typeof( List ). + GetField( + "_items", + BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) { + #pragma warning disable CA1065 + #pragma warning disable CA2201 + throw new NullReferenceException(); + #pragma warning restore CA2201 + #pragma warning restore CA1065 + } + scaleArray = ( float[] )fieldInfo.GetValue( scalingList ); + } + return new Span( scaleArray, 0, coordList.Count ); + } + } + + public int CreateInstanceID() + { + mutex.WaitOne(); + int ret = instanceList.Count; + coordList.Add( new Vec4() ); + scalingList.Add( 0 ); + mutex.ReleaseMutex(); + return ret; + } + + // ~PlainInstancingBuffer() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public IEnumerator GetEnumerator() + { + foreach( IInstancing item in instanceList ) { + yield return ( T )item; + } + } + + public void Remove( T instance ) + { + mutex.WaitOne(); + if( instance.GlobalBuffer != this ) { + throw new ArgumentException( + message: "instance does not belong to current Particle Buffer", + paramName: nameof( instance ) ); + } + int index = instance.BufferId; + IInstancing temp = instanceList[ instanceList.Count - 1 ]; + instanceList[ instance.BufferId ] = temp; + temp.BufferId = instance.BufferId; + + coordList[ instance.BufferId ] = coordList[ coordList.Count - 1 ]; + scalingList[ instance.BufferId ] = scalingList[ + scalingList.Count - 1 ]; + + instanceList.RemoveAt( instanceList.Count - 1 ); + coordList.RemoveAt( coordList.Count - 1 ); + scalingList.RemoveAt( scalingList.Count - 1 ); + mutex.ReleaseMutex(); + } + + public void UpdateAllParticles() + { + foreach( IInstancing particle in instanceList ) { + particle.Move(); + } + } + + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + mutex.Dispose(); + } + + coordList.Clear(); + instanceList.Clear(); + scalingList.Clear(); + disposedValue = true; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + foreach( IInstancing item in instanceList ) { + yield return ( T )item; + } + } + + IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException( + ); + + #region field of mem opt + + private Vec4[] coordArray; + private float[] scaleArray; + + #endregion + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs new file mode 100644 index 00000000..98b877de --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs @@ -0,0 +1,88 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Parallelogram.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; + +namespace StgSharp.Geometries +{ + public class Parallelogram : Polygon4 + { + + internal readonly Func movCenterOperation = + new Func( GeometryOperation.DefaultMotion ); + + internal Point center; + + public Parallelogram( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + InternalIO.InternalWriteLog( + "Init of geometry item failed, because four vertices cannot form a rectangle.", + LogType.Warning ); + } + #endif + } + + public Parallelogram( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination, v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + InternalIO.InternalWriteLog( + "Init of geometry item failed, because four vertices cannot form a rectangle.", + LogType.Warning ); + } + #endif + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Plain.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Plain.cs new file mode 100644 index 00000000..2338a379 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Plain.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Plain.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.Numerics; + +namespace StgSharp.Geometries +{ + public unsafe class Plain + { + + internal readonly float d = -1; + internal Vec3 origin; + + internal Vec3 plainParameter; + internal Vec3 vec1; + internal Vec3 vec2; + + internal Plain( Vector4 origin, Vector4 p1, Vector4 p2 ) + { + this.origin = new Vec3( origin ); + + vec1 = new Vec3( p1 - origin ); + vec2 = new Vec3( p2 - origin ); + } + + public Plain( Vec3 o, Vec3 v1, Vec3 v2 ) + { + this.origin = o; + this.vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影 + this.vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影 + + //|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z; + plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) ); + + //根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y + plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z ); + plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z ); + + plainParameter.X = 1 / plainParameter.X; + plainParameter.Y = 1 / plainParameter.Y; + plainParameter.Z = 1 / plainParameter.Z; + } + + public Plain( Point p1, Point p2, Point p3 ) + { + Vec3 origin = p1.Coord; + Vec3 v1 = p2.Coord - origin; + Vec3 v2 = p3.Coord - origin; + + + vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影 + vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影 + + //|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z; + plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) ); + + //根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y + plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z ); + plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z ); + + plainParameter.X = 1 / plainParameter.X; + plainParameter.Y = 1 / plainParameter.Y; + plainParameter.Z = 1 / plainParameter.Z; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs new file mode 100644 index 00000000..7af184cc --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs @@ -0,0 +1,129 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Polygon4.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.Numerics; + +namespace StgSharp.Geometries +{ + public class Polygon4 : PlainGeometry + { + + protected static int[] Indices = [0, 1, 2, 0, 2, 3]; + + internal Polygon4() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[4]; + } + + internal Polygon4( Vec4[] rawCoord ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + if( rawCoord.Length != 4 ) { + throw new ArgumentOutOfRangeException( nameof( rawCoord ) ); + } + vertexMat = rawCoord; + } + + public Polygon4( + Point topLeft, + Point topRight, + Point bottomRight, + Point bottomLeft ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = topLeft; + this[ 1 ] = topRight; + this[ 2 ] = bottomRight; + this[ 3 ] = bottomLeft; + } + + public Polygon4( + CoordinationBase coordinate, + PlainCoordinate coordination, + Point topLeft, + Point topRight, + Point bottomRight, + Point bottomLeft ) + : base( coordinate ) + { + this[ 0 ] = topLeft; + this[ 1 ] = topRight; + this[ 2 ] = bottomRight; + this[ 3 ] = bottomLeft; + } + + public Polygon4( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[4]; + + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + } + + public Polygon4( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination ) + { + vertexMat = new Vec4[4]; + + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs new file mode 100644 index 00000000..3ddbc743 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Polygon5.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.Numerics; + +namespace StgSharp.Geometries +{ + public unsafe class Polygon5 : PlainGeometry + { + + internal static int[] Indices = [0, 1, 2, 0, 2, 3, 0, 3, 4]; + + public unsafe Polygon5() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[5]; + } + + public Polygon5( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y, + float v4x, + float v4y ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[5]; + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + this[ 4 ] = new Point( v4x, v4y, 0 ); + } + + public Polygon5( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y, + float v4x, + float v4y ) + : base( coordination ) + { + vertexMat = new Vec4[5]; + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + this[ 4 ] = new Point( v4x, v4y, 0 ); + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs new file mode 100644 index 00000000..be3813b0 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Polygon6.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.Numerics; + +namespace StgSharp.Geometries +{ + public class Polygon6 : PlainGeometry + { + + internal static int[] Indices = [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5]; + + public Polygon6() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[6]; + } + + public Polygon6( + PlainCoordinate coordination, + Vec2 vert0, + Vec2 vert1, + Vec2 vert2, + Vec2 vert3, + Vec2 vert4, + Vec2 vert5, + Vec2 vert6 ) + : base( coordination ) + { + vertexMat = new Vec4[6]; + vertexMat[ 0 ].vec = vert0.vec; + vertexMat[ 1 ].vec = vert1.vec; + vertexMat[ 2 ].vec = vert2.vec; + vertexMat[ 3 ].vec = vert3.vec; + vertexMat[ 4 ].vec = vert4.vec; + vertexMat[ 5 ].vec = vert5.vec; + vertexMat[ 6 ].vec = vert6.vec; + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs new file mode 100644 index 00000000..6d79fb5d --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Rectangle.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.Numerics; + +namespace StgSharp.Geometries +{ + public class Rectangle : Parallelogram + { + + public Rectangle( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + Vec2 side0 = ( this[ 0 ].Coord - this[ 1 ].Coord ).XY; + Vec2 side1 = ( this[ 2 ].Coord - this[ 1 ].Coord ).XY; + if( side0.Cross( side1 ) == 0 ) { + throw new ArgumentException(); + } + #endif + } + + public Rectangle( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination, v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + Vec2 side0 = ( this[ 0 ].Coord - this[ 1 ].Coord ).XY; + Vec2 side1 = ( this[ 2 ].Coord - this[ 1 ].Coord ).XY; + if( side0.Cross( side1 ) == 0 ) { + throw new ArgumentException(); + } + #endif + } + + /// + /// Calculate movement to center + /// + /// CurrentBlueprint time tick + /// + public virtual Vec3 MovCenter( uint tick ) + { + return default( Vec3 ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Square.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Square.cs new file mode 100644 index 00000000..c4a5ce8a --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Square.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Square.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.Numerics; + +namespace StgSharp.Geometries +{ + /// + /// A square + /// + public class Square : Rectangle + { + + public Square( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + if( true ) { } + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs new file mode 100644 index 00000000..04933c7f --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs @@ -0,0 +1,103 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Triangle.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.Numerics; + +namespace StgSharp.Geometries +{ + public unsafe class Triangle : PlainGeometry + { + + internal static int[] Indices = [0, 1, 2]; + + public Triangle() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[3]; + } + + public Triangle( Point vertex01, Point vertex02, Point vertex03 ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = vertex01; + this[ 1 ] = vertex02; + this[ 2 ] = vertex03; + } + + public Triangle( + PlainCoordinate coordination, + Point vertex01, + Point vertex02, + Point vertex03 ) + : base( coordination ) + { + this[ 0 ] = vertex01; + this[ 1 ] = vertex02; + this[ 2 ] = vertex03; + } + + public Triangle( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + } + + public Triangle( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) + : base( coordination ) + { + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/Point.cs b/内核源代码/StgSharp.Common/Geometries/Point.cs new file mode 100644 index 00000000..9731a2cc --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/Point.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Point.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.Numerics; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Geometries +{ + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct Point + { + + [FieldOffset( 0 )] private Vec3 coord; + [FieldOffset( 0 )] internal Vector4 coordVec; + + internal Point( Vec4 vector ) + { + coordVec = vector.vec; + coordVec.W = 1; + } + + public Point( Vec3 coord ) + { + Coord = coord; + coordVec.W = 1; + } + + public Point( float x, float y, float z ) + { + coordVec = new Vector4( x, y, z, 1 ); + } + + public Vec3 Coord + { + get => coord; + set + { + coord = value; + coordVec.W = 1; + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Geometries/SpaceGeometry/Class1.cs b/内核源代码/StgSharp.Common/Geometries/SpaceGeometry/Class1.cs new file mode 100644 index 00000000..1a2d98c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Geometries/SpaceGeometry/Class1.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Class1.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.Geometries.SpaceGeometry +{ + internal class Class1 { } +} diff --git a/内核源代码/StgSharp.Common/Global.cs b/内核源代码/StgSharp.Common/Global.cs new file mode 100644 index 00000000..a0eaa76e --- /dev/null +++ b/内核源代码/StgSharp.Common/Global.cs @@ -0,0 +1,22 @@ +// 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. + +global using StgSharp.Internal; +global using StgSharp.Internal.Intrinsic; +global using StgSharp.Internal.OpenGL; + +using System.Diagnostics.CodeAnalysis; +using System.Runtime.InteropServices; + +[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")] +[assembly: SuppressMessage("Design", "CA1043:将整型或字符串参数用于索引器", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.IViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)")] +[assembly: SuppressMessage("Design", "CA1043:将整型或字符串参数用于索引器", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.ViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)")] +[assembly: SuppressMessage("Performance", "CA1864:首选 \"IDictionary.TryAdd(TKey, TValue)\" 方法", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.ViewRender`1.Item(System.String)")] +[assembly: SuppressMessage("Design", "CA1033:接口方法应可由子类型调用", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Keys")] +[assembly: SuppressMessage("Design", "CA1033:接口方法应可由子类型调用", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Values")] diff --git a/内核源代码/StgSharp.Common/Graphics/CPUanimation/IImageProvider.cs b/内核源代码/StgSharp.Common/Graphics/CPUanimation/IImageProvider.cs new file mode 100644 index 00000000..1741e253 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/CPUanimation/IImageProvider.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IImageProvider.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 +{ + public interface IImageProvider + { + + Image ProvideImage(); + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs b/内核源代码/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs new file mode 100644 index 00000000..e41a960a --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ImageHelper.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.ComponentModel; +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 ) ); + } + if( i.Size == (width, height) ) { + return; + } + if( !Enum.IsDefined( typeof( ImageMovement ), move ) ) { + throw new InvalidEnumArgumentException( nameof( move ) ); + } + byte[] oldData = i.Data; + i.Data = new byte[width * height * i.PixelSize]; + i.Height = height; + i.Width = width; + i.PixelUpdateCount++; + switch( move ) { + case ImageMovement.Discard: + break; + case ImageMovement.Top: + break; + default: + throw new NotImplementedException(); + } + } + + } + + [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.Common/Graphics/Define/BufferObjectBase.cs b/内核源代码/StgSharp.Common/Graphics/Define/BufferObjectBase.cs new file mode 100644 index 00000000..332921d6 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/Define/BufferObjectBase.cs @@ -0,0 +1,83 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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 GlHandle[] _bufferHandle; + protected RenderStream binding; + + /// + /// 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.Common/Graphics/IGraphicAPIs.cs b/内核源代码/StgSharp.Common/Graphics/IGraphicAPIs.cs new file mode 100644 index 00000000..70646eac --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/IGraphicAPIs.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IGraphicAPIs.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 +{ + public interface IGraphicAPIs + { + + public IntPtr GraphicApiPackageHandle + { + get; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/Image.cs b/内核源代码/StgSharp.Common/Graphics/Image.cs new file mode 100644 index 00000000..40aca0e1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/Image.cs @@ -0,0 +1,218 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Image.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.Internal; +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; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public class Image : ISSDSerializable, IImageProvider + { + + private byte[] _data; + private ImageInfo _rawInfo; + private int _pixelUpdateCount = 0; + + internal unsafe Image() + { + _rawInfo = new ImageInfo(); + } + + internal Image( ImageInfo information ) + { + _rawInfo = information; + _data = Array.Empty(); + + //int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel; + } + + public (int width, int height) Size + { + get => (_rawInfo.Width, _rawInfo.Height); + } + + public byte[] PixelBuffer + { + get + { + if( ( _data.Length == 0 ) || ( _data == null ) ) { + GetBytes(); + return _data!; + } + return _data; + } + } + + public ImageChannel Channel => _rawInfo.Channel; + + /// + /// Hash code of time pixels updated last time. + /// + public int PixelUpdateCount + { + get => _pixelUpdateCount; + internal set => _pixelUpdateCount = value; + } + + public int ChannelCount => _rawInfo.ChannelCount; + + public int Height + { + get => _rawInfo.Height; + internal set => _rawInfo.Height = value; + } + + public int Width + { + get => _rawInfo.Width; + internal set => _rawInfo.Width = value; + } + + public int PixelSize => ImageInfo.GetPixelSize( + _rawInfo.pixelLayout, _rawInfo.Channel ); + + public PixelChannelLayout PixelLayout + { + get => _rawInfo.pixelLayout; + private set => _rawInfo.pixelLayout = value; + } + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.PixelImage; + + internal ref byte[] Data + { + get => ref _data; + } + + public void FromBytes( byte[] stream ) { } + + public static unsafe Image FromFile( string route, ImageLoader loader ) + { + Image ret = new Image(); + fixed( ImageInfo* iptr = &ret._rawInfo ) { + InternalIO.InternalLoadImage( route, iptr, loader ); + } + return ret; + } + + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + byte[] stream ) + { + ImageInfo _info = new ImageInfo + { + 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 static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + PixelChannelLayout layout, + byte[] stream ) + { + ImageInfo _info = new ImageInfo + { + Height = size.height, + Width = size.width, + Channel = channel, + StreamPtr = IntPtr.Zero + }; + Image ret = new Image( _info ); + ret.PixelLayout = layout; + ret._data = stream; + return ret; + } + + public unsafe byte[] GetBytes() + { + if( _data.Length == 0 ) { + int size = Width * Height * ImageInfo.GetPixelSize( + PixelLayout, Channel ); + _data = new Span( ( byte* )_rawInfo.StreamPtr, + size ).ToArray(); + fixed( ImageInfo* pptr = &_rawInfo ) { + InternalIO.InternalUnloadImage( pptr ); + } + _rawInfo.StreamPtr = IntPtr.Zero; + } + return _data; + } + + public Image ProvideImage() => this; + + internal static Image FromMemory( + ImageInfo info, + byte[] data, + int operationCount ) + { + return new Image + { + _rawInfo = info, + _data = data, + _pixelUpdateCount = operationCount + }; + } + + byte[] ISSDSerializable.GetBytes() + { + throw new NotImplementedException(); + } + + } + +} + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class GlHelper + { + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/ImageInfo.cs b/内核源代码/StgSharp.Common/Graphics/ImageInfo.cs new file mode 100644 index 00000000..ccb46ce5 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/ImageInfo.cs @@ -0,0 +1,141 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Runtime.CompilerServices; +using StgSharp.Graphics.OpenGL; +using System.Runtime.InteropServices; + + +namespace StgSharp.Graphics +{ + [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)] + public delegate IntPtr ImageLoader( + string name, + ref int width, + ref int height, + ref int definedChannel, + int desiredChannel); + + + [StructLayout(LayoutKind.Sequential)] + internal struct ImageInfo + { + + private ImageChannel channel; + private int height; + private int width; + private IntPtr pixelPtr; + internal PixelChannelLayout pixelLayout; + + public ImageChannel Channel + { + get => channel; + set { channel = value; } + } + + public int ChannelCount + { + get => GetChannelCount(channel); + } + + public int Height + { + get => height; + set => height = value; + } + + public int StreamSize + { + get => width * height * GetPixelSize( + pixelLayout, channel); + } + + public int Width + { + get => width; + set => width = value; + } + + public IntPtr StreamPtr + { + get => pixelPtr; + internal set => pixelPtr = value; + } + + public override int GetHashCode() + { + int hash = 17; + hash = hash * 17 + width; + hash = hash * 17 + height; + hash = hash * 17 + (int)channel; + return hash; + } + + public override string ToString() + { + return $"{channel}\t{width}\t{height}\t{(ulong)StreamPtr}"; + } + + + 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 channel) + { + return layout switch + { + PixelChannelLayout.UByte => sizeof(byte) * GetChannelCount( + channel), + PixelChannelLayout.Byte => sizeof(byte) * GetChannelCount( + channel), + PixelChannelLayout.UShort => sizeof(short) * GetChannelCount( + channel), + PixelChannelLayout.Short => sizeof(short) * GetChannelCount( + channel), + PixelChannelLayout.UInt => sizeof(int) * GetChannelCount( + channel), + PixelChannelLayout.Int => sizeof(int) * GetChannelCount( + channel), + PixelChannelLayout.Float => sizeof(float) * GetChannelCount( + channel), + 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"), + }; + } + + } + + public enum ImageChannel : uint + { + + SingleColor = glConst.RED, + DoubleColor = glConst.RG, + TripleColor = glConst.RGB, + WithAlphaChannel = glConst.RGBA, + + } + +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs new file mode 100644 index 00000000..37e842ff --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs @@ -0,0 +1,161 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="AutoTexture.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.Commom.Collections; +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + /// + /// A collection of a sets of OpenGL textures. The collection can automatically select one of + /// the texture with minimum costs to upgrade pixels to buffer. Usually is used for loading, but not for + /// target of . + /// + public sealed class AutoTextureGL + { + + private TextureProperty[] propertyCache; + private BidirectionalDictionary imageIndexMap = new BidirectionalDictionary( + ); + private Dictionary imageUpdateIndex = new Dictionary( + ); + + private int _size, _currentIndex; + private LinkedList usedTextureIndex; + private Queue unusedTextureUnitIndex; + private TextureGL texturePackage; + + private TextureProperty _textureProperty; + + private AutoTextureGL( TextureGL texture ) + { + texturePackage = texture; + _size = texture.Count; + imageIndexMap = new BidirectionalDictionary(); + unusedTextureUnitIndex = new Queue( + Enumerable.Range( 0, _size ) ); + usedTextureIndex = new LinkedList(); + propertyCache = new TextureProperty[_size]; + } + + public AutoTextureGL( int textureObjectSize, [NotNull]glRender binding ) + { + this._size = textureObjectSize; + imageIndexMap = new BidirectionalDictionary(); + texturePackage = new TextureGL( textureObjectSize, binding ); + unusedTextureUnitIndex = new Queue( + Enumerable.Range( 0, _size ) ); + usedTextureIndex = new LinkedList(); + propertyCache = new TextureProperty[_size]; + } + + public TextureProperty DefaultTextureProperty + { + get => _textureProperty; + set => _textureProperty = value; + } + + private OpenGLFunction GL + { + get => texturePackage.GL; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SelectTextureAndBind( Image i ) + { + TextureProperty property = _textureProperty; + + SelectTextureAndBind( i, property ); + } + + public void SelectTextureAndBind( + [NotNull]Image i, + TextureProperty property ) + { + //usable texture with image match + if( imageIndexMap.TryGetValue( i, out int index ) ) { + //prop setting match + if( propertyCache[ index ] == property ) { + _currentIndex = index; //GL.Assert(true); + texturePackage.Bind2D( index ); //GL.Assert(true); + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + texturePackage.LoadTexture( index, i ); //GL.Assert(true); + } + } else { + _currentIndex = index; //GL.Assert(true); + texturePackage.Bind2D( index ); //GL.Assert(true); + texturePackage.Set2dProperty( index, property ); //GL.Assert(true); + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + texturePackage.LoadTexture( index, i ); //GL.Assert(true); + } + } + } else { + if( unusedTextureUnitIndex.TryDequeue( out int newIndex ) ) { + //has extra unused texture object + imageIndexMap.Add( i, index ); + texturePackage.Bind2D( index ); + texturePackage.Set2dProperty( index, property ); + texturePackage.LoadTexture( index, i ); + usedTextureIndex.AddLast( newIndex ); + propertyCache[ newIndex ] = property; + imageUpdateIndex[ i ] = i.PixelUpdateCount; + } else { + //recycle from current + int reusedIndex = usedTextureIndex.First!.Value; + usedTextureIndex.RemoveFirst(); + usedTextureIndex.AddLast( reusedIndex ); + imageIndexMap[ i ] = reusedIndex; + propertyCache[ newIndex ] = property; + imageUpdateIndex[ i ] = i.PixelUpdateCount; + } + } + } + + public static AutoTextureGL ToAuto( [NotNull]TextureGL texture ) + { + if( texture.IndexOfCurrentTexture != -1 ) { + throw new InvalidOperationException( + "Texture to be converted has been editted." ); + } + return new AutoTextureGL( texture ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs new file mode 100644 index 00000000..a9889c1b --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Internal.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 sealed unsafe class ElementBuffer : GlBufferObjectBase + { + + internal ElementBuffer( int n, glRender 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.Common/Graphics/OpenGL/Buffer/FBO.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs new file mode 100644 index 00000000..aed14cbf --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs @@ -0,0 +1,101 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="FBO.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.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 sealed class FrameBuffer : GlBufferObjectBase + { + + internal unsafe FrameBuffer( int count, glRender 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 override unsafe void Bind( int index ) + { + GL.BindFrameBuffer( FrameBufferTarget.All, _bufferHandle[ index ] ); + } + + /// + /// 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 ] ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static void BindNull() + { + OpenGLFunction.CurrentGL + .BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); + } + + protected override void Dispose( bool disposing ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs new file mode 100644 index 00000000..675cb155 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs @@ -0,0 +1,53 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GLBufferObjectBase.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.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract class GlBufferObjectBase : BufferObjectBase + { + + private readonly glRender _contextBinding; + + protected GlBufferObjectBase( glRender contextBinding ) + { + binding = contextBinding; + _contextBinding = contextBinding; + } + + protected OpenGLFunction GL => _contextBinding.GL; + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs new file mode 100644 index 00000000..56d16466 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RBO.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.Security.Principal; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed class RenderBuffer : GlBufferObjectBase + { + + public RenderBuffer( int count, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenRenderBuffer( count ); + } + + public override void Bind( int index ) + { + GL.BindRenderBuffer( this[ index ] ); + } + + 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" ); + } + } + + protected override void Dispose( bool disposing ) + { + foreach( GlHandle item in _bufferHandle ) { + Console.WriteLine( "removing a render buffer" ); + GL.DeleteRenderBuffer( item ); + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs new file mode 100644 index 00000000..b5e45e8f --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs @@ -0,0 +1,301 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TextureGL.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; +using StgSharp.Internal.OpenGL; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Drawing; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed unsafe class TextureGL + { + + private int currentEditingTextureIndex; + + private OpenGLFunction _gl; + internal GlHandle[] _textureHandle; + + internal TextureGL( int count, glRender binding ) + { + //sourceList = new Image[count]; + this._gl = binding.GL; + _textureHandle = _gl.GenTextures( count ); + } + + public GlHandle this[ int index ] + { + get => _textureHandle[ index ]; + } + + public int Count + { + get => _textureHandle.Length; + } + + //internal Image[] sourceList; + + public int IndexOfCurrentTexture + { + get => currentEditingTextureIndex; + } + + internal OpenGLFunction GL => _gl; + + public void ActivateAs( TextureUnit unit ) + { + _gl.ActiveTextureUnit( ( uint )unit ); + } + + public void Bind2D( int index ) + { + currentEditingTextureIndex = index; + _gl.BindTexture( glConst.TEXTURE_2D, _textureHandle[ index ] ); + } + + /// + /// Load an to certain texture. + /// + /// + /// + public unsafe void LoadTexture( int index, Image i ) + { + byte[] handle = i.PixelBuffer; + _gl.TextureImage2d( + Texture2DTarget.Texture2D, 0, i.Channel, ( uint )i.Width, + ( uint )i.Height, i.Channel, i.PixelLayout, pixels: handle ); + _gl.GenerateMipmap( Texture2DTarget.Texture2D ); + } + + #region texture setting + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Set2dFilterProperty( + int index, + TextureFilter onMinify, + TextureFilter onMagnify ) + { + #if DEBUG + if( index != currentEditingTextureIndex ) { + throw new InvalidOperationException( + "Texture to be editted is not the one being activated." ); + } + #endif + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_MIN_FILTER, + ( int )onMinify ); + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_MAG_FILTER, + ( int )onMagnify ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Set2dWrapProperty( + int index, + TextureWrap onHorizontial, + TextureWrap onVertical ) + { + #if DEBUG + if( index != currentEditingTextureIndex ) { + throw new InvalidOperationException( + "Texture to be editted is not the one being activated." ); + } + #endif + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_S, + ( int )onHorizontial ); + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_T, ( int )onVertical ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Set2dProperty( int index, TextureProperty property ) + { + Set2dFilterProperty( + index, property.FilterOnMinify, property.FilterOnMagnify ); + Set2dWrapProperty( + index, property.WrapOnHorizontial, property.WrapOnVertical ); + } + + #endregion texture setting + } + + [StructLayout( LayoutKind.Explicit )] + public struct TextureProperty + { + + [FieldOffset( 0 )] private M128 mask; + [FieldOffset( 0 )] private TextureFilter mag; + [FieldOffset( 4 )] private TextureFilter min; + + [FieldOffset( 8 )] private TextureWrap hori; + [FieldOffset( 12 )] private TextureWrap vert; + + public TextureProperty( + TextureFilter onMagnify, + TextureFilter onMinify, + TextureWrap onHorizontial, + TextureWrap onVertical ) + { + FilterOnMagnify = onMagnify; + FilterOnMinify = onMinify; + WrapOnHorizontial = onHorizontial; + WrapOnVertical = onVertical; + } + + public TextureFilter FilterOnMagnify + { + get => mag; + set => mag = value; + } + + public TextureFilter FilterOnMinify + { + get => min; + set => min = value; + } + + public TextureWrap WrapOnHorizontial + { + get => hori; + set => hori = value; + } + + public TextureWrap WrapOnVertical + { + get => vert; + set => vert = value; + } + + public override bool Equals( [NotNullWhen( true )] object obj ) + { + return base.Equals( obj ); + } + + public override int GetHashCode() + { + return HashCode.Combine( + FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, + WrapOnVertical ); + } + + public override string ToString() + { + return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; + } + + public static bool operator !=( + TextureProperty left, + TextureProperty right ) + { + return left.mask != right.mask; + } + + public static bool operator ==( + TextureProperty left, + TextureProperty right ) + { + return left.mask == right.mask; + } + + public static implicit operator TextureProperty( + ( + TextureFilter onMagnify, TextureFilter onMinify, + TextureWrap onHorizontial, TextureWrap onVertical + ) propertyValueTuple ) + { + return new TextureProperty( + propertyValueTuple.onMagnify, propertyValueTuple.onMinify, + propertyValueTuple.onHorizontial, + propertyValueTuple.onVertical ); + } + + } + + #pragma warning disable CA1008 + public enum TextureFilter + #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 TextureWrap + #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.Common/Graphics/OpenGL/Buffer/VAO.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs new file mode 100644 index 00000000..28ecd5a2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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 sealed unsafe class VertexArray : GlBufferObjectBase + { + + internal VertexArray( int n, glRender 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() + { + OpenGLFunction.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.Common/Graphics/OpenGL/Buffer/VBO.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs new file mode 100644 index 00000000..166df4cf --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs @@ -0,0 +1,170 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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 sealed unsafe class VertexBuffer : GlBufferObjectBase + { + + internal VertexBuffer( int n, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenBuffers( n ); + } + + public override sealed void Bind( int index ) + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + } + + /// + /// + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Unbind() + { + GL.BindBuffer( BufferType.ArrayBuffer, GlHandle.Zero ); + } + + /// + /// 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 ); + } + + protected override sealed void Dispose( bool disposing ) + { + if( disposing ) { + GL.DeleteBuffers( _bufferHandle ); + } + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/GLfixed.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/GLfixed.cs new file mode 100644 index 00000000..9ccba942 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/GLfixed.cs @@ -0,0 +1,49 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GLfixed.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.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + [StructLayout( LayoutKind.Explicit, Size = 8 )] + public struct GLfixed + { + + [FieldOffset( 0 )] public int All; + [FieldOffset( 0 )] public short Decimals; + [FieldOffset( 4 )] public short Inertger; + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs new file mode 100644 index 00000000..9f37e056 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IglConvertable.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.ShaderEdit +{ + public interface IglConvertable + { + + /// + /// + /// + public void DisplayGLtypeDefinition(); + + /// + /// + /// + public void GainAllUniforms( + ShaderProgram source, + params string[] uniformName ); + + /// + /// + /// + /// + public ShaderStruct GetConvertedGLtype(); + + /// + /// + /// + public void SetAllUniforms(); + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs new file mode 100644 index 00000000..0794d5c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -0,0 +1,271 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Internal; + +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 glRender : RenderStream + { + + /// + /// Create an instance of program + /// + /// New instance of instance. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed ShaderProgram CreateShaderProgram() + { + return new ShaderProgram( this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed Shader CreateShaderSegment( + ShaderType type, + int count ) + { + return new Shader( GL.CreateShaderSet( count, type ), type, this ); + } + + } + + public class Shader : ISSDSerializable + { + + private readonly OpenGLFunction GL; + internal readonly GlHandle[] handle; + public readonly ShaderType type; + + internal unsafe Shader( + GlHandle[] handle, + ShaderType usage, + glRender stream ) + { + this.handle = handle; + GL = stream.GL; + type = usage; + } + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.Shader; + + /// + /// 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 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}" ); + } + } + + [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 ], codeStream.AsSpan() ); + GL.CompileShader( handle[ index ] ); + CheckStatus( index, ShaderStatus.CompileStatus ); + } + + public void FromBytes( byte[] stream ) + { + throw new NotImplementedException(); + } + + 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 ); + } + + public byte[] GetBytes() + { + return Array.Empty(); + } + + public byte[] GetBytes( out int length ) + { + throw new NotImplementedException(); + } + + public override string ToString() + { + return $"This is a {type} shader, its shader handles are {handle.ToString()}."; + } + + } + + public enum ShaderStatus : int + { + + CompileStatus = glConst.COMPILE_STATUS, + + } + + public class ShaderProgram + { + + private readonly OpenGLFunction GL; + internal readonly GlHandle handle; + + /// + /// CustomizeInit a program with no shader attached. + /// + internal unsafe ShaderProgram( glRender 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( + ( OpenglContext* )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.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs new file mode 100644 index 00000000..70349a10 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -0,0 +1,199 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Diagnostics.CodeAnalysis; +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 Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + internal static Uniform FromHandle( GlHandle handle ) + { + return new Uniform { id = handle }; + } + + } + + public sealed class Uniform : Uniform where T: struct where U: struct + { + + internal Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + 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 Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + 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 Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + internal static Uniform FromHandle( GlHandle handle ) + { + return new Uniform { id = handle }; + } + + } + + public unsafe partial class OpenGLFunction + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull] Uniform uniform, Matrix44 mat ) + { + Matrix44 temp = mat; + Context.glUniformMatrix4fv( + uniform.id.SignedValue, 1, false, ( float* )&temp ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull]Uniform uniform, + Vec4 vec ) + { + Vec4 temp = vec; + Context.glUniform1fv( uniform.id.SignedValue, 4, &temp.reg ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull]Uniform uniform, Vec4 vec ) + { + Vec4 temp = vec; + Context.glUniform1fv( uniform.id.SignedValue, 4, &temp.reg ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull]Uniform uniform, float v0 ) + { + Context.glUniform1f( uniform.id.SignedValue, v0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull]Uniform uniform, int i0 ) + { + Context.glUniform1i( uniform.id.SignedValue, i0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1 ) + { + Context.glUniform2f( uniform.id.SignedValue, v0, v1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1, + float v2 ) + { + Context.glUniform3f( uniform.id.SignedValue, v0, v1, v2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull] 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.Common/Graphics/OpenGL/glAPICalling.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glAPICalling.cs new file mode 100644 index 00000000..05af95e9 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glAPICalling.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glAPICalling.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 +{ + [AttributeUsage( AttributeTargets.Method )] + public sealed class OpenGLAPICallingAttribute : Attribute + { + + public OpenGLAPICallingAttribute() { } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glApiManager.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glApiManager.cs new file mode 100644 index 00000000..f55dee94 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glApiManager.cs @@ -0,0 +1,4502 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Common.Internal.Intrinsic; +using StgSharp.Math; +using StgSharp.MVVM; +using StgSharp.MVVM.View; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class glManager + { + + private const int glExtension = 0x1f03; + private const int glVersion = 0x1f02; + + private static readonly string[] glBranch = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC " + }; + + private static string glExtensionList; + + //-------------------------------------------------------------------------------- + + /// + /// Get the function pointer of given OpenGL api _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; + } + + /// + /// Load all supported OpenGL APIs and bind them to given . + /// + /// The handle to current OpenGL viewPortDisplay + public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) + { + OpenglContext* context = ( OpenglContext* )contextHandle; + delegate* loader = &InternalIO.glfwGetProcAddress; + if( ( IntPtr )context->glGetString != IntPtr.Zero ) { + return; + } + IntPtr proc = loader( "glGetString" ); + if( proc == IntPtr.Zero ) { + #if DEBUG + Console.WriteLine( "Cannot load GL." ); + #endif + throw new Exception( "Cannot load gl" ); + } + context->glGetString = ( delegate* )proc; + + string coreVersion; + if( context->glGetString( glVersion ) == IntPtr.Zero ) { + InternalIO.InternalWriteLog( + "Failed to call glGetString", LogType.Error ); + } + coreVersion = Marshal.PtrToStringAnsi( + context->glGetString( glVersion ) ) ?? + string.Empty; + + foreach( string branch in glBranch ) { + if( coreVersion.Contains( branch ) ) { + coreVersion.Replace( branch, string.Empty ); + } + } + string[] versionSep = coreVersion!.Split( '.' ); + int majorVersion = int.Parse( versionSep[ 0 ] ); + int minorVersion = int.Parse( versionSep[ 1 ] ); + CheckCoreVersion( majorVersion, minorVersion ); + + try { + #region load_core_gl + + LoadGLcore10( context, loader ); + LoadGLcore11( context, loader ); + LoadGLcore12( context, loader ); + LoadGLcore13( context, loader ); + LoadGLcore14( context, loader ); + LoadGLcore15( context, loader ); + LoadGLcore20( context, loader ); + LoadGLcore21( context, loader ); + LoadGLcore30( context, loader ); + LoadGLcore31( context, loader ); + LoadGLcore32( context, loader ); + LoadGLcore33( context, loader ); + LoadGLcore40( context, loader ); + LoadGLcore41( context, loader ); + LoadGLcore42( context, loader ); + LoadGLcore43( context, loader ); + LoadGLcore44( context, loader ); + LoadGLcore45( context, loader ); + LoadGLcore46( context, loader ); + + #endregion load_core_gl + } + catch( Exception ex ) { + if( ex.Message != "Final Version" ) { + throw; + } + } + + uint code = context->glGetError(); + Console.WriteLine( code ); + if( code != 0 ) { + throw new GlExecutionException( code ); + } + + int extensionCount; + context->glGetIntegerv( glConst.NUM_EXTENSIONS, &extensionCount ); + if( extensionCount == 0 ) { + InternalIO.InternalWriteLog( + "No supported OpenGL extensions are found.", LogType.Info ); + return; + } + + List extensions = new List(); + + for( uint i = 0; i < extensionCount; i++ ) { + byte* strPtr = context->glGetStringi( glConst.EXTENSIONS, i ); + extensions.Add( Marshal.PtrToStringAnsi( ( IntPtr )strPtr ) ); + } + + InternalIO.InternalWriteLog( + $"{$"Find OpenGL extensions:"}{Environment.NewLine}{($"{string.Join(';', extensions)}")}", + LogType.Info ); + + #region checkGLextensions + + if( extensions.Contains( "gl_4DFX_multisample" ) ) { + _4DFX_multisample = true; + extensions.Remove( "gl_4DFX_multisample" ); + } + if( extensions.Contains( "gl_3DFX_tbuffer" ) ) { + _3DFX_tbuffer = true; + extensions.Remove( "gl_3DFX_tbuffer" ); + } + if( extensions.Contains( "gl_3DFX_texture_compression_FXT1" ) ) { + _3DFX_texture_compression_FXT1 = true; + extensions.Remove( "gl_3DFX_texture_compression_FXT1" ); + } + if( extensions.Contains( "gl_AMD_blend_minmax_factor" ) ) { + AMD_blend_minmax_factor = true; + extensions.Remove( "glAMD_blend_minmax_factor" ); + } + if( extensions.Contains( "gl_AMD_conservative_depth" ) ) { + AMD_conservative_depth = true; + extensions.Remove( "glAMD_conservative_depth" ); + } + if( extensions.Contains( "gl_AMD_debug_output" ) ) { + AMD_debug_output = true; + extensions.Remove( "glAMD_debug_output" ); + } + if( extensions.Contains( "gl_AMD_depth_clamp_separate" ) ) { + AMD_depth_clamp_separate = true; + extensions.Remove( "glAMD_depth_clamp_separate" ); + } + if( extensions.Contains( "gl_AMD_draw_buffers_blend" ) ) { + AMD_draw_buffers_blend = true; + extensions.Remove( "glAMD_draw_buffers_blend" ); + } + if( extensions.Contains( "gl_AMD_framebuffer_multisample_advanced" ) ) { + AMD_framebuffer_multisample_advanced = true; + extensions.Remove( "glAMD_framebuffer_multisample_advanced" ); + } + if( extensions.Contains( "gl_AMD_framebuffer_sample_positions" ) ) { + AMD_framebuffer_sample_positions = true; + extensions.Remove( "glAMD_framebuffer_sample_positions" ); + } + if( extensions.Contains( "gl_AMD_gcn_shader" ) ) { + AMD_gcn_shader = true; + extensions.Remove( "glAMD_gcn_shader" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_half_float" ) ) { + AMD_gpu_shader_half_float = true; + extensions.Remove( "glAMD_gpu_shader_half_float" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_int16" ) ) { + AMD_gpu_shader_int16 = true; + extensions.Remove( "glAMD_gpu_shader_int16" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_int64" ) ) { + AMD_gpu_shader_int64 = true; + extensions.Remove( "glAMD_gpu_shader_int64" ); + } + if( extensions.Contains( "gl_AMD_interleaved_elements" ) ) { + AMD_interleaved_elements = true; + extensions.Remove( "glAMD_interleaved_elements" ); + } + if( extensions.Contains( "gl_AMD_multi_draw_indirect" ) ) { + AMD_multi_draw_indirect = true; + extensions.Remove( "glAMD_multi_draw_indirect" ); + } + if( extensions.Contains( "gl_AMD_name_gen_delete" ) ) { + AMD_name_gen_delete = true; + extensions.Remove( "glAMD_name_gen_delete" ); + } + if( extensions.Contains( "gl_AMD_occlusion_query_event" ) ) { + AMD_occlusion_query_event = true; + extensions.Remove( "glAMD_occlusion_query_event" ); + } + if( extensions.Contains( "gl_AMD_performance_monitor" ) ) { + AMD_performance_monitor = true; + extensions.Remove( "glAMD_performance_monitor" ); + } + if( extensions.Contains( "gl_AMD_pinned_memory" ) ) { + AMD_pinned_memory = true; + extensions.Remove( "glAMD_pinned_memory" ); + } + if( extensions.Contains( "gl_AMD_query_buffer_object" ) ) { + AMD_query_buffer_object = true; + extensions.Remove( "glAMD_query_buffer_object" ); + } + if( extensions.Contains( "gl_AMD_sample_positions" ) ) { + AMD_sample_positions = true; + extensions.Remove( "glAMD_sample_positions" ); + } + if( extensions.Contains( "gl_AMD_seamless_cubemap_per_texture" ) ) { + AMD_seamless_cubemap_per_texture = true; + extensions.Remove( "glAMD_seamless_cubemap_per_texture" ); + } + if( extensions.Contains( "gl_AMD_shader_atomic_counter_ops" ) ) { + AMD_shader_atomic_counter_ops = true; + extensions.Remove( "glAMD_shader_atomic_counter_ops" ); + } + if( extensions.Contains( "gl_AMD_shader_ballot" ) ) { + AMD_shader_ballot = true; + extensions.Remove( "glAMD_shader_ballot" ); + } + if( extensions.Contains( "gl_AMD_shader_explicit_vertex_parameter" ) ) { + AMD_shader_explicit_vertex_parameter = true; + extensions.Remove( "glAMD_shader_explicit_vertex_parameter" ); + } + if( extensions.Contains( + "gl_AMD_shader_gpu_shader_half_float_fetch" ) ) { + AMD_shader_gpu_shader_half_float_fetch = true; + extensions.Remove( "glAMD_shader_gpu_shader_half_float_fetch" ); + } + if( extensions.Contains( "gl_AMD_shader_image_load_store_lod" ) ) { + AMD_shader_image_load_store_lod = true; + extensions.Remove( "glAMD_shader_image_load_store_lod" ); + } + if( extensions.Contains( "gl_AMD_shader_stencil_export" ) ) { + AMD_shader_stencil_export = true; + extensions.Remove( "glAMD_shader_stencil_export" ); + } + if( extensions.Contains( "gl_AMD_shader_trinary_minmax" ) ) { + AMD_shader_trinary_minmax = true; + extensions.Remove( "glAMD_shader_trinary_minmax" ); + } + if( extensions.Contains( "gl_AMD_sparse_texture" ) ) { + AMD_sparse_texture = true; + extensions.Remove( "glAMD_sparse_texture" ); + } + if( extensions.Contains( "gl_AMD_stencil_operation_extended" ) ) { + AMD_stencil_operation_extended = true; + extensions.Remove( "glAMD_stencil_operation_extended" ); + } + if( extensions.Contains( "gl_AMD_texture_gather_bias_lod" ) ) { + AMD_texture_gather_bias_lod = true; + extensions.Remove( "glAMD_texture_gather_bias_lod" ); + } + if( extensions.Contains( "gl_AMD_texture_texture4" ) ) { + AMD_texture_texture4 = true; + extensions.Remove( "glAMD_texture_texture4" ); + } + if( extensions.Contains( + "gl_AMD_transform_feedback3_lines_triangles" ) ) { + AMD_transform_feedback3_lines_triangles = true; + extensions.Remove( "glAMD_transform_feedback3_lines_triangles" ); + } + if( extensions.Contains( "gl_AMD_transform_feedback4" ) ) { + AMD_transform_feedback4 = true; + extensions.Remove( "glAMD_transform_feedback4" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_layer" ) ) { + AMD_vertex_shader_layer = true; + extensions.Remove( "glAMD_vertex_shader_layer" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_tessellator" ) ) { + AMD_vertex_shader_tessellator = true; + extensions.Remove( "glAMD_vertex_shader_tessellator" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_viewport_index" ) ) { + AMD_vertex_shader_viewport_index = true; + extensions.Remove( "glAMD_vertex_shader_viewport_index" ); + } + if( extensions.Contains( "gl_APPLE_aux_depth_stencil" ) ) { + APPLE_aux_depth_stencil = true; + extensions.Remove( "glAPPLE_aux_depth_stencil" ); + } + if( extensions.Contains( "gl_APPLE_client_storage" ) ) { + APPLE_client_storage = true; + extensions.Remove( "glAPPLE_client_storage" ); + } + if( extensions.Contains( "gl_APPLE_element_array" ) ) { + APPLE_element_array = true; + extensions.Remove( "glAPPLE_element_array" ); + } + if( extensions.Contains( "gl_APPLE_fence" ) ) { + APPLE_fence = true; + extensions.Remove( "glAPPLE_fence" ); + } + if( extensions.Contains( "gl_APPLE_float_pixels" ) ) { + APPLE_float_pixels = true; + extensions.Remove( "glAPPLE_float_pixels" ); + } + if( extensions.Contains( "gl_APPLE_flush_buffer_range" ) ) { + APPLE_flush_buffer_range = true; + extensions.Remove( "glAPPLE_flush_buffer_range" ); + } + if( extensions.Contains( "gl_APPLE_object_purgeable" ) ) { + APPLE_object_purgeable = true; + extensions.Remove( "glAPPLE_object_purgeable" ); + } + if( extensions.Contains( "gl_APPLE_rgb_422" ) ) { + APPLE_rgb_422 = true; + extensions.Remove( "glAPPLE_rgb_422" ); + } + if( extensions.Contains( "gl_APPLE_row_bytes" ) ) { + APPLE_row_bytes = true; + extensions.Remove( "glAPPLE_row_bytes" ); + } + if( extensions.Contains( "gl_APPLE_specular_vector" ) ) { + APPLE_specular_vector = true; + extensions.Remove( "glAPPLE_specular_vector" ); + } + if( extensions.Contains( "gl_APPLE_texture_range" ) ) { + APPLE_texture_range = true; + extensions.Remove( "glAPPLE_texture_range" ); + } + if( extensions.Contains( "gl_APPLE_transform_hint" ) ) { + APPLE_transform_hint = true; + extensions.Remove( "glAPPLE_transform_hint" ); + } + if( extensions.Contains( "gl_APPLE_vertex_array_object" ) ) { + APPLE_vertex_array_object = true; + extensions.Remove( "glAPPLE_vertex_array_object" ); + } + if( extensions.Contains( "gl_APPLE_vertex_array_range" ) ) { + APPLE_vertex_array_range = true; + extensions.Remove( "glAPPLE_vertex_array_range" ); + } + if( extensions.Contains( "gl_APPLE_vertex_program_evaluators" ) ) { + APPLE_vertex_program_evaluators = true; + extensions.Remove( "glAPPLE_vertex_program_evaluators" ); + } + if( extensions.Contains( "gl_APPLE_ycbcr_422" ) ) { + APPLE_ycbcr_422 = true; + extensions.Remove( "glAPPLE_ycbcr_422" ); + } + if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) { + ARB_ES2_compatibility = true; + extensions.Remove( "glARB_ES2_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_1_compatibility" ) ) { + ARB_ES3_1_compatibility = true; + extensions.Remove( "glARB_ES3_1_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_2_compatibility" ) ) { + ARB_ES3_2_compatibility = true; + extensions.Remove( "glARB_ES3_2_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_compatibility" ) ) { + ARB_ES3_compatibility = true; + extensions.Remove( "glARB_ES3_compatibility" ); + } + if( extensions.Contains( "gl_ARB_arrays_of_arrays" ) ) { + ARB_arrays_of_arrays = true; + extensions.Remove( "glARB_arrays_of_arrays" ); + } + if( extensions.Contains( "gl_ARB_base_instance" ) ) { + ARB_base_instance = true; + extensions.Remove( "glARB_base_instance" ); + } + if( extensions.Contains( "gl_ARB_bindless_texture" ) ) { + ARB_bindless_texture = true; + extensions.Remove( "glARB_bindless_texture" ); + } + if( extensions.Contains( "gl_ARB_blend_func_extended" ) ) { + ARB_blend_func_extended = true; + extensions.Remove( "glARB_blend_func_extended" ); + } + if( extensions.Contains( "gl_ARB_buffer_storage" ) ) { + ARB_buffer_storage = true; + extensions.Remove( "glARB_buffer_storage" ); + } + if( extensions.Contains( "gl_ARB_cl_event" ) ) { + ARB_cl_event = true; + extensions.Remove( "glARB_cl_event" ); + } + if( extensions.Contains( "gl_ARB_clear_buffer_object" ) ) { + ARB_clear_buffer_object = true; + extensions.Remove( "glARB_clear_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_clear_texture" ) ) { + ARB_clear_texture = true; + extensions.Remove( "glARB_clear_texture" ); + } + if( extensions.Contains( "gl_ARB_clip_control" ) ) { + ARB_clip_control = true; + extensions.Remove( "glARB_clip_control" ); + } + if( extensions.Contains( "gl_ARB_color_buffer_float" ) ) { + ARB_color_buffer_float = true; + extensions.Remove( "glARB_color_buffer_float" ); + } + if( extensions.Contains( "gl_ARB_compatibility" ) ) { + ARB_compatibility = true; + extensions.Remove( "glARB_compatibility" ); + } + if( extensions.Contains( "gl_ARB_compressed_texture_pixel_storage" ) ) { + ARB_compressed_texture_pixel_storage = true; + extensions.Remove( "glARB_compressed_texture_pixel_storage" ); + } + if( extensions.Contains( "gl_ARB_compute_shader" ) ) { + ARB_compute_shader = true; + extensions.Remove( "glARB_compute_shader" ); + } + if( extensions.Contains( "gl_ARB_compute_variable_group_size" ) ) { + ARB_compute_variable_group_size = true; + extensions.Remove( "glARB_compute_variable_group_size" ); + } + if( extensions.Contains( "gl_ARB_conditional_render_inverted" ) ) { + ARB_conditional_render_inverted = true; + extensions.Remove( "glARB_conditional_render_inverted" ); + } + if( extensions.Contains( "gl_ARB_conservative_depth" ) ) { + ARB_conservative_depth = true; + extensions.Remove( "glARB_conservative_depth" ); + } + if( extensions.Contains( "gl_ARB_copy_buffer" ) ) { + ARB_copy_buffer = true; + extensions.Remove( "glARB_copy_buffer" ); + } + if( extensions.Contains( "gl_ARB_copy_image" ) ) { + ARB_copy_image = true; + extensions.Remove( "glARB_copy_image" ); + } + if( extensions.Contains( "gl_ARB_cull_distance" ) ) { + ARB_cull_distance = true; + extensions.Remove( "glARB_cull_distance" ); + } + if( extensions.Contains( "gl_ARB_debug_output" ) ) { + ARB_debug_output = true; + extensions.Remove( "glARB_debug_output" ); + } + if( extensions.Contains( "gl_ARB_depth_buffer_float" ) ) { + ARB_depth_buffer_float = true; + extensions.Remove( "glARB_depth_buffer_float" ); + } + if( extensions.Contains( "gl_ARB_depth_clamp" ) ) { + ARB_depth_clamp = true; + extensions.Remove( "glARB_depth_clamp" ); + } + if( extensions.Contains( "gl_ARB_depth_texture" ) ) { + ARB_depth_texture = true; + extensions.Remove( "glARB_depth_texture" ); + } + if( extensions.Contains( "gl_ARB_derivative_control" ) ) { + ARB_derivative_control = true; + extensions.Remove( "glARB_derivative_control" ); + } + if( extensions.Contains( "gl_ARB_direct_state_access" ) ) { + ARB_direct_state_access = true; + extensions.Remove( "glARB_direct_state_access" ); + } + if( extensions.Contains( "gl_ARB_draw_buffers" ) ) { + ARB_draw_buffers = true; + extensions.Remove( "glARB_draw_buffers" ); + } + if( extensions.Contains( "gl_ARB_draw_buffers_blend" ) ) { + ARB_draw_buffers_blend = true; + extensions.Remove( "glARB_draw_buffers_blend" ); + } + if( extensions.Contains( "gl_ARB_draw_elements_base_vertex" ) ) { + ARB_draw_elements_base_vertex = true; + extensions.Remove( "glARB_draw_elements_base_vertex" ); + } + if( extensions.Contains( "gl_ARB_draw_indirect" ) ) { + ARB_draw_indirect = true; + extensions.Remove( "glARB_draw_indirect" ); + } + if( extensions.Contains( "gl_ARB_draw_instanced" ) ) { + ARB_draw_instanced = true; + extensions.Remove( "glARB_draw_instanced" ); + } + if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) { + ARB_enhanced_layouts = true; + extensions.Remove( "glARB_enhanced_layouts" ); + } + if( extensions.Contains( "gl_ARB_explicit_attrib_location" ) ) { + ARB_explicit_attrib_location = true; + extensions.Remove( "glARB_explicit_attrib_location" ); + } + if( extensions.Contains( "gl_ARB_explicit_uniform_location" ) ) { + ARB_explicit_uniform_location = true; + extensions.Remove( "glARB_explicit_uniform_location" ); + } + if( extensions.Contains( "gl_ARB_fragment_coord_conventions" ) ) { + ARB_fragment_coord_conventions = true; + extensions.Remove( "glARB_fragment_coord_conventions" ); + } + if( extensions.Contains( "gl_ARB_fragment_layer_viewport" ) ) { + ARB_fragment_layer_viewport = true; + extensions.Remove( "glARB_fragment_layer_viewport" ); + } + if( extensions.Contains( "gl_ARB_fragment_program" ) ) { + ARB_fragment_program = true; + extensions.Remove( "glARB_fragment_program" ); + } + if( extensions.Contains( "gl_ARB_fragment_program_shadow" ) ) { + ARB_fragment_program_shadow = true; + extensions.Remove( "glARB_fragment_program_shadow" ); + } + if( extensions.Contains( "gl_ARB_fragment_shader" ) ) { + ARB_fragment_shader = true; + extensions.Remove( "glARB_fragment_shader" ); + } + if( extensions.Contains( "gl_ARB_fragment_shader_interlock" ) ) { + ARB_fragment_shader_interlock = true; + extensions.Remove( "glARB_fragment_shader_interlock" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_no_attachments" ) ) { + ARB_framebuffer_no_attachments = true; + extensions.Remove( "glARB_framebuffer_no_attachments" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_object" ) ) { + ARB_framebuffer_object = true; + extensions.Remove( "glARB_framebuffer_object" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) { + ARB_framebuffer_sRGB = true; + extensions.Remove( "glARB_framebuffer_sRGB" ); + } + if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) { + ARB_geometry_shader4 = true; + extensions.Remove( "glARB_geometry_shader4" ); + } + if( extensions.Contains( "gl_ARB_get_program_binary" ) ) { + ARB_get_program_binary = true; + extensions.Remove( "glARB_get_program_binary" ); + } + if( extensions.Contains( "gl_ARB_get_texture_sub_image" ) ) { + ARB_get_texture_sub_image = true; + extensions.Remove( "glARB_get_texture_sub_image" ); + } + if( extensions.Contains( "gl_ARB_gl_spirv" ) ) { + ARB_gl_spirv = true; + extensions.Remove( "glARB_gl_spirv" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) { + ARB_gpu_shader5 = true; + extensions.Remove( "glARB_gpu_shader5" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader_fp64" ) ) { + ARB_gpu_shader_fp64 = true; + extensions.Remove( "glARB_gpu_shader_fp64" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader_int64" ) ) { + ARB_gpu_shader_int64 = true; + extensions.Remove( "glARB_gpu_shader_int64" ); + } + if( extensions.Contains( "gl_ARB_half_float_pixel" ) ) { + ARB_half_float_pixel = true; + extensions.Remove( "glARB_half_float_pixel" ); + } + if( extensions.Contains( "gl_ARB_half_float_vertex" ) ) { + ARB_half_float_vertex = true; + extensions.Remove( "glARB_half_float_vertex" ); + } + if( extensions.Contains( "gl_ARB_imaging" ) ) { + ARB_imaging = true; + extensions.Remove( "glARB_imaging" ); + } + if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) { + ARB_indirect_parameters = true; + extensions.Remove( "glARB_indirect_parameters" ); + } + if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) { + ARB_instanced_arrays = true; + extensions.Remove( "glARB_instanced_arrays" ); + } + if( extensions.Contains( "gl_ARB_internalformat_query" ) ) { + ARB_internalformat_query = true; + extensions.Remove( "glARB_internalformat_query" ); + } + if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) { + ARB_internalformat_query2 = true; + extensions.Remove( "glARB_internalformat_query2" ); + } + if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) { + ARB_invalidate_subdata = true; + extensions.Remove( "glARB_invalidate_subdata" ); + } + if( extensions.Contains( "gl_ARB_map_buffer_alignment" ) ) { + ARB_map_buffer_alignment = true; + extensions.Remove( "glARB_map_buffer_alignment" ); + } + if( extensions.Contains( "gl_ARB_map_buffer_range" ) ) { + ARB_map_buffer_range = true; + extensions.Remove( "glARB_map_buffer_range" ); + } + if( extensions.Contains( "gl_ARB_matrix_palette" ) ) { + ARB_matrix_palette = true; + extensions.Remove( "glARB_matrix_palette" ); + } + if( extensions.Contains( "gl_ARB_multi_bind" ) ) { + ARB_multi_bind = true; + extensions.Remove( "glARB_multi_bind" ); + } + if( extensions.Contains( "gl_ARB_multi_draw_indirect" ) ) { + ARB_multi_draw_indirect = true; + extensions.Remove( "glARB_multi_draw_indirect" ); + } + if( extensions.Contains( "gl_ARB_multisample" ) ) { + ARB_multisample = true; + extensions.Remove( "glARB_multisample" ); + } + if( extensions.Contains( "gl_ARB_multitexture" ) ) { + ARB_multitexture = true; + extensions.Remove( "glARB_multitexture" ); + } + if( extensions.Contains( "gl_ARB_occlusion_query" ) ) { + ARB_occlusion_query = true; + extensions.Remove( "glARB_occlusion_query" ); + } + if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) { + ARB_occlusion_query2 = true; + extensions.Remove( "glARB_occlusion_query2" ); + } + if( extensions.Contains( "gl_ARB_parallel_shader_compile" ) ) { + ARB_parallel_shader_compile = true; + extensions.Remove( "glARB_parallel_shader_compile" ); + } + if( extensions.Contains( "gl_ARB_pipeline_statistics_query" ) ) { + ARB_pipeline_statistics_query = true; + extensions.Remove( "glARB_pipeline_statistics_query" ); + } + if( extensions.Contains( "gl_ARB_pixel_buffer_object" ) ) { + ARB_pixel_buffer_object = true; + extensions.Remove( "glARB_pixel_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_point_parameters" ) ) { + ARB_point_parameters = true; + extensions.Remove( "glARB_point_parameters" ); + } + if( extensions.Contains( "gl_ARB_point_sprite" ) ) { + ARB_point_sprite = true; + extensions.Remove( "glARB_point_sprite" ); + } + if( extensions.Contains( "gl_ARB_polygon_offset_clamp" ) ) { + ARB_polygon_offset_clamp = true; + extensions.Remove( "glARB_polygon_offset_clamp" ); + } + if( extensions.Contains( "gl_ARB_post_depth_coverage" ) ) { + ARB_post_depth_coverage = true; + extensions.Remove( "glARB_post_depth_coverage" ); + } + if( extensions.Contains( "gl_ARB_program_interface_query" ) ) { + ARB_program_interface_query = true; + extensions.Remove( "glARB_program_interface_query" ); + } + if( extensions.Contains( "gl_ARB_provoking_vertex" ) ) { + ARB_provoking_vertex = true; + extensions.Remove( "glARB_provoking_vertex" ); + } + if( extensions.Contains( "gl_ARB_query_buffer_object" ) ) { + ARB_query_buffer_object = true; + extensions.Remove( "glARB_query_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_robust_buffer_access_behavior" ) ) { + ARB_robust_buffer_access_behavior = true; + extensions.Remove( "glARB_robust_buffer_access_behavior" ); + } + if( extensions.Contains( "gl_ARB_robustness" ) ) { + ARB_robustness = true; + extensions.Remove( "glARB_robustness" ); + } + if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) { + ARB_robustness_isolation = true; + extensions.Remove( "glARB_robustness_isolation" ); + } + if( extensions.Contains( "gl_ARB_sample_locations" ) ) { + ARB_sample_locations = true; + extensions.Remove( "glARB_sample_locations" ); + } + if( extensions.Contains( "gl_ARB_sample_shading" ) ) { + ARB_sample_shading = true; + extensions.Remove( "glARB_sample_shading" ); + } + if( extensions.Contains( "gl_ARB_sampler_objects" ) ) { + ARB_sampler_objects = true; + extensions.Remove( "glARB_sampler_objects" ); + } + if( extensions.Contains( "gl_ARB_seamless_cube_map" ) ) { + ARB_seamless_cube_map = true; + extensions.Remove( "glARB_seamless_cube_map" ); + } + if( extensions.Contains( "gl_ARB_seamless_cubemap_per_texture" ) ) { + ARB_seamless_cubemap_per_texture = true; + extensions.Remove( "glARB_seamless_cubemap_per_texture" ); + } + if( extensions.Contains( "gl_ARB_separate_shader_objects" ) ) { + ARB_separate_shader_objects = true; + extensions.Remove( "glARB_separate_shader_objects" ); + } + if( extensions.Contains( "gl_ARB_shader_atomic_counter_ops" ) ) { + ARB_shader_atomic_counter_ops = true; + extensions.Remove( "glARB_shader_atomic_counter_ops" ); + } + if( extensions.Contains( "gl_ARB_shader_atomic_counters" ) ) { + ARB_shader_atomic_counters = true; + extensions.Remove( "glARB_shader_atomic_counters" ); + } + if( extensions.Contains( "gl_ARB_shader_ballot" ) ) { + ARB_shader_ballot = true; + extensions.Remove( "glARB_shader_ballot" ); + } + if( extensions.Contains( "gl_ARB_shader_bit_encoding" ) ) { + ARB_shader_bit_encoding = true; + extensions.Remove( "glARB_shader_bit_encoding" ); + } + if( extensions.Contains( "gl_ARB_shader_clock" ) ) { + ARB_shader_clock = true; + extensions.Remove( "glARB_shader_clock" ); + } + if( extensions.Contains( "gl_ARB_shader_draw_parameters" ) ) { + ARB_shader_draw_parameters = true; + extensions.Remove( "glARB_shader_draw_parameters" ); + } + if( extensions.Contains( "gl_ARB_shader_group_vote" ) ) { + ARB_shader_group_vote = true; + extensions.Remove( "glARB_shader_group_vote" ); + } + if( extensions.Contains( "gl_ARB_shader_image_load_store" ) ) { + ARB_shader_image_load_store = true; + extensions.Remove( "glARB_shader_image_load_store" ); + } + if( extensions.Contains( "gl_ARB_shader_image_size" ) ) { + ARB_shader_image_size = true; + extensions.Remove( "glARB_shader_image_size" ); + } + if( extensions.Contains( "gl_ARB_shader_objects" ) ) { + ARB_shader_objects = true; + extensions.Remove( "glARB_shader_objects" ); + } + if( extensions.Contains( "gl_ARB_shader_precision" ) ) { + ARB_shader_precision = true; + extensions.Remove( "glARB_shader_precision" ); + } + if( extensions.Contains( "gl_ARB_shader_stencil_export" ) ) { + ARB_shader_stencil_export = true; + extensions.Remove( "glARB_shader_stencil_export" ); + } + if( extensions.Contains( "gl_ARB_shader_storage_buffer_object" ) ) { + ARB_shader_storage_buffer_object = true; + extensions.Remove( "glARB_shader_storage_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_shader_subroutine" ) ) { + ARB_shader_subroutine = true; + extensions.Remove( "glARB_shader_subroutine" ); + } + if( extensions.Contains( "gl_ARB_shader_texture_image_samples" ) ) { + ARB_shader_texture_image_samples = true; + extensions.Remove( "glARB_shader_texture_image_samples" ); + } + if( extensions.Contains( "gl_ARB_shader_texture_lod" ) ) { + ARB_shader_texture_lod = true; + extensions.Remove( "glARB_shader_texture_lod" ); + } + if( extensions.Contains( "gl_ARB_shader_viewport_layer_array" ) ) { + ARB_shader_viewport_layer_array = true; + extensions.Remove( "glARB_shader_viewport_layer_array" ); + } + if( extensions.Contains( "gl_ARB_shading_language_100" ) ) { + ARB_shading_language_100 = true; + extensions.Remove( "glARB_shading_language_100" ); + } + if( extensions.Contains( "gl_ARB_shading_language_420pack" ) ) { + ARB_shading_language_420pack = true; + extensions.Remove( "glARB_shading_language_420pack" ); + } + if( extensions.Contains( "gl_ARB_shading_language_include" ) ) { + ARB_shading_language_include = true; + extensions.Remove( "glARB_shading_language_include" ); + } + if( extensions.Contains( "gl_ARB_shading_language_packing" ) ) { + ARB_shading_language_packing = true; + extensions.Remove( "glARB_shading_language_packing" ); + } + if( extensions.Contains( "gl_ARB_shadow" ) ) { + ARB_shadow = true; + extensions.Remove( "glARB_shadow" ); + } + if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) { + ARB_shadow_ambient = true; + extensions.Remove( "glARB_shadow_ambient" ); + } + if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) { + ARB_sparse_buffer = true; + extensions.Remove( "glARB_sparse_buffer" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture" ) ) { + ARB_sparse_texture = true; + extensions.Remove( "glARB_sparse_texture" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) { + ARB_sparse_texture2 = true; + extensions.Remove( "glARB_sparse_texture2" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture_clamp" ) ) { + ARB_sparse_texture_clamp = true; + extensions.Remove( "glARB_sparse_texture_clamp" ); + } + if( extensions.Contains( "gl_ARB_spirv_extensions" ) ) { + ARB_spirv_extensions = true; + extensions.Remove( "glARB_spirv_extensions" ); + } + if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) { + ARB_stencil_texturing = true; + extensions.Remove( "glARB_stencil_texturing" ); + } + if( extensions.Contains( "gl_ARB_sync" ) ) { + ARB_sync = true; + extensions.Remove( "glARB_sync" ); + } + if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) { + ARB_tessellation_shader = true; + extensions.Remove( "glARB_tessellation_shader" ); + } + if( extensions.Contains( "gl_ARB_texture_barrier" ) ) { + ARB_texture_barrier = true; + extensions.Remove( "glARB_texture_barrier" ); + } + if( extensions.Contains( "gl_ARB_texture_border_clamp" ) ) { + ARB_texture_border_clamp = true; + extensions.Remove( "glARB_texture_border_clamp" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_object" ) ) { + ARB_texture_buffer_object = true; + extensions.Remove( "glARB_texture_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_object_rgb32" ) ) { + ARB_texture_buffer_object_rgb32 = true; + extensions.Remove( "glARB_texture_buffer_object_rgb32" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_range" ) ) { + ARB_texture_buffer_range = true; + extensions.Remove( "glARB_texture_buffer_range" ); + } + if( extensions.Contains( "gl_ARB_texture_compression" ) ) { + ARB_texture_compression = true; + extensions.Remove( "glARB_texture_compression" ); + } + if( extensions.Contains( "gl_ARB_texture_compression_bptc" ) ) { + ARB_texture_compression_bptc = true; + extensions.Remove( "glARB_texture_compression_bptc" ); + } + if( extensions.Contains( "gl_ARB_texture_compression_rgtc" ) ) { + ARB_texture_compression_rgtc = true; + extensions.Remove( "glARB_texture_compression_rgtc" ); + } + if( extensions.Contains( "gl_ARB_texture_cube_map" ) ) { + ARB_texture_cube_map = true; + extensions.Remove( "glARB_texture_cube_map" ); + } + if( extensions.Contains( "gl_ARB_texture_cube_map_array" ) ) { + ARB_texture_cube_map_array = true; + extensions.Remove( "glARB_texture_cube_map_array" ); + } + if( extensions.Contains( "gl_ARB_texture_env_add" ) ) { + ARB_texture_env_add = true; + extensions.Remove( "glARB_texture_env_add" ); + } + if( extensions.Contains( "gl_ARB_texture_env_combine" ) ) { + ARB_texture_env_combine = true; + extensions.Remove( "glARB_texture_env_combine" ); + } + if( extensions.Contains( "gl_ARB_texture_env_crossbar" ) ) { + ARB_texture_env_crossbar = true; + extensions.Remove( "glARB_texture_env_crossbar" ); + } + if( extensions.Contains( "gl_ARB_texture_env_dot3" ) ) { + ARB_texture_env_dot3 = true; + extensions.Remove( "glARB_texture_env_dot3" ); + } + if( extensions.Contains( "gl_ARB_texture_filter_anisotropic" ) ) { + ARB_texture_filter_anisotropic = true; + extensions.Remove( "glARB_texture_filter_anisotropic" ); + } + if( extensions.Contains( "gl_ARB_texture_filter_minmax" ) ) { + ARB_texture_filter_minmax = true; + extensions.Remove( "glARB_texture_filter_minmax" ); + } + if( extensions.Contains( "gl_ARB_texture_float" ) ) { + ARB_texture_float = true; + extensions.Remove( "glARB_texture_float" ); + } + if( extensions.Contains( "gl_ARB_texture_gather" ) ) { + ARB_texture_gather = true; + extensions.Remove( "glARB_texture_gather" ); + } + if( extensions.Contains( "gl_ARB_texture_mirror_clamp_to_edge" ) ) { + ARB_texture_mirror_clamp_to_edge = true; + extensions.Remove( "glARB_texture_mirror_clamp_to_edge" ); + } + if( extensions.Contains( "gl_ARB_texture_mirrored_repeat" ) ) { + ARB_texture_mirrored_repeat = true; + extensions.Remove( "glARB_texture_mirrored_repeat" ); + } + if( extensions.Contains( "gl_ARB_texture_multisample" ) ) { + ARB_texture_multisample = true; + extensions.Remove( "glARB_texture_multisample" ); + } + if( extensions.Contains( "gl_ARB_texture_non_power_of_two" ) ) { + ARB_texture_non_power_of_two = true; + extensions.Remove( "glARB_texture_non_power_of_two" ); + } + if( extensions.Contains( "gl_ARB_texture_query_levels" ) ) { + ARB_texture_query_levels = true; + extensions.Remove( "glARB_texture_query_levels" ); + } + if( extensions.Contains( "gl_ARB_texture_query_lod" ) ) { + ARB_texture_query_lod = true; + extensions.Remove( "glARB_texture_query_lod" ); + } + if( extensions.Contains( "gl_ARB_texture_rectangle" ) ) { + ARB_texture_rectangle = true; + extensions.Remove( "glARB_texture_rectangle" ); + } + if( extensions.Contains( "gl_ARB_texture_rg" ) ) { + ARB_texture_rg = true; + extensions.Remove( "glARB_texture_rg" ); + } + if( extensions.Contains( "gl_ARB_texture_rgb10_a2ui" ) ) { + ARB_texture_rgb10_a2ui = true; + extensions.Remove( "glARB_texture_rgb10_a2ui" ); + } + if( extensions.Contains( "gl_ARB_texture_stencil8" ) ) { + ARB_texture_stencil8 = true; + extensions.Remove( "glARB_texture_stencil8" ); + } + if( extensions.Contains( "gl_ARB_texture_storage" ) ) { + ARB_texture_storage = true; + extensions.Remove( "glARB_texture_storage" ); + } + if( extensions.Contains( "gl_ARB_texture_storage_multisample" ) ) { + ARB_texture_storage_multisample = true; + extensions.Remove( "glARB_texture_storage_multisample" ); + } + if( extensions.Contains( "gl_ARB_texture_swizzle" ) ) { + ARB_texture_swizzle = true; + extensions.Remove( "glARB_texture_swizzle" ); + } + if( extensions.Contains( "gl_ARB_texture_view" ) ) { + ARB_texture_view = true; + extensions.Remove( "glARB_texture_view" ); + } + if( extensions.Contains( "gl_ARB_timer_query" ) ) { + ARB_timer_query = true; + extensions.Remove( "glARB_timer_query" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) { + ARB_transform_feedback2 = true; + extensions.Remove( "glARB_transform_feedback2" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) { + ARB_transform_feedback3 = true; + extensions.Remove( "glARB_transform_feedback3" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback_instanced" ) ) { + ARB_transform_feedback_instanced = true; + extensions.Remove( "glARB_transform_feedback_instanced" ); + } + if( extensions.Contains( + "gl_ARB_transform_feedback_overflow_query" ) ) { + ARB_transform_feedback_overflow_query = true; + extensions.Remove( "glARB_transform_feedback_overflow_query" ); + } + if( extensions.Contains( "gl_ARB_transpose_matrix" ) ) { + ARB_transpose_matrix = true; + extensions.Remove( "glARB_transpose_matrix" ); + } + if( extensions.Contains( "gl_ARB_uniform_buffer_object" ) ) { + ARB_uniform_buffer_object = true; + extensions.Remove( "glARB_uniform_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_array_bgra" ) ) { + ARB_vertex_array_bgra = true; + extensions.Remove( "glARB_vertex_array_bgra" ); + } + if( extensions.Contains( "gl_ARB_vertex_array_object" ) ) { + ARB_vertex_array_object = true; + extensions.Remove( "glARB_vertex_array_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_attrib_64bit" ) ) { + ARB_vertex_attrib_64bit = true; + extensions.Remove( "glARB_vertex_attrib_64bit" ); + } + if( extensions.Contains( "gl_ARB_vertex_attrib_binding" ) ) { + ARB_vertex_attrib_binding = true; + extensions.Remove( "glARB_vertex_attrib_binding" ); + } + if( extensions.Contains( "gl_ARB_vertex_blend" ) ) { + ARB_vertex_blend = true; + extensions.Remove( "glARB_vertex_blend" ); + } + if( extensions.Contains( "gl_ARB_vertex_buffer_object" ) ) { + ARB_vertex_buffer_object = true; + extensions.Remove( "glARB_vertex_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_program" ) ) { + ARB_vertex_program = true; + extensions.Remove( "glARB_vertex_program" ); + } + if( extensions.Contains( "gl_ARB_vertex_shader" ) ) { + ARB_vertex_shader = true; + extensions.Remove( "glARB_vertex_shader" ); + } + if( extensions.Contains( "gl_ARB_vertex_type_10f_11f_11f_rev" ) ) { + ARB_vertex_type_10f_11f_11f_rev = true; + extensions.Remove( "glARB_vertex_type_10f_11f_11f_rev" ); + } + if( extensions.Contains( "gl_ARB_vertex_type_2_10_10_10_rev" ) ) { + ARB_vertex_type_2_10_10_10_rev = true; + extensions.Remove( "glARB_vertex_type_2_10_10_10_rev" ); + } + if( extensions.Contains( "gl_ARB_viewport_array" ) ) { + ARB_viewport_array = true; + extensions.Remove( "glARB_viewport_array" ); + } + if( extensions.Contains( "gl_ARB_window_pos" ) ) { + ARB_window_pos = true; + extensions.Remove( "glARB_window_pos" ); + } + if( extensions.Contains( "gl_ATI_draw_buffers" ) ) { + ATI_draw_buffers = true; + extensions.Remove( "glATI_draw_buffers" ); + } + if( extensions.Contains( "gl_ATI_element_array" ) ) { + ATI_element_array = true; + extensions.Remove( "glATI_element_array" ); + } + if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) { + ATI_envmap_bumpmap = true; + extensions.Remove( "glATI_envmap_bumpmap" ); + } + if( extensions.Contains( "gl_ATI_fragment_shader" ) ) { + ATI_fragment_shader = true; + extensions.Remove( "glATI_fragment_shader" ); + } + if( extensions.Contains( "gl_ATI_map_object_buffer" ) ) { + ATI_map_object_buffer = true; + extensions.Remove( "glATI_map_object_buffer" ); + } + if( extensions.Contains( "gl_ATI_meminfo" ) ) { + ATI_meminfo = true; + extensions.Remove( "glATI_meminfo" ); + } + if( extensions.Contains( "gl_ATI_pixel_format_float" ) ) { + ATI_pixel_format_float = true; + extensions.Remove( "glATI_pixel_format_float" ); + } + if( extensions.Contains( "gl_ATI_pn_triangles" ) ) { + ATI_pn_triangles = true; + extensions.Remove( "glATI_pn_triangles" ); + } + if( extensions.Contains( "gl_ATI_separate_stencil" ) ) { + ATI_separate_stencil = true; + extensions.Remove( "glATI_separate_stencil" ); + } + if( extensions.Contains( "gl_ATI_text_fragment_shader" ) ) { + ATI_text_fragment_shader = true; + extensions.Remove( "glATI_text_fragment_shader" ); + } + if( extensions.Contains( "gl_ATI_texture_env_combine3" ) ) { + ATI_texture_env_combine3 = true; + extensions.Remove( "glATI_texture_env_combine3" ); + } + if( extensions.Contains( "gl_ATI_texture_float" ) ) { + ATI_texture_float = true; + extensions.Remove( "glATI_texture_float" ); + } + if( extensions.Contains( "gl_ATI_texture_mirror_once" ) ) { + ATI_texture_mirror_once = true; + extensions.Remove( "glATI_texture_mirror_once" ); + } + if( extensions.Contains( "gl_ATI_vertex_array_object" ) ) { + ATI_vertex_array_object = true; + extensions.Remove( "glATI_vertex_array_object" ); + } + if( extensions.Contains( "gl_ATI_vertex_attrib_array_object" ) ) { + ATI_vertex_attrib_array_object = true; + extensions.Remove( "glATI_vertex_attrib_array_object" ); + } + if( extensions.Contains( "gl_ATI_vertex_streams" ) ) { + ATI_vertex_streams = true; + extensions.Remove( "glATI_vertex_streams" ); + } + if( extensions.Contains( "gl_EXT_422_pixels" ) ) { + EXT_422_pixels = true; + extensions.Remove( "glEXT_422_pixels" ); + } + if( extensions.Contains( "gl_EXT_EGL_image_storage" ) ) { + EXT_EGL_image_storage = true; + extensions.Remove( "glEXT_EGL_image_storage" ); + } + if( extensions.Contains( "gl_EXT_EGL_sync" ) ) { + EXT_EGL_sync = true; + extensions.Remove( "glEXT_EGL_sync" ); + } + if( extensions.Contains( "gl_EXT_abgr" ) ) { + EXT_abgr = true; + extensions.Remove( "glEXT_abgr" ); + } + if( extensions.Contains( "gl_EXT_bgra" ) ) { + EXT_bgra = true; + extensions.Remove( "glEXT_bgra" ); + } + if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) { + EXT_bindable_uniform = true; + extensions.Remove( "glEXT_bindable_uniform" ); + } + if( extensions.Contains( "gl_EXT_blend_color" ) ) { + EXT_blend_color = true; + extensions.Remove( "glEXT_blend_color" ); + } + if( extensions.Contains( "gl_EXT_blend_equation_separate" ) ) { + EXT_blend_equation_separate = true; + extensions.Remove( "glEXT_blend_equation_separate" ); + } + if( extensions.Contains( "gl_EXT_blend_func_separate" ) ) { + EXT_blend_func_separate = true; + extensions.Remove( "glEXT_blend_func_separate" ); + } + if( extensions.Contains( "gl_EXT_blend_logic_op" ) ) { + EXT_blend_logic_op = true; + extensions.Remove( "glEXT_blend_logic_op" ); + } + if( extensions.Contains( "gl_EXT_blend_minmax" ) ) { + EXT_blend_minmax = true; + extensions.Remove( "glEXT_blend_minmax" ); + } + if( extensions.Contains( "gl_EXT_blend_subtract" ) ) { + EXT_blend_subtract = true; + extensions.Remove( "glEXT_blend_subtract" ); + } + if( extensions.Contains( "gl_EXT_clip_volume_hint" ) ) { + EXT_clip_volume_hint = true; + extensions.Remove( "glEXT_clip_volume_hint" ); + } + if( extensions.Contains( "gl_EXT_cmyka" ) ) { + EXT_cmyka = true; + extensions.Remove( "glEXT_cmyka" ); + } + if( extensions.Contains( "gl_EXT_color_subtable" ) ) { + EXT_color_subtable = true; + extensions.Remove( "glEXT_color_subtable" ); + } + if( extensions.Contains( "gl_EXT_compiled_vertex_array" ) ) { + EXT_compiled_vertex_array = true; + extensions.Remove( "glEXT_compiled_vertex_array" ); + } + if( extensions.Contains( "gl_EXT_convolution" ) ) { + EXT_convolution = true; + extensions.Remove( "glEXT_convolution" ); + } + if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) { + EXT_coordinate_frame = true; + extensions.Remove( "glEXT_coordinate_frame" ); + } + if( extensions.Contains( "gl_EXT_copy_texture" ) ) { + EXT_copy_texture = true; + extensions.Remove( "glEXT_copy_texture" ); + } + if( extensions.Contains( "gl_EXT_cull_vertex" ) ) { + EXT_cull_vertex = true; + extensions.Remove( "glEXT_cull_vertex" ); + } + if( extensions.Contains( "gl_EXT_debug_label" ) ) { + EXT_debug_label = true; + extensions.Remove( "glEXT_debug_label" ); + } + if( extensions.Contains( "gl_EXT_debug_marker" ) ) { + EXT_debug_marker = true; + extensions.Remove( "glEXT_debug_marker" ); + } + if( extensions.Contains( "gl_EXT_depth_bounds_test" ) ) { + EXT_depth_bounds_test = true; + extensions.Remove( "glEXT_depth_bounds_test" ); + } + if( extensions.Contains( "gl_EXT_direct_state_access" ) ) { + EXT_direct_state_access = true; + extensions.Remove( "glEXT_direct_state_access" ); + } + if( extensions.Contains( "gl_EXT_draw_buffers2" ) ) { + EXT_draw_buffers2 = true; + extensions.Remove( "glEXT_draw_buffers2" ); + } + if( extensions.Contains( "gl_EXT_draw_instanced" ) ) { + EXT_draw_instanced = true; + extensions.Remove( "glEXT_draw_instanced" ); + } + if( extensions.Contains( "gl_EXT_draw_range_elements" ) ) { + EXT_draw_range_elements = true; + extensions.Remove( "glEXT_draw_range_elements" ); + } + if( extensions.Contains( "gl_EXT_external_buffer" ) ) { + EXT_external_buffer = true; + extensions.Remove( "glEXT_external_buffer" ); + } + if( extensions.Contains( "gl_EXT_fog_coord" ) ) { + EXT_fog_coord = true; + extensions.Remove( "glEXT_fog_coord" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) { + EXT_framebuffer_blit = true; + extensions.Remove( "glEXT_framebuffer_blit" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_blit_layers" ) ) { + EXT_framebuffer_blit_layers = true; + extensions.Remove( "glEXT_framebuffer_blit_layers" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_multisample" ) ) { + EXT_framebuffer_multisample = true; + extensions.Remove( "glEXT_framebuffer_multisample" ); + } + if( extensions.Contains( + "gl_EXT_framebuffer_multisample_blit_scaled" ) ) { + EXT_framebuffer_multisample_blit_scaled = true; + extensions.Remove( "glEXT_framebuffer_multisample_blit_scaled" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_object" ) ) { + EXT_framebuffer_object = true; + extensions.Remove( "glEXT_framebuffer_object" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) { + EXT_framebuffer_sRGB = true; + extensions.Remove( "glEXT_framebuffer_sRGB" ); + } + if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) { + EXT_geometry_shader4 = true; + extensions.Remove( "glEXT_geometry_shader4" ); + } + if( extensions.Contains( "gl_EXT_gpu_program_parameters" ) ) { + EXT_gpu_program_parameters = true; + extensions.Remove( "glEXT_gpu_program_parameters" ); + } + if( extensions.Contains( "gl_EXT_gpu_shader4" ) ) { + EXT_gpu_shader4 = true; + extensions.Remove( "glEXT_gpu_shader4" ); + } + if( extensions.Contains( "gl_EXT_histogram" ) ) { + EXT_histogram = true; + extensions.Remove( "glEXT_histogram" ); + } + if( extensions.Contains( "gl_EXT_index_array_formats" ) ) { + EXT_index_array_formats = true; + extensions.Remove( "glEXT_index_array_formats" ); + } + if( extensions.Contains( "gl_EXT_index_func" ) ) { + EXT_index_func = true; + extensions.Remove( "glEXT_index_func" ); + } + if( extensions.Contains( "gl_EXT_index_material" ) ) { + EXT_index_material = true; + extensions.Remove( "glEXT_index_material" ); + } + if( extensions.Contains( "gl_EXT_index_texture" ) ) { + EXT_index_texture = true; + extensions.Remove( "glEXT_index_texture" ); + } + if( extensions.Contains( "gl_EXT_light_texture" ) ) { + EXT_light_texture = true; + extensions.Remove( "glEXT_light_texture" ); + } + if( extensions.Contains( "gl_EXT_memory_object" ) ) { + EXT_memory_object = true; + extensions.Remove( "glEXT_memory_object" ); + } + if( extensions.Contains( "gl_EXT_memory_object_fd" ) ) { + EXT_memory_object_fd = true; + extensions.Remove( "glEXT_memory_object_fd" ); + } + if( extensions.Contains( "gl_EXT_memory_object_win32" ) ) { + EXT_memory_object_win32 = true; + extensions.Remove( "glEXT_memory_object_win32" ); + } + if( extensions.Contains( "gl_EXT_misc_attribute" ) ) { + EXT_misc_attribute = true; + extensions.Remove( "glEXT_misc_attribute" ); + } + if( extensions.Contains( "gl_EXT_multi_draw_arrays" ) ) { + EXT_multi_draw_arrays = true; + extensions.Remove( "glEXT_multi_draw_arrays" ); + } + if( extensions.Contains( "gl_EXT_multisample" ) ) { + EXT_multisample = true; + extensions.Remove( "glEXT_multisample" ); + } + if( extensions.Contains( + "gl_EXT_multiview_tessellation_geometry_shader" ) ) { + EXT_multiview_tessellation_geometry_shader = true; + extensions.Remove( + "glEXT_multiview_tessellation_geometry_shader" ); + } + if( extensions.Contains( "gl_EXT_multiview_texture_multisample" ) ) { + EXT_multiview_texture_multisample = true; + extensions.Remove( "glEXT_multiview_texture_multisample" ); + } + if( extensions.Contains( "gl_EXT_multiview_timer_query" ) ) { + EXT_multiview_timer_query = true; + extensions.Remove( "glEXT_multiview_timer_query" ); + } + if( extensions.Contains( "gl_EXT_packed_depth_stencil" ) ) { + EXT_packed_depth_stencil = true; + extensions.Remove( "glEXT_packed_depth_stencil" ); + } + if( extensions.Contains( "gl_EXT_packed_float" ) ) { + EXT_packed_float = true; + extensions.Remove( "glEXT_packed_float" ); + } + if( extensions.Contains( "gl_EXT_packed_pixels" ) ) { + EXT_packed_pixels = true; + extensions.Remove( "glEXT_packed_pixels" ); + } + if( extensions.Contains( "gl_EXT_paletted_texture" ) ) { + EXT_paletted_texture = true; + extensions.Remove( "glEXT_paletted_texture" ); + } + if( extensions.Contains( "gl_EXT_pixel_buffer_object" ) ) { + EXT_pixel_buffer_object = true; + extensions.Remove( "glEXT_pixel_buffer_object" ); + } + if( extensions.Contains( "gl_EXT_pixel_transform" ) ) { + EXT_pixel_transform = true; + extensions.Remove( "glEXT_pixel_transform" ); + } + if( extensions.Contains( "gl_EXT_pixel_transform_color_table" ) ) { + EXT_pixel_transform_color_table = true; + extensions.Remove( "glEXT_pixel_transform_color_table" ); + } + if( extensions.Contains( "gl_EXT_point_parameters" ) ) { + EXT_point_parameters = true; + extensions.Remove( "glEXT_point_parameters" ); + } + if( extensions.Contains( "gl_EXT_polygon_offset" ) ) { + EXT_polygon_offset = true; + extensions.Remove( "glEXT_polygon_offset" ); + } + if( extensions.Contains( "gl_EXT_polygon_offset_clamp" ) ) { + EXT_polygon_offset_clamp = true; + extensions.Remove( "glEXT_polygon_offset_clamp" ); + } + if( extensions.Contains( "gl_EXT_post_depth_coverage" ) ) { + EXT_post_depth_coverage = true; + extensions.Remove( "glEXT_post_depth_coverage" ); + } + if( extensions.Contains( "gl_EXT_provoking_vertex" ) ) { + EXT_provoking_vertex = true; + extensions.Remove( "glEXT_provoking_vertex" ); + } + if( extensions.Contains( "gl_EXT_raster_multisample" ) ) { + EXT_raster_multisample = true; + extensions.Remove( "glEXT_raster_multisample" ); + } + if( extensions.Contains( "gl_EXT_rescale_normal" ) ) { + EXT_rescale_normal = true; + extensions.Remove( "glEXT_rescale_normal" ); + } + if( extensions.Contains( "gl_EXT_secondary_color" ) ) { + EXT_secondary_color = true; + extensions.Remove( "glEXT_secondary_color" ); + } + if( extensions.Contains( "gl_EXT_semaphore" ) ) { + EXT_semaphore = true; + extensions.Remove( "glEXT_semaphore" ); + } + if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) { + EXT_semaphore_fd = true; + extensions.Remove( "glEXT_semaphore_fd" ); + } + if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) { + EXT_semaphore_win32 = true; + extensions.Remove( "glEXT_semaphore_win32" ); + } + if( extensions.Contains( "gl_EXT_separate_shader_objects" ) ) { + EXT_separate_shader_objects = true; + extensions.Remove( "glEXT_separate_shader_objects" ); + } + if( extensions.Contains( "gl_EXT_separate_specular_color" ) ) { + EXT_separate_specular_color = true; + extensions.Remove( "glEXT_separate_specular_color" ); + } + if( extensions.Contains( "gl_EXT_shader_framebuffer_fetch" ) ) { + EXT_shader_framebuffer_fetch = true; + extensions.Remove( "glEXT_shader_framebuffer_fetch" ); + } + if( extensions.Contains( + "gl_EXT_shader_framebuffer_fetch_non_coherent" ) ) { + EXT_shader_framebuffer_fetch_non_coherent = true; + extensions.Remove( + "glEXT_shader_framebuffer_fetch_non_coherent" ); + } + if( extensions.Contains( "gl_EXT_shader_image_load_formatted" ) ) { + EXT_shader_image_load_formatted = true; + extensions.Remove( "glEXT_shader_image_load_formatted" ); + } + if( extensions.Contains( "gl_EXT_shader_image_load_store" ) ) { + EXT_shader_image_load_store = true; + extensions.Remove( "glEXT_shader_image_load_store" ); + } + if( extensions.Contains( "gl_EXT_shader_integer_mix" ) ) { + EXT_shader_integer_mix = true; + extensions.Remove( "glEXT_shader_integer_mix" ); + } + if( extensions.Contains( "gl_EXT_shader_samples_identical" ) ) { + EXT_shader_samples_identical = true; + extensions.Remove( "glEXT_shader_samples_identical" ); + } + if( extensions.Contains( "gl_EXT_shadow_funcs" ) ) { + EXT_shadow_funcs = true; + extensions.Remove( "glEXT_shadow_funcs" ); + } + if( extensions.Contains( "gl_EXT_shared_texture_palette" ) ) { + EXT_shared_texture_palette = true; + extensions.Remove( "glEXT_shared_texture_palette" ); + } + if( extensions.Contains( "gl_EXT_sparse_texture2" ) ) { + EXT_sparse_texture2 = true; + extensions.Remove( "glEXT_sparse_texture2" ); + } + if( extensions.Contains( "gl_EXT_stencil_clear_tag" ) ) { + EXT_stencil_clear_tag = true; + extensions.Remove( "glEXT_stencil_clear_tag" ); + } + if( extensions.Contains( "gl_EXT_stencil_two_side" ) ) { + EXT_stencil_two_side = true; + extensions.Remove( "glEXT_stencil_two_side" ); + } + if( extensions.Contains( "gl_EXT_stencil_wrap" ) ) { + EXT_stencil_wrap = true; + extensions.Remove( "glEXT_stencil_wrap" ); + } + if( extensions.Contains( "gl_EXT_subtexture" ) ) { + EXT_subtexture = true; + extensions.Remove( "glEXT_subtexture" ); + } + if( extensions.Contains( "gl_EXT_texture" ) ) { + EXT_texture = true; + extensions.Remove( "glEXT_texture" ); + } + if( extensions.Contains( "gl_EXT_texture3D" ) ) { + EXT_texture3D = true; + extensions.Remove( "glEXT_texture3D" ); + } + if( extensions.Contains( "gl_EXT_texture_array" ) ) { + EXT_texture_array = true; + extensions.Remove( "glEXT_texture_array" ); + } + if( extensions.Contains( "gl_EXT_texture_buffer_object" ) ) { + EXT_texture_buffer_object = true; + extensions.Remove( "glEXT_texture_buffer_object" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_latc" ) ) { + EXT_texture_compression_latc = true; + extensions.Remove( "glEXT_texture_compression_latc" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_rgtc" ) ) { + EXT_texture_compression_rgtc = true; + extensions.Remove( "glEXT_texture_compression_rgtc" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_s3tc" ) ) { + EXT_texture_compression_s3tc = true; + extensions.Remove( "glEXT_texture_compression_s3tc" ); + } + if( extensions.Contains( "gl_EXT_texture_cube_map" ) ) { + EXT_texture_cube_map = true; + extensions.Remove( "glEXT_texture_cube_map" ); + } + if( extensions.Contains( "gl_EXT_texture_env_add" ) ) { + EXT_texture_env_add = true; + extensions.Remove( "glEXT_texture_env_add" ); + } + if( extensions.Contains( "gl_EXT_texture_env_combine" ) ) { + EXT_texture_env_combine = true; + extensions.Remove( "glEXT_texture_env_combine" ); + } + if( extensions.Contains( "gl_EXT_texture_env_dot3" ) ) { + EXT_texture_env_dot3 = true; + extensions.Remove( "glEXT_texture_env_dot3" ); + } + if( extensions.Contains( "gl_EXT_texture_filter_anisotropic" ) ) { + EXT_texture_filter_anisotropic = true; + extensions.Remove( "glEXT_texture_filter_anisotropic" ); + } + if( extensions.Contains( "gl_EXT_texture_filter_minmax" ) ) { + EXT_texture_filter_minmax = true; + extensions.Remove( "glEXT_texture_filter_minmax" ); + } + if( extensions.Contains( "gl_EXT_texture_integer" ) ) { + EXT_texture_integer = true; + extensions.Remove( "glEXT_texture_integer" ); + } + if( extensions.Contains( "gl_EXT_texture_lod_bias" ) ) { + EXT_texture_lod_bias = true; + extensions.Remove( "glEXT_texture_lod_bias" ); + } + if( extensions.Contains( "gl_EXT_texture_mirror_clamp" ) ) { + EXT_texture_mirror_clamp = true; + extensions.Remove( "glEXT_texture_mirror_clamp" ); + } + if( extensions.Contains( "gl_EXT_texture_object" ) ) { + EXT_texture_object = true; + extensions.Remove( "glEXT_texture_object" ); + } + if( extensions.Contains( "gl_EXT_texture_perturb_normal" ) ) { + EXT_texture_perturb_normal = true; + extensions.Remove( "glEXT_texture_perturb_normal" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB" ) ) { + EXT_texture_sRGB = true; + extensions.Remove( "glEXT_texture_sRGB" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_R8" ) ) { + EXT_texture_sRGB_R8 = true; + extensions.Remove( "glEXT_texture_sRGB_R8" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_RG8" ) ) { + EXT_texture_sRGB_RG8 = true; + extensions.Remove( "glEXT_texture_sRGB_RG8" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_decode" ) ) { + EXT_texture_sRGB_decode = true; + extensions.Remove( "glEXT_texture_sRGB_decode" ); + } + if( extensions.Contains( "gl_EXT_texture_shadow_lod" ) ) { + EXT_texture_shadow_lod = true; + extensions.Remove( "glEXT_texture_shadow_lod" ); + } + if( extensions.Contains( "gl_EXT_texture_shared_exponent" ) ) { + EXT_texture_shared_exponent = true; + extensions.Remove( "glEXT_texture_shared_exponent" ); + } + if( extensions.Contains( "gl_EXT_texture_snorm" ) ) { + EXT_texture_snorm = true; + extensions.Remove( "glEXT_texture_snorm" ); + } + if( extensions.Contains( "gl_EXT_texture_storage" ) ) { + EXT_texture_storage = true; + extensions.Remove( "glEXT_texture_storage" ); + } + if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) { + EXT_texture_swizzle = true; + extensions.Remove( "glEXT_texture_swizzle" ); + } + if( extensions.Contains( "gl_EXT_timer_query" ) ) { + EXT_timer_query = true; + extensions.Remove( "glEXT_timer_query" ); + } + if( extensions.Contains( "gl_EXT_transform_feedback" ) ) { + EXT_transform_feedback = true; + extensions.Remove( "glEXT_transform_feedback" ); + } + if( extensions.Contains( "gl_EXT_vertex_array" ) ) { + EXT_vertex_array = true; + extensions.Remove( "glEXT_vertex_array" ); + } + if( extensions.Contains( "gl_EXT_vertex_array_bgra" ) ) { + EXT_vertex_array_bgra = true; + extensions.Remove( "glEXT_vertex_array_bgra" ); + } + if( extensions.Contains( "gl_EXT_vertex_attrib_64bit" ) ) { + EXT_vertex_attrib_64bit = true; + extensions.Remove( "glEXT_vertex_attrib_64bit" ); + } + if( extensions.Contains( "gl_EXT_vertex_shader" ) ) { + EXT_vertex_shader = true; + extensions.Remove( "glEXT_vertex_shader" ); + } + if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) { + EXT_vertex_weighting = true; + extensions.Remove( "glEXT_vertex_weighting" ); + } + if( extensions.Contains( "gl_EXT_win32_keyed_mutex" ) ) { + EXT_win32_keyed_mutex = true; + extensions.Remove( "glEXT_win32_keyed_mutex" ); + } + if( extensions.Contains( "gl_EXT_window_rectangles" ) ) { + EXT_window_rectangles = true; + extensions.Remove( "glEXT_window_rectangles" ); + } + if( extensions.Contains( "gl_EXT_x11_sync_object" ) ) { + EXT_x11_sync_object = true; + extensions.Remove( "glEXT_x11_sync_object" ); + } + if( extensions.Contains( "gl_GREMEDY_frame_terminator" ) ) { + GREMEDY_frame_terminator = true; + extensions.Remove( "glGREMEDY_frame_terminator" ); + } + if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) { + GREMEDY_string_marker = true; + extensions.Remove( "glGREMEDY_string_marker" ); + } + if( extensions.Contains( "gl_HP_convolution_border_modes" ) ) { + HP_convolution_border_modes = true; + extensions.Remove( "glHP_convolution_border_modes" ); + } + if( extensions.Contains( "gl_HP_image_transform" ) ) { + HP_image_transform = true; + extensions.Remove( "glHP_image_transform" ); + } + if( extensions.Contains( "gl_HP_occlusion_test" ) ) { + HP_occlusion_test = true; + extensions.Remove( "glHP_occlusion_test" ); + } + if( extensions.Contains( "gl_HP_texture_lighting" ) ) { + HP_texture_lighting = true; + extensions.Remove( "glHP_texture_lighting" ); + } + if( extensions.Contains( "gl_IBM_cull_vertex" ) ) { + IBM_cull_vertex = true; + extensions.Remove( "glIBM_cull_vertex" ); + } + if( extensions.Contains( "gl_IBM_multimode_draw_arrays" ) ) { + IBM_multimode_draw_arrays = true; + extensions.Remove( "glIBM_multimode_draw_arrays" ); + } + if( extensions.Contains( "gl_IBM_rasterpos_clip" ) ) { + IBM_rasterpos_clip = true; + extensions.Remove( "glIBM_rasterpos_clip" ); + } + if( extensions.Contains( "gl_IBM_static_data" ) ) { + IBM_static_data = true; + extensions.Remove( "glIBM_static_data" ); + } + if( extensions.Contains( "gl_IBM_texture_mirrored_repeat" ) ) { + IBM_texture_mirrored_repeat = true; + extensions.Remove( "glIBM_texture_mirrored_repeat" ); + } + if( extensions.Contains( "gl_IBM_vertex_array_lists" ) ) { + IBM_vertex_array_lists = true; + extensions.Remove( "glIBM_vertex_array_lists" ); + } + if( extensions.Contains( "gl_INGR_blend_func_separate" ) ) { + INGR_blend_func_separate = true; + extensions.Remove( "glINGR_blend_func_separate" ); + } + if( extensions.Contains( "gl_INGR_color_clamp" ) ) { + INGR_color_clamp = true; + extensions.Remove( "glINGR_color_clamp" ); + } + if( extensions.Contains( "gl_INGR_interlace_read" ) ) { + INGR_interlace_read = true; + extensions.Remove( "glINGR_interlace_read" ); + } + if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) { + INTEL_blackhole_render = true; + extensions.Remove( "glINTEL_blackhole_render" ); + } + if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) { + INTEL_conservative_rasterization = true; + extensions.Remove( "glINTEL_conservative_rasterization" ); + } + if( extensions.Contains( "gl_INTEL_fragment_shader_ordering" ) ) { + INTEL_fragment_shader_ordering = true; + extensions.Remove( "glINTEL_fragment_shader_ordering" ); + } + if( extensions.Contains( "gl_INTEL_framebuffer_CMAA" ) ) { + INTEL_framebuffer_CMAA = true; + extensions.Remove( "glINTEL_framebuffer_CMAA" ); + } + if( extensions.Contains( "gl_INTEL_map_texture" ) ) { + INTEL_map_texture = true; + extensions.Remove( "glINTEL_map_texture" ); + } + if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) { + INTEL_parallel_arrays = true; + extensions.Remove( "glINTEL_parallel_arrays" ); + } + if( extensions.Contains( "gl_INTEL_performance_query" ) ) { + INTEL_performance_query = true; + extensions.Remove( "glINTEL_performance_query" ); + } + if( extensions.Contains( "gl_KHR_blend_equation_advanced" ) ) { + KHR_blend_equation_advanced = true; + extensions.Remove( "glKHR_blend_equation_advanced" ); + } + if( extensions.Contains( "gl_KHR_blend_equation_advanced_coherent" ) ) { + KHR_blend_equation_advanced_coherent = true; + extensions.Remove( "glKHR_blend_equation_advanced_coherent" ); + } + if( extensions.Contains( "gl_KHR_context_flush_control" ) ) { + KHR_context_flush_control = true; + extensions.Remove( "glKHR_context_flush_control" ); + } + if( extensions.Contains( "gl_KHR_debug" ) ) { + KHR_debug = true; + extensions.Remove( "glKHR_debug" ); + } + if( extensions.Contains( "gl_KHR_no_error" ) ) { + KHR_no_error = true; + extensions.Remove( "glKHR_no_error" ); + } + if( extensions.Contains( "gl_KHR_parallel_shader_compile" ) ) { + KHR_parallel_shader_compile = true; + extensions.Remove( "glKHR_parallel_shader_compile" ); + } + if( extensions.Contains( "gl_KHR_robust_buffer_access_behavior" ) ) { + KHR_robust_buffer_access_behavior = true; + extensions.Remove( "glKHR_robust_buffer_access_behavior" ); + } + if( extensions.Contains( "gl_KHR_robustness" ) ) { + KHR_robustness = true; + extensions.Remove( "glKHR_robustness" ); + } + if( extensions.Contains( "gl_KHR_shader_subgroup" ) ) { + KHR_shader_subgroup = true; + extensions.Remove( "glKHR_shader_subgroup" ); + } + if( extensions.Contains( "gl_KHR_texture_compression_astc_hdr" ) ) { + KHR_texture_compression_astc_hdr = true; + extensions.Remove( "glKHR_texture_compression_astc_hdr" ); + } + if( extensions.Contains( "gl_KHR_texture_compression_astc_ldr" ) ) { + KHR_texture_compression_astc_ldr = true; + extensions.Remove( "glKHR_texture_compression_astc_ldr" ); + } + if( extensions.Contains( + "gl_KHR_texture_compression_astc_sliced_3d" ) ) { + KHR_texture_compression_astc_sliced_3d = true; + extensions.Remove( "glKHR_texture_compression_astc_sliced_3d" ); + } + if( extensions.Contains( "gl_MESAX_texture_stack" ) ) { + MESAX_texture_stack = true; + extensions.Remove( "glMESAX_texture_stack" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_flip_x" ) ) { + MESA_framebuffer_flip_x = true; + extensions.Remove( "glMESA_framebuffer_flip_x" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_flip_y" ) ) { + MESA_framebuffer_flip_y = true; + extensions.Remove( "glMESA_framebuffer_flip_y" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_swap_xy" ) ) { + MESA_framebuffer_swap_xy = true; + extensions.Remove( "glMESA_framebuffer_swap_xy" ); + } + if( extensions.Contains( "gl_MESA_pack_invert" ) ) { + MESA_pack_invert = true; + extensions.Remove( "glMESA_pack_invert" ); + } + if( extensions.Contains( "gl_MESA_program_binary_formats" ) ) { + MESA_program_binary_formats = true; + extensions.Remove( "glMESA_program_binary_formats" ); + } + if( extensions.Contains( "gl_MESA_resize_buffers" ) ) { + MESA_resize_buffers = true; + extensions.Remove( "glMESA_resize_buffers" ); + } + if( extensions.Contains( "gl_MESA_shader_integer_functions" ) ) { + MESA_shader_integer_functions = true; + extensions.Remove( "glMESA_shader_integer_functions" ); + } + if( extensions.Contains( "gl_MESA_tile_raster_order" ) ) { + MESA_tile_raster_order = true; + extensions.Remove( "glMESA_tile_raster_order" ); + } + if( extensions.Contains( "gl_MESA_window_pos" ) ) { + MESA_window_pos = true; + extensions.Remove( "glMESA_window_pos" ); + } + if( extensions.Contains( "gl_MESA_ycbcr_texture" ) ) { + MESA_ycbcr_texture = true; + extensions.Remove( "glMESA_ycbcr_texture" ); + } + if( extensions.Contains( + "gl_NVX_blend_equation_advanced_multi_draw_buffers" ) ) { + NVX_blend_equation_advanced_multi_draw_buffers = true; + extensions.Remove( + "glNVX_blend_equation_advanced_multi_draw_buffers" ); + } + if( extensions.Contains( "gl_NVX_conditional_render" ) ) { + NVX_conditional_render = true; + extensions.Remove( "glNVX_conditional_render" ); + } + if( extensions.Contains( "gl_NVX_gpu_memory_info" ) ) { + NVX_gpu_memory_info = true; + extensions.Remove( "glNVX_gpu_memory_info" ); + } + if( extensions.Contains( "gl_NVX_gpu_multicast2" ) ) { + NVX_gpu_multicast2 = true; + extensions.Remove( "glNVX_gpu_multicast2" ); + } + if( extensions.Contains( "gl_NVX_linked_gpu_multicast" ) ) { + NVX_linked_gpu_multicast = true; + extensions.Remove( "glNVX_linked_gpu_multicast" ); + } + if( extensions.Contains( "gl_NVX_progress_fence" ) ) { + NVX_progress_fence = true; + extensions.Remove( "glNVX_progress_fence" ); + } + if( extensions.Contains( "gl_NV_alpha_to_coverage_dither_control" ) ) { + NV_alpha_to_coverage_dither_control = true; + extensions.Remove( "glNV_alpha_to_coverage_dither_control" ); + } + if( extensions.Contains( "gl_NV_bindless_multi_draw_indirect" ) ) { + NV_bindless_multi_draw_indirect = true; + extensions.Remove( "glNV_bindless_multi_draw_indirect" ); + } + if( extensions.Contains( + "gl_NV_bindless_multi_draw_indirect_count" ) ) { + NV_bindless_multi_draw_indirect_count = true; + extensions.Remove( "glNV_bindless_multi_draw_indirect_count" ); + } + if( extensions.Contains( "gl_NV_bindless_texture" ) ) { + NV_bindless_texture = true; + extensions.Remove( "glNV_bindless_texture" ); + } + if( extensions.Contains( "gl_NV_blend_equation_advanced" ) ) { + NV_blend_equation_advanced = true; + extensions.Remove( "glNV_blend_equation_advanced" ); + } + if( extensions.Contains( "gl_NV_blend_equation_advanced_coherent" ) ) { + NV_blend_equation_advanced_coherent = true; + extensions.Remove( "glNV_blend_equation_advanced_coherent" ); + } + if( extensions.Contains( "gl_NV_blend_minmax_factor" ) ) { + NV_blend_minmax_factor = true; + extensions.Remove( "glNV_blend_minmax_factor" ); + } + if( extensions.Contains( "gl_NV_blend_square" ) ) { + NV_blend_square = true; + extensions.Remove( "glNV_blend_square" ); + } + if( extensions.Contains( "gl_NV_clip_space_w_scaling" ) ) { + NV_clip_space_w_scaling = true; + extensions.Remove( "glNV_clip_space_w_scaling" ); + } + if( extensions.Contains( "gl_NV_command_list" ) ) { + NV_command_list = true; + extensions.Remove( "glNV_command_list" ); + } + if( extensions.Contains( "gl_NV_compute_program5" ) ) { + NV_compute_program5 = true; + extensions.Remove( "glNV_compute_program5" ); + } + if( extensions.Contains( "gl_NV_compute_shader_derivatives" ) ) { + NV_compute_shader_derivatives = true; + extensions.Remove( "glNV_compute_shader_derivatives" ); + } + if( extensions.Contains( "gl_NV_conditional_render" ) ) { + NV_conditional_render = true; + extensions.Remove( "glNV_conditional_render" ); + } + if( extensions.Contains( "gl_NV_conservative_raster" ) ) { + NV_conservative_raster = true; + extensions.Remove( "glNV_conservative_raster" ); + } + if( extensions.Contains( "gl_NV_conservative_raster_dilate" ) ) { + NV_conservative_raster_dilate = true; + extensions.Remove( "glNV_conservative_raster_dilate" ); + } + if( extensions.Contains( "gl_NV_conservative_raster_pre_snap" ) ) { + NV_conservative_raster_pre_snap = true; + extensions.Remove( "glNV_conservative_raster_pre_snap" ); + } + if( extensions.Contains( + "gl_NV_conservative_raster_pre_snap_triangles" ) ) { + NV_conservative_raster_pre_snap_triangles = true; + extensions.Remove( + "glNV_conservative_raster_pre_snap_triangles" ); + } + if( extensions.Contains( + "gl_NV_conservative_raster_underestimation" ) ) { + NV_conservative_raster_underestimation = true; + extensions.Remove( "glNV_conservative_raster_underestimation" ); + } + if( extensions.Contains( "gl_NV_copy_depth_to_color" ) ) { + NV_copy_depth_to_color = true; + extensions.Remove( "glNV_copy_depth_to_color" ); + } + if( extensions.Contains( "gl_NV_copy_image" ) ) { + NV_copy_image = true; + extensions.Remove( "glNV_copy_image" ); + } + if( extensions.Contains( "gl_NV_deep_texture3D" ) ) { + NV_deep_texture3D = true; + extensions.Remove( "glNV_deep_texture3D" ); + } + if( extensions.Contains( "gl_NV_depth_buffer_float" ) ) { + NV_depth_buffer_float = true; + extensions.Remove( "glNV_depth_buffer_float" ); + } + if( extensions.Contains( "gl_NV_depth_clamp" ) ) { + NV_depth_clamp = true; + extensions.Remove( "glNV_depth_clamp" ); + } + if( extensions.Contains( "gl_NV_draw_texture" ) ) { + NV_draw_texture = true; + extensions.Remove( "glNV_draw_texture" ); + } + if( extensions.Contains( "gl_NV_draw_vulkan_image" ) ) { + NV_draw_vulkan_image = true; + extensions.Remove( "glNV_draw_vulkan_image" ); + } + if( extensions.Contains( "gl_NV_evaluators" ) ) { + NV_evaluators = true; + extensions.Remove( "glNV_evaluators" ); + } + if( extensions.Contains( "gl_NV_explicit_multisample" ) ) { + NV_explicit_multisample = true; + extensions.Remove( "glNV_explicit_multisample" ); + } + if( extensions.Contains( "gl_NV_fence" ) ) { + NV_fence = true; + extensions.Remove( "glNV_fence" ); + } + if( extensions.Contains( "gl_NV_fill_rectangle" ) ) { + NV_fill_rectangle = true; + extensions.Remove( "glNV_fill_rectangle" ); + } + if( extensions.Contains( "gl_NV_float_buffer" ) ) { + NV_float_buffer = true; + extensions.Remove( "glNV_float_buffer" ); + } + if( extensions.Contains( "gl_NV_fog_distance" ) ) { + NV_fog_distance = true; + extensions.Remove( "glNV_fog_distance" ); + } + if( extensions.Contains( "gl_NV_fragment_coverage_to_color" ) ) { + NV_fragment_coverage_to_color = true; + extensions.Remove( "glNV_fragment_coverage_to_color" ); + } + if( extensions.Contains( "gl_NV_fragment_program" ) ) { + NV_fragment_program = true; + extensions.Remove( "glNV_fragment_program" ); + } + if( extensions.Contains( "gl_NV_fragment_program2" ) ) { + NV_fragment_program2 = true; + extensions.Remove( "glNV_fragment_program2" ); + } + if( extensions.Contains( "gl_NV_fragment_program4" ) ) { + NV_fragment_program4 = true; + extensions.Remove( "glNV_fragment_program4" ); + } + if( extensions.Contains( "gl_NV_fragment_program_option" ) ) { + NV_fragment_program_option = true; + extensions.Remove( "glNV_fragment_program_option" ); + } + if( extensions.Contains( "gl_NV_fragment_shader_barycentric" ) ) { + NV_fragment_shader_barycentric = true; + extensions.Remove( "glNV_fragment_shader_barycentric" ); + } + if( extensions.Contains( "gl_NV_fragment_shader_interlock" ) ) { + NV_fragment_shader_interlock = true; + extensions.Remove( "glNV_fragment_shader_interlock" ); + } + if( extensions.Contains( "gl_NV_framebuffer_mixed_samples" ) ) { + NV_framebuffer_mixed_samples = true; + extensions.Remove( "glNV_framebuffer_mixed_samples" ); + } + if( extensions.Contains( "gl_NV_framebuffer_multisample_coverage" ) ) { + NV_framebuffer_multisample_coverage = true; + extensions.Remove( "glNV_framebuffer_multisample_coverage" ); + } + if( extensions.Contains( "gl_NV_geometry_program4" ) ) { + NV_geometry_program4 = true; + extensions.Remove( "glNV_geometry_program4" ); + } + if( extensions.Contains( "gl_NV_geometry_shader4" ) ) { + NV_geometry_shader4 = true; + extensions.Remove( "glNV_geometry_shader4" ); + } + if( extensions.Contains( "gl_NV_geometry_shader_passthrough" ) ) { + NV_geometry_shader_passthrough = true; + extensions.Remove( "glNV_geometry_shader_passthrough" ); + } + if( extensions.Contains( "gl_NV_gpu_multicast" ) ) { + NV_gpu_multicast = true; + extensions.Remove( "glNV_gpu_multicast" ); + } + if( extensions.Contains( "gl_NV_gpu_program4" ) ) { + NV_gpu_program4 = true; + extensions.Remove( "glNV_gpu_program4" ); + } + if( extensions.Contains( "gl_NV_gpu_program5" ) ) { + NV_gpu_program5 = true; + extensions.Remove( "glNV_gpu_program5" ); + } + if( extensions.Contains( "gl_NV_gpu_program5_mem_extended" ) ) { + NV_gpu_program5_mem_extended = true; + extensions.Remove( "glNV_gpu_program5_mem_extended" ); + } + if( extensions.Contains( "gl_NV_gpu_shader5" ) ) { + NV_gpu_shader5 = true; + extensions.Remove( "glNV_gpu_shader5" ); + } + if( extensions.Contains( "gl_NV_half_float" ) ) { + NV_half_float = true; + extensions.Remove( "glNV_half_float" ); + } + if( extensions.Contains( "gl_NV_internalformat_sample_query" ) ) { + NV_internalformat_sample_query = true; + extensions.Remove( "glNV_internalformat_sample_query" ); + } + if( extensions.Contains( "gl_NV_light_max_exponent" ) ) { + NV_light_max_exponent = true; + extensions.Remove( "glNV_light_max_exponent" ); + } + if( extensions.Contains( "gl_NV_memory_attachment" ) ) { + NV_memory_attachment = true; + extensions.Remove( "glNV_memory_attachment" ); + } + if( extensions.Contains( "gl_NV_memory_object_sparse" ) ) { + NV_memory_object_sparse = true; + extensions.Remove( "glNV_memory_object_sparse" ); + } + if( extensions.Contains( "gl_NV_mesh_shader" ) ) { + NV_mesh_shader = true; + extensions.Remove( "glNV_mesh_shader" ); + } + if( extensions.Contains( "gl_NV_multisample_coverage" ) ) { + NV_multisample_coverage = true; + extensions.Remove( "glNV_multisample_coverage" ); + } + if( extensions.Contains( "gl_NV_multisample_filter_hint" ) ) { + NV_multisample_filter_hint = true; + extensions.Remove( "glNV_multisample_filter_hint" ); + } + if( extensions.Contains( "gl_NV_occlusion_query" ) ) { + NV_occlusion_query = true; + extensions.Remove( "glNV_occlusion_query" ); + } + if( extensions.Contains( "gl_NV_packed_depth_stencil" ) ) { + NV_packed_depth_stencil = true; + extensions.Remove( "glNV_packed_depth_stencil" ); + } + if( extensions.Contains( "gl_NV_parameter_buffer_object" ) ) { + NV_parameter_buffer_object = true; + extensions.Remove( "glNV_parameter_buffer_object" ); + } + if( extensions.Contains( "gl_NV_parameter_buffer_object2" ) ) { + NV_parameter_buffer_object2 = true; + extensions.Remove( "glNV_parameter_buffer_object2" ); + } + if( extensions.Contains( "gl_NV_path_rendering" ) ) { + NV_path_rendering = true; + extensions.Remove( "glNV_path_rendering" ); + } + if( extensions.Contains( "gl_NV_path_rendering_shared_edge" ) ) { + NV_path_rendering_shared_edge = true; + extensions.Remove( "glNV_path_rendering_shared_edge" ); + } + if( extensions.Contains( "gl_NV_pixel_data_range" ) ) { + NV_pixel_data_range = true; + extensions.Remove( "glNV_pixel_data_range" ); + } + if( extensions.Contains( "gl_NV_point_sprite" ) ) { + NV_point_sprite = true; + extensions.Remove( "glNV_point_sprite" ); + } + if( extensions.Contains( "gl_NV_present_video" ) ) { + NV_present_video = true; + extensions.Remove( "glNV_present_video" ); + } + if( extensions.Contains( "gl_NV_primitive_restart" ) ) { + NV_primitive_restart = true; + extensions.Remove( "glNV_primitive_restart" ); + } + if( extensions.Contains( "gl_NV_primitive_shading_rate" ) ) { + NV_primitive_shading_rate = true; + extensions.Remove( "glNV_primitive_shading_rate" ); + } + if( extensions.Contains( "gl_NV_query_resource" ) ) { + NV_query_resource = true; + extensions.Remove( "glNV_query_resource" ); + } + if( extensions.Contains( "gl_NV_query_resource_tag" ) ) { + NV_query_resource_tag = true; + extensions.Remove( "glNV_query_resource_tag" ); + } + if( extensions.Contains( "gl_NV_register_combiners" ) ) { + NV_register_combiners = true; + extensions.Remove( "glNV_register_combiners" ); + } + if( extensions.Contains( "gl_NV_register_combiners2" ) ) { + NV_register_combiners2 = true; + extensions.Remove( "glNV_register_combiners2" ); + } + if( extensions.Contains( "gl_NV_representative_fragment_test" ) ) { + NV_representative_fragment_test = true; + extensions.Remove( "glNV_representative_fragment_test" ); + } + if( extensions.Contains( "gl_NV_robustness_video_memory_purge" ) ) { + NV_robustness_video_memory_purge = true; + extensions.Remove( "glNV_robustness_video_memory_purge" ); + } + if( extensions.Contains( "gl_NV_sample_locations" ) ) { + NV_sample_locations = true; + extensions.Remove( "glNV_sample_locations" ); + } + if( extensions.Contains( "gl_NV_sample_mask_override_coverage" ) ) { + NV_sample_mask_override_coverage = true; + extensions.Remove( "glNV_sample_mask_override_coverage" ); + } + if( extensions.Contains( "gl_NV_scissor_exclusive" ) ) { + NV_scissor_exclusive = true; + extensions.Remove( "glNV_scissor_exclusive" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_counters" ) ) { + NV_shader_atomic_counters = true; + extensions.Remove( "glNV_shader_atomic_counters" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_float" ) ) { + NV_shader_atomic_float = true; + extensions.Remove( "glNV_shader_atomic_float" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_float64" ) ) { + NV_shader_atomic_float64 = true; + extensions.Remove( "glNV_shader_atomic_float64" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_fp16_vector" ) ) { + NV_shader_atomic_fp16_vector = true; + extensions.Remove( "glNV_shader_atomic_fp16_vector" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_int64" ) ) { + NV_shader_atomic_int64 = true; + extensions.Remove( "glNV_shader_atomic_int64" ); + } + if( extensions.Contains( "gl_NV_shader_buffer_load" ) ) { + NV_shader_buffer_load = true; + extensions.Remove( "glNV_shader_buffer_load" ); + } + if( extensions.Contains( "gl_NV_shader_buffer_store" ) ) { + NV_shader_buffer_store = true; + extensions.Remove( "glNV_shader_buffer_store" ); + } + if( extensions.Contains( "gl_NV_shader_storage_buffer_object" ) ) { + NV_shader_storage_buffer_object = true; + extensions.Remove( "glNV_shader_storage_buffer_object" ); + } + if( extensions.Contains( "gl_NV_shader_subgroup_partitioned" ) ) { + NV_shader_subgroup_partitioned = true; + extensions.Remove( "glNV_shader_subgroup_partitioned" ); + } + if( extensions.Contains( "gl_NV_shader_texture_footprint" ) ) { + NV_shader_texture_footprint = true; + extensions.Remove( "glNV_shader_texture_footprint" ); + } + if( extensions.Contains( "gl_NV_shader_thread_group" ) ) { + NV_shader_thread_group = true; + extensions.Remove( "glNV_shader_thread_group" ); + } + if( extensions.Contains( "gl_NV_shader_thread_shuffle" ) ) { + NV_shader_thread_shuffle = true; + extensions.Remove( "glNV_shader_thread_shuffle" ); + } + if( extensions.Contains( "gl_NV_shading_rate_image" ) ) { + NV_shading_rate_image = true; + extensions.Remove( "glNV_shading_rate_image" ); + } + if( extensions.Contains( "gl_NV_stereo_view_rendering" ) ) { + NV_stereo_view_rendering = true; + extensions.Remove( "glNV_stereo_view_rendering" ); + } + if( extensions.Contains( "gl_NV_tessellation_program5" ) ) { + NV_tessellation_program5 = true; + extensions.Remove( "glNV_tessellation_program5" ); + } + if( extensions.Contains( "gl_NV_texgen_emboss" ) ) { + NV_texgen_emboss = true; + extensions.Remove( "glNV_texgen_emboss" ); + } + if( extensions.Contains( "gl_NV_texgen_reflection" ) ) { + NV_texgen_reflection = true; + extensions.Remove( "glNV_texgen_reflection" ); + } + if( extensions.Contains( "gl_NV_texture_barrier" ) ) { + NV_texture_barrier = true; + extensions.Remove( "glNV_texture_barrier" ); + } + if( extensions.Contains( "gl_NV_texture_compression_vtc" ) ) { + NV_texture_compression_vtc = true; + extensions.Remove( "glNV_texture_compression_vtc" ); + } + if( extensions.Contains( "gl_NV_texture_env_combine4" ) ) { + NV_texture_env_combine4 = true; + extensions.Remove( "glNV_texture_env_combine4" ); + } + if( extensions.Contains( "gl_NV_texture_expand_normal" ) ) { + NV_texture_expand_normal = true; + extensions.Remove( "glNV_texture_expand_normal" ); + } + if( extensions.Contains( "gl_NV_texture_multisample" ) ) { + NV_texture_multisample = true; + extensions.Remove( "glNV_texture_multisample" ); + } + if( extensions.Contains( "gl_NV_texture_rectangle" ) ) { + NV_texture_rectangle = true; + extensions.Remove( "glNV_texture_rectangle" ); + } + if( extensions.Contains( "gl_NV_texture_rectangle_compressed" ) ) { + NV_texture_rectangle_compressed = true; + extensions.Remove( "glNV_texture_rectangle_compressed" ); + } + if( extensions.Contains( "gl_NV_texture_shader" ) ) { + NV_texture_shader = true; + extensions.Remove( "glNV_texture_shader" ); + } + if( extensions.Contains( "gl_NV_texture_shader2" ) ) { + NV_texture_shader2 = true; + extensions.Remove( "glNV_texture_shader2" ); + } + if( extensions.Contains( "gl_NV_texture_shader3" ) ) { + NV_texture_shader3 = true; + extensions.Remove( "glNV_texture_shader3" ); + } + if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) { + NV_timeline_semaphore = true; + extensions.Remove( "glNV_timeline_semaphore" ); + } + if( extensions.Contains( "gl_NV_transform_feedback" ) ) { + NV_transform_feedback = true; + extensions.Remove( "glNV_transform_feedback" ); + } + if( extensions.Contains( "gl_NV_transform_feedback2" ) ) { + NV_transform_feedback2 = true; + extensions.Remove( "glNV_transform_feedback2" ); + } + if( extensions.Contains( "gl_NV_uniform_buffer_std430_layout" ) ) { + NV_uniform_buffer_std430_layout = true; + extensions.Remove( "glNV_uniform_buffer_std430_layout" ); + } + if( extensions.Contains( "gl_NV_uniform_buffer_unified_memory" ) ) { + NV_uniform_buffer_unified_memory = true; + extensions.Remove( "glNV_uniform_buffer_unified_memory" ); + } + if( extensions.Contains( "gl_NV_vdpau_interop" ) ) { + NV_vdpau_interop = true; + extensions.Remove( "glNV_vdpau_interop" ); + } + if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) { + NV_vdpau_interop2 = true; + extensions.Remove( "glNV_vdpau_interop2" ); + } + if( extensions.Contains( "gl_NV_vertex_array_range" ) ) { + NV_vertex_array_range = true; + extensions.Remove( "glNV_vertex_array_range" ); + } + if( extensions.Contains( "gl_NV_vertex_array_range2" ) ) { + NV_vertex_array_range2 = true; + extensions.Remove( "glNV_vertex_array_range2" ); + } + if( extensions.Contains( "gl_NV_vertex_attrib_integer_64bit" ) ) { + NV_vertex_attrib_integer_64bit = true; + extensions.Remove( "glNV_vertex_attrib_integer_64bit" ); + } + if( extensions.Contains( "gl_NV_vertex_buffer_unified_memory" ) ) { + NV_vertex_buffer_unified_memory = true; + extensions.Remove( "glNV_vertex_buffer_unified_memory" ); + } + if( extensions.Contains( "gl_NV_vertex_program" ) ) { + NV_vertex_program = true; + extensions.Remove( "glNV_vertex_program" ); + } + if( extensions.Contains( "gl_NV_vertex_program1_1" ) ) { + NV_vertex_program1_1 = true; + extensions.Remove( "glNV_vertex_program1_1" ); + } + if( extensions.Contains( "gl_NV_vertex_program2" ) ) { + NV_vertex_program2 = true; + extensions.Remove( "glNV_vertex_program2" ); + } + if( extensions.Contains( "gl_NV_vertex_program2_option" ) ) { + NV_vertex_program2_option = true; + extensions.Remove( "glNV_vertex_program2_option" ); + } + if( extensions.Contains( "gl_NV_vertex_program3" ) ) { + NV_vertex_program3 = true; + extensions.Remove( "glNV_vertex_program3" ); + } + if( extensions.Contains( "gl_NV_vertex_program4" ) ) { + NV_vertex_program4 = true; + extensions.Remove( "glNV_vertex_program4" ); + } + if( extensions.Contains( "gl_NV_video_capture" ) ) { + NV_video_capture = true; + extensions.Remove( "glNV_video_capture" ); + } + if( extensions.Contains( "gl_NV_viewport_array2" ) ) { + NV_viewport_array2 = true; + extensions.Remove( "glNV_viewport_array2" ); + } + if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) { + NV_viewport_swizzle = true; + extensions.Remove( "glNV_viewport_swizzle" ); + } + if( extensions.Contains( "gl_OES_byte_coordinates" ) ) { + OES_byte_coordinates = true; + extensions.Remove( "glOES_byte_coordinates" ); + } + if( extensions.Contains( "gl_OES_compressed_paletted_texture" ) ) { + OES_compressed_paletted_texture = true; + extensions.Remove( "glOES_compressed_paletted_texture" ); + } + if( extensions.Contains( "gl_OES_fixed_point" ) ) { + OES_fixed_point = true; + extensions.Remove( "glOES_fixed_point" ); + } + if( extensions.Contains( "gl_OES_query_matrix" ) ) { + OES_query_matrix = true; + extensions.Remove( "glOES_query_matrix" ); + } + if( extensions.Contains( "gl_OES_read_format" ) ) { + OES_read_format = true; + extensions.Remove( "glOES_read_format" ); + } + if( extensions.Contains( "gl_OES_single_precision" ) ) { + OES_single_precision = true; + extensions.Remove( "glOES_single_precision" ); + } + if( extensions.Contains( "gl_OML_interlace" ) ) { + OML_interlace = true; + extensions.Remove( "glOML_interlace" ); + } + if( extensions.Contains( "gl_OML_resample" ) ) { + OML_resample = true; + extensions.Remove( "glOML_resample" ); + } + if( extensions.Contains( "gl_OML_subsample" ) ) { + OML_subsample = true; + extensions.Remove( "glOML_subsample" ); + } + if( extensions.Contains( "gl_OVR_multiview" ) ) { + OVR_multiview = true; + extensions.Remove( "glOVR_multiview" ); + } + if( extensions.Contains( "gl_OVR_multiview2" ) ) { + OVR_multiview2 = true; + extensions.Remove( "glOVR_multiview2" ); + } + if( extensions.Contains( "gl_PGI_misc_hints" ) ) { + PGI_misc_hints = true; + extensions.Remove( "glPGI_misc_hints" ); + } + if( extensions.Contains( "gl_PGI_vertex_hints" ) ) { + PGI_vertex_hints = true; + extensions.Remove( "glPGI_vertex_hints" ); + } + if( extensions.Contains( "gl_REND_screen_coordinates" ) ) { + REND_screen_coordinates = true; + extensions.Remove( "glREND_screen_coordinates" ); + } + if( extensions.Contains( "gl_S3_s3tc" ) ) { + S3_s3tc = true; + extensions.Remove( "glS3_s3tc" ); + } + if( extensions.Contains( "gl_SGIS_detail_texture" ) ) { + SGIS_detail_texture = true; + extensions.Remove( "glSGIS_detail_texture" ); + } + if( extensions.Contains( "gl_SGIS_fog_function" ) ) { + SGIS_fog_function = true; + extensions.Remove( "glSGIS_fog_function" ); + } + if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) { + SGIS_generate_mipmap = true; + extensions.Remove( "glSGIS_generate_mipmap" ); + } + if( extensions.Contains( "gl_SGIS_multisample" ) ) { + SGIS_multisample = true; + extensions.Remove( "glSGIS_multisample" ); + } + if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) { + SGIS_pixel_texture = true; + extensions.Remove( "glSGIS_pixel_texture" ); + } + if( extensions.Contains( "gl_SGIS_point_line_texgen" ) ) { + SGIS_point_line_texgen = true; + extensions.Remove( "glSGIS_point_line_texgen" ); + } + if( extensions.Contains( "gl_SGIS_point_parameters" ) ) { + SGIS_point_parameters = true; + extensions.Remove( "glSGIS_point_parameters" ); + } + if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) { + SGIS_sharpen_texture = true; + extensions.Remove( "glSGIS_sharpen_texture" ); + } + if( extensions.Contains( "gl_SGIS_texture4D" ) ) { + SGIS_texture4D = true; + extensions.Remove( "glSGIS_texture4D" ); + } + if( extensions.Contains( "gl_SGIS_texture_border_clamp" ) ) { + SGIS_texture_border_clamp = true; + extensions.Remove( "glSGIS_texture_border_clamp" ); + } + if( extensions.Contains( "gl_SGIS_texture_color_mask" ) ) { + SGIS_texture_color_mask = true; + extensions.Remove( "glSGIS_texture_color_mask" ); + } + if( extensions.Contains( "gl_SGIS_texture_edge_clamp" ) ) { + SGIS_texture_edge_clamp = true; + extensions.Remove( "glSGIS_texture_edge_clamp" ); + } + if( extensions.Contains( "gl_SGIS_texture_filter4" ) ) { + SGIS_texture_filter4 = true; + extensions.Remove( "glSGIS_texture_filter4" ); + } + if( extensions.Contains( "gl_SGIS_texture_lod" ) ) { + SGIS_texture_lod = true; + extensions.Remove( "glSGIS_texture_lod" ); + } + if( extensions.Contains( "gl_SGIS_texture_select" ) ) { + SGIS_texture_select = true; + extensions.Remove( "glSGIS_texture_select" ); + } + if( extensions.Contains( "gl_SGIX_async" ) ) { + SGIX_async = true; + extensions.Remove( "glSGIX_async" ); + } + if( extensions.Contains( "gl_SGIX_async_histogram" ) ) { + SGIX_async_histogram = true; + extensions.Remove( "glSGIX_async_histogram" ); + } + if( extensions.Contains( "gl_SGIX_async_pixel" ) ) { + SGIX_async_pixel = true; + extensions.Remove( "glSGIX_async_pixel" ); + } + if( extensions.Contains( "gl_SGIX_blend_alpha_minmax" ) ) { + SGIX_blend_alpha_minmax = true; + extensions.Remove( "glSGIX_blend_alpha_minmax" ); + } + if( extensions.Contains( "gl_SGIX_calligraphic_fragment" ) ) { + SGIX_calligraphic_fragment = true; + extensions.Remove( "glSGIX_calligraphic_fragment" ); + } + if( extensions.Contains( "gl_SGIX_clipmap" ) ) { + SGIX_clipmap = true; + extensions.Remove( "glSGIX_clipmap" ); + } + if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) { + SGIX_convolution_accuracy = true; + extensions.Remove( "glSGIX_convolution_accuracy" ); + } + if( extensions.Contains( "gl_SGIX_depth_pass_instrument" ) ) { + SGIX_depth_pass_instrument = true; + extensions.Remove( "glSGIX_depth_pass_instrument" ); + } + if( extensions.Contains( "gl_SGIX_depth_texture" ) ) { + SGIX_depth_texture = true; + extensions.Remove( "glSGIX_depth_texture" ); + } + if( extensions.Contains( "gl_SGIX_flush_raster" ) ) { + SGIX_flush_raster = true; + extensions.Remove( "glSGIX_flush_raster" ); + } + if( extensions.Contains( "gl_SGIX_fog_offset" ) ) { + SGIX_fog_offset = true; + extensions.Remove( "glSGIX_fog_offset" ); + } + if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) { + SGIX_fragment_lighting = true; + extensions.Remove( "glSGIX_fragment_lighting" ); + } + if( extensions.Contains( "gl_SGIX_framezoom" ) ) { + SGIX_framezoom = true; + extensions.Remove( "glSGIX_framezoom" ); + } + if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) { + SGIX_igloo_interface = true; + extensions.Remove( "glSGIX_igloo_interface" ); + } + if( extensions.Contains( "gl_SGIX_instruments" ) ) { + SGIX_instruments = true; + extensions.Remove( "glSGIX_instruments" ); + } + if( extensions.Contains( "gl_SGIX_interlace" ) ) { + SGIX_interlace = true; + extensions.Remove( "glSGIX_interlace" ); + } + if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) { + SGIX_ir_instrument1 = true; + extensions.Remove( "glSGIX_ir_instrument1" ); + } + if( extensions.Contains( "gl_SGIX_list_priority" ) ) { + SGIX_list_priority = true; + extensions.Remove( "glSGIX_list_priority" ); + } + if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) { + SGIX_pixel_texture = true; + extensions.Remove( "glSGIX_pixel_texture" ); + } + if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) { + SGIX_pixel_tiles = true; + extensions.Remove( "glSGIX_pixel_tiles" ); + } + if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) { + SGIX_polynomial_ffd = true; + extensions.Remove( "glSGIX_polynomial_ffd" ); + } + if( extensions.Contains( "gl_SGIX_reference_plane" ) ) { + SGIX_reference_plane = true; + extensions.Remove( "glSGIX_reference_plane" ); + } + if( extensions.Contains( "gl_SGIX_resample" ) ) { + SGIX_resample = true; + extensions.Remove( "glSGIX_resample" ); + } + if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) { + SGIX_scalebias_hint = true; + extensions.Remove( "glSGIX_scalebias_hint" ); + } + if( extensions.Contains( "gl_SGIX_shadow" ) ) { + SGIX_shadow = true; + extensions.Remove( "glSGIX_shadow" ); + } + if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) { + SGIX_shadow_ambient = true; + extensions.Remove( "glSGIX_shadow_ambient" ); + } + if( extensions.Contains( "gl_SGIX_sprite" ) ) { + SGIX_sprite = true; + extensions.Remove( "glSGIX_sprite" ); + } + if( extensions.Contains( "gl_SGIX_subsample" ) ) { + SGIX_subsample = true; + extensions.Remove( "glSGIX_subsample" ); + } + if( extensions.Contains( "gl_SGIX_tag_sample_buffer" ) ) { + SGIX_tag_sample_buffer = true; + extensions.Remove( "glSGIX_tag_sample_buffer" ); + } + if( extensions.Contains( "gl_SGIX_texture_add_env" ) ) { + SGIX_texture_add_env = true; + extensions.Remove( "glSGIX_texture_add_env" ); + } + if( extensions.Contains( "gl_SGIX_texture_coordinate_clamp" ) ) { + SGIX_texture_coordinate_clamp = true; + extensions.Remove( "glSGIX_texture_coordinate_clamp" ); + } + if( extensions.Contains( "gl_SGIX_texture_lod_bias" ) ) { + SGIX_texture_lod_bias = true; + extensions.Remove( "glSGIX_texture_lod_bias" ); + } + if( extensions.Contains( "gl_SGIX_texture_multi_buffer" ) ) { + SGIX_texture_multi_buffer = true; + extensions.Remove( "glSGIX_texture_multi_buffer" ); + } + if( extensions.Contains( "gl_SGIX_texture_scale_bias" ) ) { + SGIX_texture_scale_bias = true; + extensions.Remove( "glSGIX_texture_scale_bias" ); + } + if( extensions.Contains( "gl_SGIX_vertex_preclip" ) ) { + SGIX_vertex_preclip = true; + extensions.Remove( "glSGIX_vertex_preclip" ); + } + if( extensions.Contains( "gl_SGIX_ycrcb" ) ) { + SGIX_ycrcb = true; + extensions.Remove( "glSGIX_ycrcb" ); + } + if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) { + SGIX_ycrcb_subsample = true; + extensions.Remove( "glSGIX_ycrcb_subsample" ); + } + if( extensions.Contains( "gl_SGIX_ycrcba" ) ) { + SGIX_ycrcba = true; + extensions.Remove( "glSGIX_ycrcba" ); + } + if( extensions.Contains( "gl_SGI_color_matrix" ) ) { + SGI_color_matrix = true; + extensions.Remove( "glSGI_color_matrix" ); + } + if( extensions.Contains( "gl_SGI_color_table" ) ) { + SGI_color_table = true; + extensions.Remove( "glSGI_color_table" ); + } + if( extensions.Contains( "gl_SGI_texture_color_table" ) ) { + SGI_texture_color_table = true; + extensions.Remove( "glSGI_texture_color_table" ); + } + if( extensions.Contains( "gl_SUNX_constant_data" ) ) { + SUNX_constant_data = true; + extensions.Remove( "glSUNX_constant_data" ); + } + if( extensions.Contains( "gl_SUN_convolution_border_modes" ) ) { + SUN_convolution_border_modes = true; + extensions.Remove( "glSUN_convolution_border_modes" ); + } + if( extensions.Contains( "gl_SUN_global_alpha" ) ) { + SUN_global_alpha = true; + extensions.Remove( "glSUN_global_alpha" ); + } + if( extensions.Contains( "gl_SUN_mesh_array" ) ) { + SUN_mesh_array = true; + extensions.Remove( "glSUN_mesh_array" ); + } + if( extensions.Contains( "gl_SUN_slice_accum" ) ) { + SUN_slice_accum = true; + extensions.Remove( "glSUN_slice_accum" ); + } + if( extensions.Contains( "gl_SUN_triangle_list" ) ) { + SUN_triangle_list = true; + extensions.Remove( "glSUN_triangle_list" ); + } + if( extensions.Contains( "gl_SUN_vertex" ) ) { + SUN_vertex = true; + extensions.Remove( "glSUN_vertex" ); + } + if( extensions.Contains( "gl_WIN_phong_shading" ) ) { + WIN_phong_shading = true; + extensions.Remove( "glWIN_phong_shading" ); + } + if( extensions.Contains( "gl_WIN_specular_fog" ) ) { + WIN_specular_fog = true; + extensions.Remove( "glWIN_specular_fog" ); + } + + #endregion checkGLextensions + } + + internal static void CheckCoreVersion( + int majorVersion, + int minorVersion ) + { + if( majorVersion < 3 ) { + throw new InvalidOperationException( + "StgSharp does not support OpenGL immediate mode." ); + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 0 ) ) ) { + core10 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 1 ) ) ) { + core11 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 2 ) ) ) { + core12 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 3 ) ) ) { + core13 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 4 ) ) ) { + core14 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 5 ) ) ) { + core15 = true; + } else { + goto log; + } + + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 0 ) ) ) { + core20 = true; + } else { + goto log; + } + + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 1 ) ) ) { + core21 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 0 ) ) ) { + core30 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 1 ) ) ) { + core31 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 2 ) ) ) { + core32 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 3 ) ) ) { + core33 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 0 ) ) ) { + core40 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 1 ) ) ) { + core41 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 2 ) ) ) { + core42 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 3 ) ) ) { + core43 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 4 ) ) ) { + core44 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 5 ) ) ) { + core45 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 6 ) ) ) { + core46 = true; + } else { + goto log; + } + + log: + { + InternalIO.InternalWriteLog( + "Find core OpenGL version.", LogType.Info ); + return; + } + } + + internal static unsafe string GetExtensions( + this OpenglContext context ) + { + if( context.glGetString == null ) { + return string.Empty; + } + return Marshal.PtrToStringAnsi( context.glGetString( glExtension ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal static T internalLoadAPI( IntPtr ptr ) where T: Delegate + { + try { + if( ptr == IntPtr.Zero ) { + return null; + } + T func = Marshal.GetDelegateForFunctionPointer( ptr ); + return func; + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( + $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", + LogType.Warning ); + return default; + } + } + + internal static unsafe void LoadGLcore10( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core10 ) { + InternalIO.InternalAppendLog( + "The core version 1.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBlendFunc = ( delegate* )load( + "glBlendFunc" ); + contextPtr->glClear = ( delegate* )load( "glClear" ); + contextPtr->glClearColor = ( delegate* )load( + "glClearColor" ); + contextPtr->glClearDepth = ( delegate* )load( + "glClearDepth" ); + contextPtr->glClearStencil = ( delegate* )load( + "glClearStencil" ); + contextPtr->glColorMask = ( delegate* )load( + "glColorMask" ); + contextPtr->glCullFace = ( delegate* )load( + "glCullFace" ); + contextPtr->glDepthFunc = ( delegate* )load( + "glDepthFunc" ); + contextPtr->glDepthMask = ( delegate* )load( + "glDepthMask" ); + contextPtr->glDepthRange = ( delegate* )load( + "glDepthRange" ); + contextPtr->glDisable = ( delegate* )load( "glDisable" ); + contextPtr->glDrawBuffer = ( delegate* )load( + "glDrawBuffer" ); + contextPtr->glEnable = ( delegate* )load( "glEnable" ); + contextPtr->glFinish = ( delegate* )load( "glFinish" ); + contextPtr->glFlush = ( delegate* )load( "glFlush" ); + contextPtr->glFrontFace = ( delegate* )load( + "glFrontFace" ); + contextPtr->glGetBooleanv = ( delegate* )load( + "glGetBooleanv" ); + contextPtr->glGetDoublev = ( delegate* )load( + "glGetDoublev" ); + contextPtr->glGetError = ( delegate* )load( "glGetError" ); + contextPtr->glGetFloatv = ( delegate* )load( + "glGetFloatv" ); + contextPtr->glGetIntegerv = ( delegate* )load( + "glGetIntegerv" ); + contextPtr->glGetString = ( delegate* )load( + "glGetString" ); + contextPtr->glGetTexImage = ( delegate* )load( + "glGetTexImage" ); + contextPtr->glGetTexLevelParameterfv = ( delegate* )load( + "glGetTexLevelParameterfv" ); + contextPtr->glGetTexLevelParameteriv = ( delegate* )load( + "glGetTexLevelParameteriv" ); + contextPtr->glGetTexParameterfv = ( delegate* )load( + "glGetTexParameterfv" ); + contextPtr->glGetTexParameteriv = ( delegate* )load( + "glGetTexParameteriv" ); + contextPtr->glHint = ( delegate* )load( "glHint" ); + contextPtr->glIsEnabled = ( delegate* )load( + "glIsEnabled" ); + contextPtr->glLineWidth = ( delegate* )load( + "glLineWidth" ); + contextPtr->glLogicOp = ( delegate* )load( "glLogicOp" ); + contextPtr->glPixelStoref = ( delegate* )load( + "glPixelStoref" ); + contextPtr->glPixelStorei = ( delegate* )load( + "glPixelStorei" ); + contextPtr->glPointSize = ( delegate* )load( + "glPointSize" ); + contextPtr->glPolygonMode = ( delegate* )load( + "glPolygonMode" ); + contextPtr->glReadBuffer = ( delegate* )load( + "glReadBuffer" ); + contextPtr->glReadPixels = ( delegate* )load( + "glReadPixels" ); + contextPtr->glScissor = ( delegate* )load( + "glScissor" ); + contextPtr->glStencilFunc = ( delegate* )load( + "glStencilFunc" ); + contextPtr->glStencilMask = ( delegate* )load( + "glStencilMask" ); + contextPtr->glStencilOp = ( delegate* )load( + "glStencilOp" ); + contextPtr->glTexImage1D = ( delegate* )load( + "glTexImage1D" ); + contextPtr->glTexImage2D = ( delegate* )load( + "glTexImage2D" ); + contextPtr->glTexParameterf = ( delegate* )load( + "glTexParameterf" ); + contextPtr->glTexParameterfv = ( delegate* )load( + "glTexParameterfv" ); + contextPtr->glTexParameteri = ( delegate* )load( + "glTexParameteri" ); + contextPtr->glTexParameteriv = ( delegate* )load( + "glTexParameteriv" ); + contextPtr->glViewport = ( delegate* )load( + "glViewport" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.0 APIs" ); + } + + internal static unsafe void LoadGLcore11( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core11 ) { + InternalIO.InternalAppendLog( + "The core version 1.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindTexture = ( delegate* )load( + "glBindTexture" ); + contextPtr->glCopyTexImage1D = ( delegate* )load( + "glCopyTexImage1D" ); + contextPtr->glCopyTexImage2D = ( delegate* )load( + "glCopyTexImage2D" ); + contextPtr->glCopyTexSubImage1D = ( delegate* )load( + "glCopyTexSubImage1D" ); + contextPtr->glCopyTexSubImage2D = ( delegate* )load( + "glCopyTexSubImage2D" ); + contextPtr->glDeleteTextures = ( delegate* )load( + "glDeleteTextures" ); + contextPtr->glDrawArrays = ( delegate* )load( + "glDrawArrays" ); + contextPtr->glDrawElements = ( delegate* )load( + "glDrawElements" ); + contextPtr->glGenTextures = ( delegate* )load( + "glGenTextures" ); + contextPtr->glGetPointerv = ( delegate* )load( + "glGetPointerv" ); + contextPtr->glIsTexture = ( delegate* )load( + "glIsTexture" ); + contextPtr->glPolygonOffset = ( delegate* )load( + "glPolygonOffset" ); + contextPtr->glTexSubImage1D = ( delegate* )load( + "glTexSubImage1D" ); + contextPtr->glTexSubImage2D = ( delegate* )load( + "glTexSubImage2D" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.1 APIs" ); + } + + internal static unsafe void LoadGLcore12( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core12 ) { + InternalIO.InternalAppendLog( + "The core version 1.2 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glCopyTexSubImage3D = ( delegate* )load( + "glCopyTexSubImage3D" ); + contextPtr->glDrawRangeElements = ( delegate* )load( + "glDrawRangeElements" ); + contextPtr->glTexImage3D = ( delegate* )load( + "glTexImage3D" ); + contextPtr->glTexSubImage3D = ( delegate* )load( + "glTexSubImage3D" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.2 APIs" ); + } + + internal static unsafe void LoadGLcore13( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core13 ) { + InternalIO.InternalAppendLog( + "The core version 1.3 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glActiveTexture = ( delegate* )load( + "glActiveTexture" ); + contextPtr->glCompressedTexImage1D = ( delegate* )load( + "glCompressedTexImage1D" ); + contextPtr->glCompressedTexImage2D = ( delegate* )load( + "glCompressedTexImage2D" ); + contextPtr->glCompressedTexImage3D = ( delegate* )load( + "glCompressedTexImage3D" ); + contextPtr->glCompressedTexSubImage1D = ( delegate* )load( + "glCompressedTexSubImage1D" ); + contextPtr->glCompressedTexSubImage2D = ( delegate* )load( + "glCompressedTexSubImage2D" ); + contextPtr->glCompressedTexSubImage3D = ( delegate* )load( + "glCompressedTexSubImage3D" ); + contextPtr->glGetCompressedTexImage = ( delegate* )load( + "glGetCompressedTexImage" ); + contextPtr->glSampleCoverage = ( delegate* )load( + "glSampleCoverage" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.3 APIs" ); + } + + internal static unsafe void LoadGLcore14( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core14 ) { + InternalIO.InternalAppendLog( + "The core version 1.4 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBlendColor = ( delegate* )load( + "glBlendColor" ); + contextPtr->glBlendEquation = ( delegate* )load( + "glBlendEquation" ); + contextPtr->glBlendFuncSeparate = ( delegate* )load( + "glBlendFuncSeparate" ); + contextPtr->glMultiDrawArrays = ( delegate* )load( + "glMultiDrawArrays" ); + contextPtr->glMultiDrawElements = ( delegate* )load( + "glMultiDrawElements" ); + contextPtr->glPointParameterf = ( delegate* )load( + "glPointParameterf" ); + contextPtr->glPointParameterfv = ( delegate* )load( + "glPointParameterfv" ); + contextPtr->glPointParameteri = ( delegate* )load( + "glPointParameteri" ); + contextPtr->glPointParameteriv = ( delegate* )load( + "glPointParameteriv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.4 APIs" ); + } + + internal static unsafe void LoadGLcore15( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core15 ) { + InternalIO.InternalAppendLog( + "The core version 1.5 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBeginQuery = ( delegate* )load( + "glBeginQuery" ); + contextPtr->glBindBuffer = ( delegate* )load( + "glBindBuffer" ); + contextPtr->glBufferData = ( delegate* )load( + "glBufferData" ); + contextPtr->glBufferSubData = ( delegate* )load( + "glBufferSubData" ); + contextPtr->glDeleteBuffers = ( delegate* )load( + "glDeleteBuffers" ); + contextPtr->glDeleteQueries = ( delegate* )load( + "glDeleteQueries" ); + contextPtr->glEndQuery = ( delegate* )load( + "glEndQuery" ); + contextPtr->glGenBuffers = ( delegate* )load( + "glGenBuffers" ); + contextPtr->glGenQueries = ( delegate* )load( + "glGenQueries" ); + contextPtr->glGetBufferParameteriv = ( delegate* )load( + "glGetBufferParameteriv" ); + contextPtr->glGetBufferPointerv = ( delegate* )load( + "glGetBufferPointerv" ); + contextPtr->glGetBufferSubData = ( delegate* )load( + "glGetBufferSubData" ); + contextPtr->glGetQueryObjectiv = ( delegate* )load( + "glGetQueryObjectiv" ); + contextPtr->glGetQueryObjectuiv = ( delegate* )load( + "glGetQueryObjectuiv" ); + contextPtr->glGetQueryiv = ( delegate* )load( + "glGetQueryiv" ); + contextPtr->glIsBuffer = ( delegate* )load( + "glIsBuffer" ); + contextPtr->glIsQuery = ( delegate* )load( "glIsQuery" ); + contextPtr->glMapBuffer = ( delegate* )load( + "glMapBuffer" ); + contextPtr->glUnmapBuffer = ( delegate* )load( + "glUnmapBuffer" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.5 APIs" ); + } + + internal static unsafe void LoadGLcore20( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core20 ) { + InternalIO.InternalAppendLog( + "The core version 2.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glAttachShader = ( delegate* )load( + "glAttachShader" ); + contextPtr->glBindAttribLocation = ( delegate* )load( + "glBindAttribLocation" ); + contextPtr->glBlendEquationSeparate = ( delegate* )load( + "glBlendEquationSeparate" ); + contextPtr->glCompileShader = ( delegate* )load( + "glCompileShader" ); + contextPtr->glCreateProgram = ( delegate* )load( + "glCreateProgram" ); + contextPtr->glCreateShader = ( delegate* )load( + "glCreateShader" ); + contextPtr->glDeleteProgram = ( delegate* )load( + "glDeleteProgram" ); + contextPtr->glDeleteShader = ( delegate* )load( + "glDeleteShader" ); + contextPtr->glDetachShader = ( delegate* )load( + "glDetachShader" ); + contextPtr->glDisableVertexAttribArray = ( delegate* )load( + "glDisableVertexAttribArray" ); + contextPtr->glDrawBuffers = ( delegate* )load( + "glDrawBuffers" ); + contextPtr->glEnableVertexAttribArray = ( delegate* )load( + "glEnableVertexAttribArray" ); + contextPtr->glGetActiveAttrib = ( delegate* )load( + "glGetActiveAttrib" ); + contextPtr->glGetActiveUniform = ( delegate* )load( + "glGetActiveUniform" ); + contextPtr->glGetAttachedShaders = ( delegate* )load( + "glGetAttachedShaders" ); + contextPtr->glGetAttribLocation = ( delegate* )load( + "glGetAttribLocation" ); + contextPtr->glGetProgramInfoLog = ( delegate* )load( + "glGetProgramInfoLog" ); + contextPtr->glGetProgramiv = ( delegate* )load( + "glGetProgramiv" ); + contextPtr->glGetShaderInfoLog = ( delegate* )load( + "glGetShaderInfoLog" ); + contextPtr->glGetShaderSource = ( delegate* )load( + "glGetShaderSource" ); + contextPtr->glGetShaderiv = ( delegate* )load( + "glGetShaderiv" ); + contextPtr->glGetUniformLocation = ( delegate* )load( + "glGetUniformLocation" ); + contextPtr->glGetUniformfv = ( delegate* )load( + "glGetUniformfv" ); + contextPtr->glGetUniformiv = ( delegate* )load( + "glGetUniformiv" ); + contextPtr->glGetVertexAttribPointerv = ( delegate* )load( + "glGetVertexAttribPointerv" ); + contextPtr->glGetVertexAttribdv = ( delegate* )load( + "glGetVertexAttribdv" ); + contextPtr->glGetVertexAttribfv = ( delegate* )load( + "glGetVertexAttribfv" ); + contextPtr->glGetVertexAttribiv = ( delegate* )load( + "glGetVertexAttribiv" ); + contextPtr->glIsProgram = ( delegate* )load( + "glIsProgram" ); + contextPtr->glIsShader = ( delegate* )load( + "glIsShader" ); + contextPtr->glLinkProgram = ( delegate* )load( + "glLinkProgram" ); + contextPtr->glShaderSource = ( delegate* unmanaged[Stdcall] )load( + "glShaderSource" ); + contextPtr->glStencilFuncSeparate = ( delegate* )load( + "glStencilFuncSeparate" ); + contextPtr->glStencilMaskSeparate = ( delegate* )load( + "glStencilMaskSeparate" ); + contextPtr->glStencilOpSeparate = ( delegate* )load( + "glStencilOpSeparate" ); + contextPtr->glUniform1f = ( delegate* )load( + "glUniform1f" ); + contextPtr->glUniform1fv = ( delegate* )load( + "glUniform1fv" ); + contextPtr->glUniform1i = ( delegate* )load( + "glUniform1i" ); + contextPtr->glUniform1iv = ( delegate* )load( + "glUniform1iv" ); + contextPtr->glUniform2f = ( delegate* )load( + "glUniform2f" ); + contextPtr->glUniform2fv = ( delegate* )load( + "glUniform2fv" ); + contextPtr->glUniform2i = ( delegate* )load( + "glUniform2i" ); + contextPtr->glUniform2iv = ( delegate* )load( + "glUniform2iv" ); + contextPtr->glUniform3f = ( delegate* )load( + "glUniform3f" ); + contextPtr->glUniform3fv = ( delegate* )load( + "glUniform3fv" ); + contextPtr->glUniform3i = ( delegate* )load( + "glUniform3i" ); + contextPtr->glUniform3iv = ( delegate* )load( + "glUniform3iv" ); + contextPtr->glUniform4f = ( delegate* )load( + "glUniform4f" ); + contextPtr->glUniform4fv = ( delegate* )load( + "glUniform4fv" ); + contextPtr->glUniform4i = ( delegate* )load( + "glUniform4i" ); + contextPtr->glUniform4iv = ( delegate* )load( + "glUniform4iv" ); + contextPtr->glUniformMatrix2fv = ( delegate* )load( + "glUniformMatrix2fv" ); + contextPtr->glUniformMatrix3fv = ( delegate* )load( + "glUniformMatrix3fv" ); + contextPtr->glUniformMatrix4fv = ( delegate* )load( + "glUniformMatrix4fv" ); + contextPtr->glUseProgram = ( delegate* )load( + "glUseProgram" ); + contextPtr->glValidateProgram = ( delegate* )load( + "glValidateProgram" ); + contextPtr->glVertexAttrib1d = ( delegate* )load( + "glVertexAttrib1d" ); + contextPtr->glVertexAttrib1dv = ( delegate* )load( + "glVertexAttrib1dv" ); + contextPtr->glVertexAttrib1f = ( delegate* )load( + "glVertexAttrib1f" ); + contextPtr->glVertexAttrib1fv = ( delegate* )load( + "glVertexAttrib1fv" ); + contextPtr->glVertexAttrib1s = ( delegate* )load( + "glVertexAttrib1s" ); + contextPtr->glVertexAttrib1sv = ( delegate* )load( + "glVertexAttrib1sv" ); + contextPtr->glVertexAttrib2d = ( delegate* )load( + "glVertexAttrib2d" ); + contextPtr->glVertexAttrib2dv = ( delegate* )load( + "glVertexAttrib2dv" ); + contextPtr->glVertexAttrib2f = ( delegate* )load( + "glVertexAttrib2f" ); + contextPtr->glVertexAttrib2fv = ( delegate* )load( + "glVertexAttrib2fv" ); + contextPtr->glVertexAttrib2s = ( delegate* )load( + "glVertexAttrib2s" ); + contextPtr->glVertexAttrib2sv = ( delegate* )load( + "glVertexAttrib2sv" ); + contextPtr->glVertexAttrib3d = ( delegate* )load( + "glVertexAttrib3d" ); + contextPtr->glVertexAttrib3dv = ( delegate* )load( + "glVertexAttrib3dv" ); + contextPtr->glVertexAttrib3f = ( delegate* )load( + "glVertexAttrib3f" ); + contextPtr->glVertexAttrib3fv = ( delegate* )load( + "glVertexAttrib3fv" ); + contextPtr->glVertexAttrib3s = ( delegate* )load( + "glVertexAttrib3s" ); + contextPtr->glVertexAttrib3sv = ( delegate* )load( + "glVertexAttrib3sv" ); + contextPtr->glVertexAttrib4Nbv = ( delegate* )load( + "glVertexAttrib4Nbv" ); + contextPtr->glVertexAttrib4Niv = ( delegate* )load( + "glVertexAttrib4Niv" ); + contextPtr->glVertexAttrib4Nsv = ( delegate* )load( + "glVertexAttrib4Nsv" ); + contextPtr->glVertexAttrib4Nub = ( delegate* )load( + "glVertexAttrib4Nub" ); + contextPtr->glVertexAttrib4Nubv = ( delegate* )load( + "glVertexAttrib4Nubv" ); + contextPtr->glVertexAttrib4Nuiv = ( delegate* )load( + "glVertexAttrib4Nuiv" ); + contextPtr->glVertexAttrib4Nusv = ( delegate* )load( + "glVertexAttrib4Nusv" ); + contextPtr->glVertexAttrib4bv = ( delegate* )load( + "glVertexAttrib4bv" ); + contextPtr->glVertexAttrib4d = ( delegate* )load( + "glVertexAttrib4d" ); + contextPtr->glVertexAttrib4dv = ( delegate* )load( + "glVertexAttrib4dv" ); + contextPtr->glVertexAttrib4f = ( delegate* )load( + "glVertexAttrib4f" ); + contextPtr->glVertexAttrib4fv = ( delegate* )load( + "glVertexAttrib4fv" ); + contextPtr->glVertexAttrib4iv = ( delegate* )load( + "glVertexAttrib4iv" ); + contextPtr->glVertexAttrib4s = ( delegate* )load( + "glVertexAttrib4s" ); + contextPtr->glVertexAttrib4sv = ( delegate* )load( + "glVertexAttrib4sv" ); + contextPtr->glVertexAttrib4ubv = ( delegate* )load( + "glVertexAttrib4ubv" ); + contextPtr->glVertexAttrib4uiv = ( delegate* )load( + "glVertexAttrib4uiv" ); + contextPtr->glVertexAttrib4usv = ( delegate* )load( + "glVertexAttrib4usv" ); + contextPtr->glVertexAttribPointer = ( delegate* )load( + "glVertexAttribPointer" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 2.0 APIs" ); + } + + internal static unsafe void LoadGLcore21( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core21 ) { + InternalIO.InternalAppendLog( + "The core version 2.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glUniformMatrix2x3fv = ( delegate* )load( + "glUniformMatrix2x3fv" ); + contextPtr->glUniformMatrix2x4fv = ( delegate* )load( + "glUniformMatrix2x4fv" ); + contextPtr->glUniformMatrix3x2fv = ( delegate* )load( + "glUniformMatrix3x2fv" ); + contextPtr->glUniformMatrix3x4fv = ( delegate* )load( + "glUniformMatrix3x4fv" ); + contextPtr->glUniformMatrix4x2fv = ( delegate* )load( + "glUniformMatrix4x2fv" ); + contextPtr->glUniformMatrix4x3fv = ( delegate* )load( + "glUniformMatrix4x3fv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 2.1 APIs" ); + } + + internal static unsafe void LoadGLcore30( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core30 ) { + InternalIO.InternalAppendLog( + "The core version 3.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBeginConditionalRender = ( delegate* )load( + "glBeginConditionalRender" ); + contextPtr->glBeginTransformFeedback = ( delegate* )load( + "glBeginTransformFeedback" ); + contextPtr->glBindBufferBase = ( delegate* )load( + "glBindBufferBase" ); + contextPtr->glBindBufferRange = ( delegate* )load( + "glBindBufferRange" ); + contextPtr->glBindFragDataLocation = ( delegate* )load( + "glBindFragDataLocation" ); + contextPtr->glBindFramebuffer = ( delegate* )load( + "glBindFramebuffer" ); + contextPtr->glBindRenderbuffer = ( delegate* )load( + "glBindRenderbuffer" ); + contextPtr->glBindVertexArray = ( delegate* )load( + "glBindVertexArray" ); + contextPtr->glBlitFramebuffer = ( delegate* )load( + "glBlitFramebuffer" ); + contextPtr->glCheckFramebufferStatus = ( delegate* )load( + "glCheckFramebufferStatus" ); + contextPtr->glClampColor = ( delegate* )load( + "glClampColor" ); + contextPtr->glClearBufferfi = ( delegate* )load( + "glClearBufferfi" ); + contextPtr->glClearBufferfv = ( delegate* )load( + "glClearBufferfv" ); + contextPtr->glClearBufferiv = ( delegate* )load( + "glClearBufferiv" ); + contextPtr->glClearBufferuiv = ( delegate* )load( + "glClearBufferuiv" ); + contextPtr->glColorMaski = ( delegate* )load( + "glColorMaski" ); + contextPtr->glDeleteFramebuffers = ( delegate* )load( + "glDeleteFramebuffers" ); + contextPtr->glDeleteRenderbuffers = ( delegate* )load( + "glDeleteRenderbuffers" ); + contextPtr->glDeleteVertexArrays = ( delegate* )load( + "glDeleteVertexArrays" ); + contextPtr->glDisablei = ( delegate* )load( + "glDisablei" ); + contextPtr->glEnablei = ( delegate* )load( + "glEnablei" ); + contextPtr->glEndConditionalRender = ( delegate* )load( + "glEndConditionalRender" ); + contextPtr->glEndTransformFeedback = ( delegate* )load( + "glEndTransformFeedback" ); + contextPtr->glFlushMappedBufferRange = ( delegate* )load( + "glFlushMappedBufferRange" ); + contextPtr->glFramebufferRenderbuffer = ( delegate* )load( + "glFramebufferRenderbuffer" ); + contextPtr->glFramebufferTexture1D = ( delegate* )load( + "glFramebufferTexture1D" ); + contextPtr->glFramebufferTexture2D = ( delegate* )load( + "glFramebufferTexture2D" ); + contextPtr->glFramebufferTexture3D = ( delegate* )load( + "glFramebufferTexture3D" ); + contextPtr->glFramebufferTextureLayer = ( delegate* )load( + "glFramebufferTextureLayer" ); + contextPtr->glGenFramebuffers = ( delegate* )load( + "glGenFramebuffers" ); + contextPtr->glGenRenderbuffers = ( delegate* )load( + "glGenRenderbuffers" ); + contextPtr->glGenVertexArrays = ( delegate* )load( + "glGenVertexArrays" ); + contextPtr->glGenerateMipmap = ( delegate* )load( + "glGenerateMipmap" ); + contextPtr->glGetBooleani_v = ( delegate* )load( + "glGetBooleani_v" ); + contextPtr->glGetFragDataLocation = ( delegate* )load( + "glGetFragDataLocation" ); + contextPtr->glGetFramebufferAttachmentParameteriv = ( delegate* )load( + "glGetFramebufferAttachmentParameteriv" ); + contextPtr->glGetIntegeri_v = ( delegate* )load( + "glGetIntegeri_v" ); + contextPtr->glGetRenderbufferParameteriv = ( delegate* )load( + "glGetRenderbufferParameteriv" ); + contextPtr->glGetStringi = ( delegate* )load( + "glGetStringi" ); + contextPtr->glGetTexParameterIiv = ( delegate* )load( + "glGetTexParameterIiv" ); + contextPtr->glGetTexParameterIuiv = ( delegate* )load( + "glGetTexParameterIuiv" ); + contextPtr->glGetTransformFeedbackVarying = ( delegate* )load( + "glGetTransformFeedbackVarying" ); + contextPtr->glGetUniformuiv = ( delegate* )load( + "glGetUniformuiv" ); + contextPtr->glGetVertexAttribIiv = ( delegate* )load( + "glGetVertexAttribIiv" ); + contextPtr->glGetVertexAttribIuiv = ( delegate* )load( + "glGetVertexAttribIuiv" ); + contextPtr->glIsEnabledi = ( delegate* )load( + "glIsEnabledi" ); + contextPtr->glIsFramebuffer = ( delegate* )load( + "glIsFramebuffer" ); + contextPtr->glIsRenderbuffer = ( delegate* )load( + "glIsRenderbuffer" ); + contextPtr->glIsVertexArray = ( delegate* )load( + "glIsVertexArray" ); + contextPtr->glMapBufferRange = ( delegate* )load( + "glMapBufferRange" ); + contextPtr->glRenderbufferStorage = ( delegate* )load( + "glRenderbufferStorage" ); + contextPtr->glRenderbufferStorageMultisample = ( delegate* )load( + "glRenderbufferStorageMultisample" ); + contextPtr->glTexParameterIiv = ( delegate* )load( + "glTexParameterIiv" ); + contextPtr->glTexParameterIuiv = ( delegate* )load( + "glTexParameterIuiv" ); + contextPtr->glTransformFeedbackVaryings = ( delegate* )load( + "glTransformFeedbackVaryings" ); + contextPtr->glUniform1ui = ( delegate* )load( + "glUniform1ui" ); + contextPtr->glUniform1uiv = ( delegate* )load( + "glUniform1uiv" ); + contextPtr->glUniform2ui = ( delegate* )load( + "glUniform2ui" ); + contextPtr->glUniform2uiv = ( delegate* )load( + "glUniform2uiv" ); + contextPtr->glUniform3ui = ( delegate* )load( + "glUniform3ui" ); + contextPtr->glUniform3uiv = ( delegate* )load( + "glUniform3uiv" ); + contextPtr->glUniform4ui = ( delegate* )load( + "glUniform4ui" ); + contextPtr->glUniform4uiv = ( delegate* )load( + "glUniform4uiv" ); + contextPtr->glVertexAttribI1i = ( delegate* )load( + "glVertexAttribI1i" ); + contextPtr->glVertexAttribI1iv = ( delegate* )load( + "glVertexAttribI1iv" ); + contextPtr->glVertexAttribI1ui = ( delegate* )load( + "glVertexAttribI1ui" ); + contextPtr->glVertexAttribI1uiv = ( delegate* )load( + "glVertexAttribI1uiv" ); + contextPtr->glVertexAttribI2i = ( delegate* )load( + "glVertexAttribI2i" ); + contextPtr->glVertexAttribI2iv = ( delegate* )load( + "glVertexAttribI2iv" ); + contextPtr->glVertexAttribI2ui = ( delegate* )load( + "glVertexAttribI2ui" ); + contextPtr->glVertexAttribI2uiv = ( delegate* )load( + "glVertexAttribI2uiv" ); + contextPtr->glVertexAttribI3i = ( delegate* )load( + "glVertexAttribI3i" ); + contextPtr->glVertexAttribI3iv = ( delegate* )load( + "glVertexAttribI3iv" ); + contextPtr->glVertexAttribI3ui = ( delegate* )load( + "glVertexAttribI3ui" ); + contextPtr->glVertexAttribI3uiv = ( delegate* )load( + "glVertexAttribI3uiv" ); + contextPtr->glVertexAttribI4bv = ( delegate* )load( + "glVertexAttribI4bv" ); + contextPtr->glVertexAttribI4i = ( delegate* )load( + "glVertexAttribI4i" ); + contextPtr->glVertexAttribI4iv = ( delegate* )load( + "glVertexAttribI4iv" ); + contextPtr->glVertexAttribI4sv = ( delegate* )load( + "glVertexAttribI4sv" ); + contextPtr->glVertexAttribI4ubv = ( delegate* )load( + "glVertexAttribI4ubv" ); + contextPtr->glVertexAttribI4ui = ( delegate* )load( + "glVertexAttribI4ui" ); + contextPtr->glVertexAttribI4uiv = ( delegate* )load( + "glVertexAttribI4uiv" ); + contextPtr->glVertexAttribI4usv = ( delegate* )load( + "glVertexAttribI4usv" ); + contextPtr->glVertexAttribIPointer = ( delegate* )load( + "glVertexAttribIPointer" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.0 APIs" ); + } + + internal static unsafe void LoadGLcore31( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core31 ) { + InternalIO.InternalAppendLog( + "The core version 3.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindBufferBase = ( delegate* )load( + "glBindBufferBase" ); + contextPtr->glBindBufferRange = ( delegate* )load( + "glBindBufferRange" ); + contextPtr->glCopyBufferSubData = ( delegate* )load( + "glCopyBufferSubData" ); + contextPtr->glDrawArraysInstanced = ( delegate* )load( + "glDrawArraysInstanced" ); + contextPtr->glDrawElementsInstanced = ( delegate* )load( + "glDrawElementsInstanced" ); + contextPtr->glGetActiveUniformBlockName = ( delegate* )load( + "glGetActiveUniformBlockName" ); + contextPtr->glGetActiveUniformBlockiv = ( delegate* )load( + "glGetActiveUniformBlockiv" ); + contextPtr->glGetActiveUniformName = ( delegate* )load( + "glGetActiveUniformName" ); + contextPtr->glGetActiveUniformsiv = ( delegate* )load( + "glGetActiveUniformsiv" ); + contextPtr->glGetIntegeri_v = ( delegate* )load( + "glGetIntegeri_v" ); + contextPtr->glGetUniformBlockIndex = ( delegate* )load( + "glGetUniformBlockIndex" ); + contextPtr->glGetUniformIndices = ( delegate* )load( + "glGetUniformIndices" ); + contextPtr->glPrimitiveRestartIndex = ( delegate* )load( + "glPrimitiveRestartIndex" ); + contextPtr->glTexBuffer = ( delegate* )load( + "glTexBuffer" ); + contextPtr->glUniformBlockBinding = ( delegate* )load( + "glUniformBlockBinding" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.1 APIs" ); + } + + internal static unsafe void LoadGLcore32( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core32 ) { + InternalIO.InternalAppendLog( + "The core version 3.2 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glClientWaitSync = ( delegate* )load( + "glClientWaitSync" ); + contextPtr->glDeleteSync = ( delegate* )load( + "glDeleteSync" ); + contextPtr->glDrawElementsBaseVertex = ( delegate* )load( + "glDrawElementsBaseVertex" ); + contextPtr->glDrawElementsInstancedBaseVertex = ( delegate* )load( + "glDrawElementsInstancedBaseVertex" ); + contextPtr->glDrawRangeElementsBaseVertex = ( delegate* )load( + "glDrawRangeElementsBaseVertex" ); + contextPtr->glFenceSync = ( delegate* )load( + "glFenceSync" ); + contextPtr->glFramebufferTexture = ( delegate* )load( + "glFramebufferTexture" ); + contextPtr->glGetBufferParameteri64v = ( delegate* )load( + "glGetBufferParameteri64v" ); + contextPtr->glGetInteger64i_v = ( delegate* )load( + "glGetInteger64i_v" ); + contextPtr->glGetInteger64v = ( delegate* )load( + "glGetInteger64v" ); + contextPtr->glGetMultisamplefv = ( delegate* )load( + "glGetMultisamplefv" ); + contextPtr->glGetSynciv = ( delegate* )load( + "glGetSynciv" ); + contextPtr->glIsSync = ( delegate* )load( "glIsSync" ); + contextPtr->glMultiDrawElementsBaseVertex = ( delegate* )load( + "glMultiDrawElementsBaseVertex" ); + contextPtr->glProvokingVertex = ( delegate* )load( + "glProvokingVertex" ); + contextPtr->glSampleMaski = ( delegate* )load( + "glSampleMaski" ); + contextPtr->glTexImage2DMultisample = ( delegate* )load( + "glTexImage2DMultisample" ); + contextPtr->glTexImage3DMultisample = ( delegate* )load( + "glTexImage3DMultisample" ); + contextPtr->glWaitSync = ( delegate* )load( + "glWaitSync" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.2 APIs" ); + } + + internal static unsafe void LoadGLcore33( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core33 ) { + InternalIO.InternalAppendLog( + "The core version 3.3 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindFragDataLocationIndexed = ( delegate* )load( + "glBindFragDataLocationIndexed" ); + contextPtr->glBindSampler = ( delegate* )load( + "glBindSampler" ); + contextPtr->glDeleteSamplers = ( delegate* )load( + "glDeleteSamplers" ); + contextPtr->glGenSamplers = ( delegate* )load( + "glGenSamplers" ); + contextPtr->glGetFragDataIndex = ( delegate* )load( + "glGetFragDataIndex" ); + contextPtr->glGetQueryObjecti64v = ( delegate* )load( + "glGetQueryObjecti64v" ); + contextPtr->glGetQueryObjectui64v = ( delegate* )load( + "glGetQueryObjectui64v" ); + contextPtr->glGetSamplerParameterIiv = ( delegate* )load( + "glGetSamplerParameterIiv" ); + contextPtr->glGetSamplerParameterIuiv = ( delegate* )load( + "glGetSamplerParameterIuiv" ); + contextPtr->glGetSamplerParameterfv = ( delegate* )load( + "glGetSamplerParameterfv" ); + contextPtr->glGetSamplerParameteriv = ( delegate* )load( + "glGetSamplerParameteriv" ); + contextPtr->glIsSampler = ( delegate* )load( + "glIsSampler" ); + contextPtr->glQueryCounter = ( delegate* )load( + "glQueryCounter" ); + contextPtr->glSamplerParameterIiv = ( delegate* )load( + "glSamplerParameterIiv" ); + contextPtr->glSamplerParameterIuiv = ( delegate* )load( + "glSamplerParameterIuiv" ); + contextPtr->glSamplerParameterf = ( delegate* )load( + "glSamplerParameterf" ); + contextPtr->glSamplerParameterfv = ( delegate* )load( + "glSamplerParameterfv" ); + contextPtr->glSamplerParameteri = ( delegate* )load( + "glSamplerParameteri" ); + contextPtr->glSamplerParameteriv = ( delegate* )load( + "glSamplerParameteriv" ); + contextPtr->glVertexAttribDivisor = ( delegate* )load( + "glVertexAttribDivisor" ); + contextPtr->glVertexAttribP1ui = ( delegate* )load( + "glVertexAttribP1ui" ); + contextPtr->glVertexAttribP1uiv = ( delegate* )load( + "glVertexAttribP1uiv" ); + contextPtr->glVertexAttribP2ui = ( delegate* )load( + "glVertexAttribP2ui" ); + contextPtr->glVertexAttribP2uiv = ( delegate* )load( + "glVertexAttribP2uiv" ); + contextPtr->glVertexAttribP3ui = ( delegate* )load( + "glVertexAttribP3ui" ); + contextPtr->glVertexAttribP3uiv = ( delegate* )load( + "glVertexAttribP3uiv" ); + contextPtr->glVertexAttribP4ui = ( delegate* )load( + "glVertexAttribP4ui" ); + contextPtr->glVertexAttribP4uiv = ( delegate* )load( + "glVertexAttribP4uiv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.3 APIs" ); + } + + internal static unsafe void LoadGLcore40( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core40 ) { + InternalIO.InternalAppendLog( + "The core version 4.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBeginQueryIndexed = ( delegate* )load( + "glBeginQueryIndexed" ); + contextPtr->glBindTransformFeedback = ( delegate* )load( + "glBindTransformFeedback" ); + contextPtr->glBlendEquationSeparatei = ( delegate* )load( + "glBlendEquationSeparatei" ); + contextPtr->glBlendEquationi = ( delegate* )load( + "glBlendEquationi" ); + contextPtr->glBlendFuncSeparatei = ( delegate* )load( + "glBlendFuncSeparatei" ); + contextPtr->glBlendFunci = ( delegate* )load( + "glBlendFunci" ); + contextPtr->glDeleteTransformFeedbacks = ( delegate* )load( + "glDeleteTransformFeedbacks" ); + contextPtr->glDrawArraysIndirect = ( delegate* )load( + "glDrawArraysIndirect" ); + contextPtr->glDrawElementsIndirect = ( delegate* )load( + "glDrawElementsIndirect" ); + contextPtr->glDrawTransformFeedback = ( delegate* )load( + "glDrawTransformFeedback" ); + contextPtr->glDrawTransformFeedbackStream = ( delegate* )load( + "glDrawTransformFeedbackStream" ); + contextPtr->glEndQueryIndexed = ( delegate* )load( + "glEndQueryIndexed" ); + contextPtr->glGenTransformFeedbacks = ( delegate* )load( + "glGenTransformFeedbacks" ); + contextPtr->glGetActiveSubroutineName = ( delegate* )load( + "glGetActiveSubroutineName" ); + contextPtr->glGetActiveSubroutineUniformName = ( delegate* )load( + "glGetActiveSubroutineUniformName" ); + contextPtr->glGetActiveSubroutineUniformiv = ( delegate* )load( + "glGetActiveSubroutineUniformiv" ); + contextPtr->glGetProgramStageiv = ( delegate* )load( + "glGetProgramStageiv" ); + contextPtr->glGetQueryIndexediv = ( delegate* )load( + "glGetQueryIndexediv" ); + contextPtr->glGetSubroutineIndex = ( delegate* )load( + "glGetSubroutineIndex" ); + contextPtr->glGetSubroutineUniformLocation = ( delegate* )load( + "glGetSubroutineUniformLocation" ); + contextPtr->glGetUniformSubroutineuiv = ( delegate* )load( + "glGetUniformSubroutineuiv" ); + contextPtr->glGetUniformdv = ( delegate* )load( + "glGetUniformdv" ); + contextPtr->glIsTransformFeedback = ( delegate* )load( + "glIsTransformFeedback" ); + contextPtr->glMinSampleShading = ( delegate* )load( + "glMinSampleShading" ); + contextPtr->glPatchParameterfv = ( delegate* )load( + "glPatchParameterfv" ); + contextPtr->glPatchParameteri = ( delegate* )load( + "glPatchParameteri" ); + contextPtr->glPauseTransformFeedback = ( delegate* )load( + "glPauseTransformFeedback" ); + contextPtr->glResumeTransformFeedback = ( delegate* )load( + "glResumeTransformFeedback" ); + contextPtr->glUniform1d = ( delegate* )load( + "glUniform1d" ); + contextPtr->glUniform1dv = ( delegate* )load( + "glUniform1dv" ); + contextPtr->glUniform2d = ( delegate* )load( + "glUniform2d" ); + contextPtr->glUniform2dv = ( delegate* )load( + "glUniform2dv" ); + contextPtr->glUniform3d = ( delegate* )load( + "glUniform3d" ); + contextPtr->glUniform3dv = ( delegate* )load( + "glUniform3dv" ); + contextPtr->glUniform4d = ( delegate* )load( + "glUniform4d" ); + contextPtr->glUniform4dv = ( delegate* )load( + "glUniform4dv" ); + contextPtr->glUniformMatrix2dv = ( delegate* )load( + "glUniformMatrix2dv" ); + contextPtr->glUniformMatrix2x3dv = ( delegate* )load( + "glUniformMatrix2x3dv" ); + contextPtr->glUniformMatrix2x4dv = ( delegate* )load( + "glUniformMatrix2x4dv" ); + contextPtr->glUniformMatrix3dv = ( delegate* )load( + "glUniformMatrix3dv" ); + contextPtr->glUniformMatrix3x2dv = ( delegate* )load( + "glUniformMatrix3x2dv" ); + contextPtr->glUniformMatrix3x4dv = ( delegate* )load( + "glUniformMatrix3x4dv" ); + contextPtr->glUniformMatrix4dv = ( delegate* )load( + "glUniformMatrix4dv" ); + contextPtr->glUniformMatrix4x2dv = ( delegate* )load( + "glUniformMatrix4x2dv" ); + contextPtr->glUniformMatrix4x3dv = ( delegate* )load( + "glUniformMatrix4x3dv" ); + contextPtr->glUniformSubroutinesuiv = ( delegate* )load( + "glUniformSubroutinesuiv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.0 APIs" ); + } + + internal static unsafe void LoadGLcore41( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core41 ) { + InternalIO.InternalAppendLog( + "The core version 4.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glActiveShaderProgram = ( delegate* )load( + "glActiveShaderProgram" ); + contextPtr->glBindProgramPipeline = ( delegate* )load( + "glBindProgramPipeline" ); + contextPtr->glClearDepthf = ( delegate* )load( + "glClearDepthf" ); + contextPtr->glCreateShaderProgramv = ( delegate* )load( + "glCreateShaderProgramv" ); + contextPtr->glDeleteProgramPipelines = ( delegate* )load( + "glDeleteProgramPipelines" ); + contextPtr->glDepthRangeArrayv = ( delegate* )load( + "glDepthRangeArrayv" ); + contextPtr->glDepthRangeIndexed = ( delegate* )load( + "glDepthRangeIndexed" ); + contextPtr->glDepthRangef = ( delegate* )load( + "glDepthRangef" ); + contextPtr->glGenProgramPipelines = ( delegate* )load( + "glGenProgramPipelines" ); + contextPtr->glGetDoublei_v = ( delegate* )load( + "glGetDoublei_v" ); + contextPtr->glGetFloati_v = ( delegate* )load( + "glGetFloati_v" ); + contextPtr->glGetProgramBinary = ( delegate* )load( + "glGetProgramBinary" ); + contextPtr->glGetProgramPipelineInfoLog = ( delegate* )load( + "glGetProgramPipelineInfoLog" ); + contextPtr->glGetProgramPipelineiv = ( delegate* )load( + "glGetProgramPipelineiv" ); + contextPtr->glGetShaderPrecisionFormat = ( delegate* )load( + "glGetShaderPrecisionFormat" ); + contextPtr->glGetVertexAttribLdv = ( delegate* )load( + "glGetVertexAttribLdv" ); + contextPtr->glIsProgramPipeline = ( delegate* )load( + "glIsProgramPipeline" ); + contextPtr->glProgramBinary = ( delegate* )load( + "glProgramBinary" ); + contextPtr->glProgramParameteri = ( delegate* )load( + "glProgramParameteri" ); + contextPtr->glProgramUniform1d = ( delegate* )load( + "glProgramUniform1d" ); + contextPtr->glProgramUniform1dv = ( delegate* )load( + "glProgramUniform1dv" ); + contextPtr->glProgramUniform1f = ( delegate* )load( + "glProgramUniform1f" ); + contextPtr->glProgramUniform1fv = ( delegate* )load( + "glProgramUniform1fv" ); + contextPtr->glProgramUniform1i = ( delegate* )load( + "glProgramUniform1i" ); + contextPtr->glProgramUniform1iv = ( delegate* )load( + "glProgramUniform1iv" ); + contextPtr->glProgramUniform1ui = ( delegate* )load( + "glProgramUniform1ui" ); + contextPtr->glProgramUniform1uiv = ( delegate* )load( + "glProgramUniform1uiv" ); + contextPtr->glProgramUniform2d = ( delegate* )load( + "glProgramUniform2d" ); + contextPtr->glProgramUniform2dv = ( delegate* )load( + "glProgramUniform2dv" ); + contextPtr->glProgramUniform2f = ( delegate* )load( + "glProgramUniform2f" ); + contextPtr->glProgramUniform2fv = ( delegate* )load( + "glProgramUniform2fv" ); + contextPtr->glProgramUniform2i = ( delegate* )load( + "glProgramUniform2i" ); + contextPtr->glProgramUniform2iv = ( delegate* )load( + "glProgramUniform2iv" ); + contextPtr->glProgramUniform2ui = ( delegate* )load( + "glProgramUniform2ui" ); + contextPtr->glProgramUniform2uiv = ( delegate* )load( + "glProgramUniform2uiv" ); + contextPtr->glProgramUniform3d = ( delegate* )load( + "glProgramUniform3d" ); + contextPtr->glProgramUniform3dv = ( delegate* )load( + "glProgramUniform3dv" ); + contextPtr->glProgramUniform3f = ( delegate* )load( + "glProgramUniform3f" ); + contextPtr->glProgramUniform3fv = ( delegate* )load( + "glProgramUniform3fv" ); + contextPtr->glProgramUniform3i = ( delegate* )load( + "glProgramUniform3i" ); + contextPtr->glProgramUniform3iv = ( delegate* )load( + "glProgramUniform3iv" ); + contextPtr->glProgramUniform3ui = ( delegate* )load( + "glProgramUniform3ui" ); + contextPtr->glProgramUniform3uiv = ( delegate* )load( + "glProgramUniform3uiv" ); + contextPtr->glProgramUniform4d = ( delegate* )load( + "glProgramUniform4d" ); + contextPtr->glProgramUniform4dv = ( delegate* )load( + "glProgramUniform4dv" ); + contextPtr->glProgramUniform4f = ( delegate* )load( + "glProgramUniform4f" ); + contextPtr->glProgramUniform4fv = ( delegate* )load( + "glProgramUniform4fv" ); + contextPtr->glProgramUniform4i = ( delegate* )load( + "glProgramUniform4i" ); + contextPtr->glProgramUniform4iv = ( delegate* )load( + "glProgramUniform4iv" ); + contextPtr->glProgramUniform4ui = ( delegate* )load( + "glProgramUniform4ui" ); + contextPtr->glProgramUniform4uiv = ( delegate* )load( + "glProgramUniform4uiv" ); + contextPtr->glProgramUniformMatrix2dv = ( delegate* )load( + "glProgramUniformMatrix2dv" ); + contextPtr->glProgramUniformMatrix2fv = ( delegate* )load( + "glProgramUniformMatrix2fv" ); + contextPtr->glProgramUniformMatrix2x3dv = ( delegate* )load( + "glProgramUniformMatrix2x3dv" ); + contextPtr->glProgramUniformMatrix2x3fv = ( delegate* )load( + "glProgramUniformMatrix2x3fv" ); + contextPtr->glProgramUniformMatrix2x4dv = ( delegate* )load( + "glProgramUniformMatrix2x4dv" ); + contextPtr->glProgramUniformMatrix2x4fv = ( delegate* )load( + "glProgramUniformMatrix2x4fv" ); + contextPtr->glProgramUniformMatrix3dv = ( delegate* )load( + "glProgramUniformMatrix3dv" ); + contextPtr->glProgramUniformMatrix3fv = ( delegate* )load( + "glProgramUniformMatrix3fv" ); + contextPtr->glProgramUniformMatrix3x2dv = ( delegate* )load( + "glProgramUniformMatrix3x2dv" ); + contextPtr->glProgramUniformMatrix3x2fv = ( delegate* )load( + "glProgramUniformMatrix3x2fv" ); + contextPtr->glProgramUniformMatrix3x4dv = ( delegate* )load( + "glProgramUniformMatrix3x4dv" ); + contextPtr->glProgramUniformMatrix3x4fv = ( delegate* )load( + "glProgramUniformMatrix3x4fv" ); + contextPtr->glProgramUniformMatrix4dv = ( delegate* )load( + "glProgramUniformMatrix4dv" ); + contextPtr->glProgramUniformMatrix4fv = ( delegate* )load( + "glProgramUniformMatrix4fv" ); + contextPtr->glProgramUniformMatrix4x2dv = ( delegate* )load( + "glProgramUniformMatrix4x2dv" ); + contextPtr->glProgramUniformMatrix4x2fv = ( delegate* )load( + "glProgramUniformMatrix4x2fv" ); + contextPtr->glProgramUniformMatrix4x3dv = ( delegate* )load( + "glProgramUniformMatrix4x3dv" ); + contextPtr->glProgramUniformMatrix4x3fv = ( delegate* )load( + "glProgramUniformMatrix4x3fv" ); + contextPtr->glReleaseShaderCompiler = ( delegate* )load( + "glReleaseShaderCompiler" ); + contextPtr->glScissorArrayv = ( delegate* )load( + "glScissorArrayv" ); + contextPtr->glScissorIndexed = ( delegate* )load( + "glScissorIndexed" ); + contextPtr->glScissorIndexedv = ( delegate* )load( + "glScissorIndexedv" ); + contextPtr->glShaderBinary = ( delegate* )load( + "glShaderBinary" ); + contextPtr->glUseProgramStages = ( delegate* )load( + "glUseProgramStages" ); + contextPtr->glValidateProgramPipeline = ( delegate* )load( + "glValidateProgramPipeline" ); + contextPtr->glVertexAttribL1d = ( delegate* )load( + "glVertexAttribL1d" ); + contextPtr->glVertexAttribL1dv = ( delegate* )load( + "glVertexAttribL1dv" ); + contextPtr->glVertexAttribL2d = ( delegate* )load( + "glVertexAttribL2d" ); + contextPtr->glVertexAttribL2dv = ( delegate* )load( + "glVertexAttribL2dv" ); + contextPtr->glVertexAttribL3d = ( delegate* )load( + "glVertexAttribL3d" ); + contextPtr->glVertexAttribL3dv = ( delegate* )load( + "glVertexAttribL3dv" ); + contextPtr->glVertexAttribL4d = ( delegate* )load( + "glVertexAttribL4d" ); + contextPtr->glVertexAttribL4dv = ( delegate* )load( + "glVertexAttribL4dv" ); + contextPtr->glVertexAttribLPointer = ( delegate* )load( + "glVertexAttribLPointer" ); + contextPtr->glViewportArrayv = ( delegate* )load( + "glViewportArrayv" ); + contextPtr->glViewportIndexedf = ( delegate* )load( + "glViewportIndexedf" ); + contextPtr->glViewportIndexedfv = ( delegate* )load( + "glViewportIndexedfv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.1 APIs" ); + } + + internal static unsafe void LoadGLcore42( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core42 ) { + InternalIO.InternalAppendLog( + "The core version 4.2 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindImageTexture = ( delegate* )load( + "glBindImageTexture" ); + contextPtr->glDrawArraysInstancedBaseInstance = ( delegate* )load( + "glDrawArraysInstancedBaseInstance" ); + contextPtr->glDrawElementsInstancedBaseInstance = ( delegate* )load( + "glDrawElementsInstancedBaseInstance" ); + contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = ( delegate* )load( + "glDrawElementsInstancedBaseVertexBaseInstance" ); + contextPtr->glDrawTransformFeedbackInstanced = ( delegate* )load( + "glDrawTransformFeedbackInstanced" ); + contextPtr->glDrawTransformFeedbackStreamInstanced = ( delegate* )load( + "glDrawTransformFeedbackStreamInstanced" ); + contextPtr->glGetActiveAtomicCounterBufferiv = ( delegate* )load( + "glGetActiveAtomicCounterBufferiv" ); + contextPtr->glGetInternalformativ = ( delegate* )load( + "glGetInternalformativ" ); + contextPtr->glMemoryBarrier = ( delegate* )load( + "glMemoryBarrier" ); + contextPtr->glTexStorage1D = ( delegate* )load( + "glTexStorage1D" ); + contextPtr->glTexStorage2D = ( delegate* )load( + "glTexStorage2D" ); + contextPtr->glTexStorage3D = ( delegate* )load( + "glTexStorage3D" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.2 APIs" ); + } + + internal static unsafe void LoadGLcore43( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core43 ) { + InternalIO.InternalAppendLog( + "The core version 4.3 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindVertexBuffer = ( delegate* )load( + "glBindVertexBuffer" ); + contextPtr->glClearBufferData = ( delegate* )load( + "glClearBufferData" ); + contextPtr->glClearBufferSubData = ( delegate* )load( + "glClearBufferSubData" ); + contextPtr->glCopyImageSubData = ( delegate* )load( + "glCopyImageSubData" ); + contextPtr->glDebugMessageCallback = ( delegate* )load( + "glDebugMessageCallback" ); + contextPtr->glDebugMessageControl = ( delegate* )load( + "glDebugMessageControl" ); + contextPtr->glDebugMessageInsert = ( delegate* )load( + "glDebugMessageInsert" ); + contextPtr->glDispatchCompute = ( delegate* )load( + "glDispatchCompute" ); + contextPtr->glDispatchComputeIndirect = ( delegate* )load( + "glDispatchComputeIndirect" ); + contextPtr->glFramebufferParameteri = ( delegate* )load( + "glFramebufferParameteri" ); + contextPtr->glGetDebugMessageLog = ( delegate* )load( + "glGetDebugMessageLog" ); + contextPtr->glGetFramebufferParameteriv = ( delegate* )load( + "glGetFramebufferParameteriv" ); + contextPtr->glGetInternalformati64v = ( delegate* )load( + "glGetInternalformati64v" ); + contextPtr->glGetObjectLabel = ( delegate* )load( + "glGetObjectLabel" ); + contextPtr->glGetObjectPtrLabel = ( delegate* )load( + "glGetObjectPtrLabel" ); + contextPtr->glGetPointerv = ( delegate* )load( + "glGetPointerv" ); + contextPtr->glGetProgramInterfaceiv = ( delegate* )load( + "glGetProgramInterfaceiv" ); + contextPtr->glGetProgramResourceIndex = ( delegate* )load( + "glGetProgramResourceIndex" ); + contextPtr->glGetProgramResourceLocation = ( delegate* )load( + "glGetProgramResourceLocation" ); + contextPtr->glGetProgramResourceLocationIndex = ( delegate* )load( + "glGetProgramResourceLocationIndex" ); + contextPtr->glGetProgramResourceName = ( delegate* )load( + "glGetProgramResourceName" ); + contextPtr->glGetProgramResourceiv = ( delegate* )load( + "glGetProgramResourceiv" ); + contextPtr->glInvalidateBufferData = ( delegate* )load( + "glInvalidateBufferData" ); + contextPtr->glInvalidateBufferSubData = ( delegate* )load( + "glInvalidateBufferSubData" ); + contextPtr->glInvalidateFramebuffer = ( delegate* )load( + "glInvalidateFramebuffer" ); + contextPtr->glInvalidateSubFramebuffer = ( delegate* )load( + "glInvalidateSubFramebuffer" ); + contextPtr->glInvalidateTexImage = ( delegate* )load( + "glInvalidateTexImage" ); + contextPtr->glInvalidateTexSubImage = ( delegate* )load( + "glInvalidateTexSubImage" ); + contextPtr->glMultiDrawArraysIndirect = ( delegate* )load( + "glMultiDrawArraysIndirect" ); + contextPtr->glMultiDrawElementsIndirect = ( delegate* )load( + "glMultiDrawElementsIndirect" ); + contextPtr->glObjectLabel = ( delegate* )load( + "glObjectLabel" ); + contextPtr->glObjectPtrLabel = ( delegate* )load( + "glObjectPtrLabel" ); + contextPtr->glPopDebugGroup = ( delegate* )load( + "glPopDebugGroup" ); + contextPtr->glPushDebugGroup = ( delegate* )load( + "glPushDebugGroup" ); + contextPtr->glShaderStorageBlockBinding = ( delegate* )load( + "glShaderStorageBlockBinding" ); + contextPtr->glTexBufferRange = ( delegate* )load( + "glTexBufferRange" ); + contextPtr->glTexStorage2DMultisample = ( delegate* )load( + "glTexStorage2DMultisample" ); + contextPtr->glTexStorage3DMultisample = ( delegate* )load( + "glTexStorage3DMultisample" ); + contextPtr->glTextureView = ( delegate* )load( + "glTextureView" ); + contextPtr->glVertexAttribBinding = ( delegate* )load( + "glVertexAttribBinding" ); + contextPtr->glVertexAttribFormat = ( delegate* )load( + "glVertexAttribFormat" ); + contextPtr->glVertexAttribIFormat = ( delegate* )load( + "glVertexAttribIFormat" ); + contextPtr->glClearBufferData = ( delegate* )load( + "glClearBufferData" ); + contextPtr->glVertexBindingDivisor = ( delegate* )load( + "glVertexBindingDivisor" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.3 APIs" ); + } + + internal static unsafe void LoadGLcore44( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core44 ) { + InternalIO.InternalAppendLog( + "The core version 4.4 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindBuffersBase = ( delegate* )load( + "glBindBuffersBase" ); + contextPtr->glBindBuffersRange = ( delegate* )load( + "glBindBuffersRange" ); + contextPtr->glBindImageTextures = ( delegate* )load( + "glBindImageTextures" ); + contextPtr->glBindSamplers = ( delegate* )load( + "glBindSamplers" ); + contextPtr->glBindTextures = ( delegate* )load( + "glBindTextures" ); + contextPtr->glBindVertexBuffers = ( delegate* )load( + "glBindVertexBuffers" ); + contextPtr->glBufferStorage = ( delegate* )load( + "glBufferStorage" ); + contextPtr->glClearTexImage = ( delegate* )load( + "glClearTexImage" ); + contextPtr->glClearTexSubImage = ( delegate* )load( + "glClearTexSubImage" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.4 APIs" ); + } + + internal static unsafe void LoadGLcore45( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core45 ) { + InternalIO.InternalAppendLog( + "The core version 4.5 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindTextureUnit = ( delegate* )load( + "glBindTextureUnit" ); + contextPtr->glBlitNamedFramebuffer = ( delegate* )load( + "glBlitNamedFramebuffer" ); + contextPtr->glCheckNamedFramebufferStatus = ( delegate* )load( + "glCheckNamedFramebufferStatus" ); + contextPtr->glClearNamedBufferData = ( delegate* )load( + "glClearNamedBufferData" ); + contextPtr->glClearNamedBufferSubData = ( delegate* )load( + "glClearNamedBufferSubData" ); + contextPtr->glClearNamedFramebufferfi = ( delegate* )load( + "glClearNamedFramebufferfi" ); + contextPtr->glClearNamedFramebufferfv = ( delegate* )load( + "glClearNamedFramebufferfv" ); + contextPtr->glClearNamedFramebufferiv = ( delegate* )load( + "glClearNamedFramebufferiv" ); + contextPtr->glClearNamedFramebufferuiv = ( delegate* )load( + "glClearNamedFramebufferuiv" ); + contextPtr->glClipControl = ( delegate* )load( + "glClipControl" ); + contextPtr->glCompressedTextureSubImage1D = ( delegate* )load( + "glCompressedTextureSubImage1D" ); + contextPtr->glCompressedTextureSubImage2D = ( delegate* )load( + "glCompressedTextureSubImage2D" ); + contextPtr->glCompressedTextureSubImage3D = ( delegate* )load( + "glCompressedTextureSubImage3D" ); + contextPtr->glCopyNamedBufferSubData = ( delegate* )load( + "glCopyNamedBufferSubData" ); + contextPtr->glCopyTextureSubImage1D = ( delegate* )load( + "glCopyTextureSubImage1D" ); + contextPtr->glCopyTextureSubImage2D = ( delegate* )load( + "glCopyTextureSubImage2D" ); + contextPtr->glCopyTextureSubImage3D = ( delegate* )load( + "glCopyTextureSubImage3D" ); + contextPtr->glCreateBuffers = ( delegate* )load( + "glCreateBuffers" ); + contextPtr->glCreateFramebuffers = ( delegate* )load( + "glCreateFramebuffers" ); + contextPtr->glCreateProgramPipelines = ( delegate* )load( + "glCreateProgramPipelines" ); + contextPtr->glCreateQueries = ( delegate* )load( + "glCreateQueries" ); + contextPtr->glCreateRenderbuffers = ( delegate* )load( + "glCreateRenderbuffers" ); + contextPtr->glCreateSamplers = ( delegate* )load( + "glCreateSamplers" ); + contextPtr->glCreateTextures = ( delegate* )load( + "glCreateTextures" ); + contextPtr->glCreateTransformFeedbacks = ( delegate* )load( + "glCreateTransformFeedbacks" ); + contextPtr->glCreateVertexArrays = ( delegate* )load( + "glCreateVertexArrays" ); + contextPtr->glDisableVertexArrayAttrib = ( delegate* )load( + "glDisableVertexArrayAttrib" ); + contextPtr->glEnableVertexArrayAttrib = ( delegate* )load( + "glEnableVertexArrayAttrib" ); + contextPtr->glFlushMappedNamedBufferRange = ( delegate* )load( + "glFlushMappedNamedBufferRange" ); + contextPtr->glGenerateTextureMipmap = ( delegate* )load( + "glGenerateTextureMipmap" ); + contextPtr->glGetCompressedTextureImage = ( delegate* )load( + "glGetCompressedTextureImage" ); + contextPtr->glGetCompressedTextureSubImage = ( delegate* )load( + "glGetCompressedTextureSubImage" ); + contextPtr->glGetGraphicsResetStatus = ( delegate* )load( + "glGetGraphicsResetStatus" ); + contextPtr->glGetNamedBufferParameteri64v = ( delegate* )load( + "glGetNamedBufferParameteri64v" ); + contextPtr->glGetNamedBufferParameteriv = ( delegate* )load( + "glGetNamedBufferParameteriv" ); + contextPtr->glGetNamedBufferPointerv = ( delegate* )load( + "glGetNamedBufferPointerv" ); + contextPtr->glGetNamedBufferSubData = ( delegate* )load( + "glGetNamedBufferSubData" ); + contextPtr->glGetNamedFramebufferAttachmentParameteriv = ( delegate* )load( + "glGetNamedFramebufferAttachmentParameteriv" ); + contextPtr->glGetNamedFramebufferParameteriv = ( delegate* )load( + "glGetNamedFramebufferParameteriv" ); + contextPtr->glGetNamedRenderbufferParameteriv = ( delegate* )load( + "glGetNamedRenderbufferParameteriv" ); + contextPtr->glGetQueryBufferObjecti64v = ( delegate* )load( + "glGetQueryBufferObjecti64v" ); + contextPtr->glGetQueryBufferObjectiv = ( delegate* )load( + "glGetQueryBufferObjectiv" ); + contextPtr->glGetQueryBufferObjectui64v = ( delegate* )load( + "glGetQueryBufferObjectui64v" ); + contextPtr->glGetQueryBufferObjectuiv = ( delegate* )load( + "glGetQueryBufferObjectuiv" ); + contextPtr->glGetTextureImage = ( delegate* )load( + "glGetTextureImage" ); + contextPtr->glGetTextureLevelParameterfv = ( delegate* )load( + "glGetTextureLevelParameterfv" ); + contextPtr->glGetTextureLevelParameteriv = ( delegate* )load( + "glGetTextureLevelParameteriv" ); + contextPtr->glGetTextureParameterIiv = ( delegate* )load( + "glGetTextureParameterIiv" ); + contextPtr->glGetTextureParameterIuiv = ( delegate* )load( + "glGetTextureParameterIuiv" ); + contextPtr->glGetTextureParameterfv = ( delegate* )load( + "glGetTextureParameterfv" ); + contextPtr->glGetTextureParameteriv = ( delegate* )load( + "glGetTextureParameteriv" ); + contextPtr->glGetTextureSubImage = ( delegate* )load( + "glGetTextureSubImage" ); + contextPtr->glGetTransformFeedbacki64_v = ( delegate* )load( + "glGetTransformFeedbacki64_v" ); + contextPtr->glGetTransformFeedbacki_v = ( delegate* )load( + "glGetTransformFeedbacki_v" ); + contextPtr->glGetTransformFeedbackiv = ( delegate* )load( + "glGetTransformFeedbackiv" ); + contextPtr->glGetVertexArrayIndexed64iv = ( delegate* )load( + "glGetVertexArrayIndexed64iv" ); + contextPtr->glGetVertexArrayIndexediv = ( delegate* )load( + "glGetVertexArrayIndexediv" ); + contextPtr->glGetVertexArrayiv = ( delegate* )load( + "glGetVertexArrayiv" ); + contextPtr->glGetnCompressedTexImage = ( delegate* )load( + "glGetnCompressedTexImage" ); + contextPtr->glGetnTexImage = ( delegate* )load( + "glGetnTexImage" ); + contextPtr->glGetnUniformdv = ( delegate* )load( + "glGetnUniformdv" ); + contextPtr->glGetnUniformfv = ( delegate* )load( + "glGetnUniformfv" ); + contextPtr->glGetnUniformiv = ( delegate* )load( + "glGetnUniformiv" ); + contextPtr->glGetnUniformuiv = ( delegate* )load( + "glGetnUniformuiv" ); + contextPtr->glInvalidateNamedFramebufferData = ( delegate* )load( + "glInvalidateNamedFramebufferData" ); + contextPtr->glInvalidateNamedFramebufferSubData = ( delegate* )load( + "glInvalidateNamedFramebufferSubData" ); + contextPtr->glMapNamedBuffer = ( delegate* )load( + "glMapNamedBuffer" ); + contextPtr->glMapNamedBufferRange = ( delegate* )load( + "glMapNamedBufferRange" ); + contextPtr->glMemoryBarrierByRegion = ( delegate* )load( + "glMemoryBarrierByRegion" ); + contextPtr->glNamedBufferData = ( delegate* )load( + "glNamedBufferData" ); + contextPtr->glNamedBufferStorage = ( delegate* )load( + "glNamedBufferStorage" ); + contextPtr->glNamedBufferSubData = ( delegate* )load( + "glNamedBufferSubData" ); + contextPtr->glNamedFramebufferDrawBuffer = ( delegate* )load( + "glNamedFramebufferDrawBuffer" ); + contextPtr->glNamedFramebufferDrawBuffers = ( delegate* )load( + "glNamedFramebufferDrawBuffers" ); + contextPtr->glNamedFramebufferParameteri = ( delegate* )load( + "glNamedFramebufferParameteri" ); + contextPtr->glNamedFramebufferReadBuffer = ( delegate* )load( + "glNamedFramebufferReadBuffer" ); + contextPtr->glNamedFramebufferRenderbuffer = ( delegate* )load( + "glNamedFramebufferRenderbuffer" ); + contextPtr->glNamedFramebufferTexture = ( delegate* )load( + "glNamedFramebufferTexture" ); + contextPtr->glNamedFramebufferTextureLayer = ( delegate* )load( + "glNamedFramebufferTextureLayer" ); + contextPtr->glNamedRenderbufferStorage = ( delegate* )load( + "glNamedRenderbufferStorage" ); + contextPtr->glNamedRenderbufferStorageMultisample = ( delegate* )load( + "glNamedRenderbufferStorageMultisample" ); + contextPtr->glReadnPixels = ( delegate* )load( + "glReadnPixels" ); + contextPtr->glTextureBarrier = ( delegate* )load( + "glTextureBarrier" ); + contextPtr->glTextureBuffer = ( delegate* )load( + "glTextureBuffer" ); + contextPtr->glTextureBufferRange = ( delegate* )load( + "glTextureBufferRange" ); + contextPtr->glTextureParameterIiv = ( delegate* )load( + "glTextureParameterIiv" ); + contextPtr->glTextureParameterIuiv = ( delegate* )load( + "glTextureParameterIuiv" ); + contextPtr->glTextureParameterf = ( delegate* )load( + "glTextureParameterf" ); + contextPtr->glTextureParameterfv = ( delegate* )load( + "glTextureParameterfv" ); + contextPtr->glTextureParameteri = ( delegate* )load( + "glTextureParameteri" ); + contextPtr->glTextureParameteriv = ( delegate* )load( + "glTextureParameteriv" ); + contextPtr->glTextureStorage1D = ( delegate* )load( + "glTextureStorage1D" ); + contextPtr->glTextureStorage2D = ( delegate* )load( + "glTextureStorage2D" ); + contextPtr->glTextureStorage2DMultisample = ( delegate* )load( + "glTextureStorage2DMultisample" ); + contextPtr->glTextureStorage3D = ( delegate* )load( + "glTextureStorage3D" ); + contextPtr->glTextureStorage3DMultisample = ( delegate* )load( + "glTextureStorage3DMultisample" ); + contextPtr->glTextureSubImage1D = ( delegate* )load( + "glTextureSubImage1D" ); + contextPtr->glTextureSubImage2D = ( delegate* )load( + "glTextureSubImage2D" ); + contextPtr->glTextureSubImage3D = ( delegate* )load( + "glTextureSubImage3D" ); + contextPtr->glTransformFeedbackBufferBase = ( delegate* )load( + "glTransformFeedbackBufferBase" ); + contextPtr->glTransformFeedbackBufferRange = ( delegate* )load( + "glTransformFeedbackBufferRange" ); + contextPtr->glUnmapNamedBuffer = ( delegate* )load( + "glUnmapNamedBuffer" ); + contextPtr->glVertexArrayAttribBinding = ( delegate* )load( + "glVertexArrayAttribBinding" ); + contextPtr->glVertexArrayAttribFormat = ( delegate* )load( + "glVertexArrayAttribFormat" ); + contextPtr->glVertexArrayAttribIFormat = ( delegate* )load( + "glVertexArrayAttribIFormat" ); + contextPtr->glVertexArrayAttribLFormat = ( delegate* )load( + "glVertexArrayAttribLFormat" ); + contextPtr->glVertexArrayBindingDivisor = ( delegate* )load( + "glVertexArrayBindingDivisor" ); + contextPtr->glVertexArrayElementBuffer = ( delegate* )load( + "glVertexArrayElementBuffer" ); + contextPtr->glVertexArrayVertexBuffer = ( delegate* )load( + "glVertexArrayVertexBuffer" ); + contextPtr->glVertexArrayVertexBuffers = ( delegate* )load( + "glVertexArrayVertexBuffers" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.5 APIs" ); + } + + internal static unsafe void LoadGLcore46( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core46 ) { + InternalIO.InternalAppendLog( + "The core version 4.6 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glMultiDrawArraysIndirectCount = ( delegate* )load( + "glMultiDrawArraysIndirectCount" ); + contextPtr->glMultiDrawElementsIndirectCount = ( delegate* )load( + "glMultiDrawElementsIndirectCount" ); + contextPtr->glPolygonOffsetClamp = ( delegate* )load( + "glPolygonOffsetClamp" ); + contextPtr->glSpecializeShader = ( delegate* )load( + "glSpecializeShader" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.6 APIs" ); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glApiManagerConst.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glApiManagerConst.cs new file mode 100644 index 00000000..f3ccd5c3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glApiManagerConst.cs @@ -0,0 +1,688 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Common/Graphics/OpenGL/glClampf.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glClampf.cs new file mode 100644 index 00000000..9151b666 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glClampf.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glClampf.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.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + /// + /// OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + /// + [StructLayout( LayoutKind.Sequential )] + public struct GLclampf + { + + public float value; + + public GLclampf( float a ) + { + value = a; + } + + public static explicit operator float( GLclampf v ) + { + return v.value; + } + + public static explicit operator GLclampf( float v ) + { + return new GLclampf( v ); + } + + } + + /// + /// OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + /// [0,1]. + /// + [StructLayout( LayoutKind.Sequential )] + public struct GLclampd + { + + public double value; + + public GLclampd( double a ) + { + value = a; + } + + public static explicit operator double( GLclampd v ) + { + return v.value; + } + + public static explicit operator GLclampd( double v ) + { + return new GLclampd( v ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glConst.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glConst.cs new file mode 100644 index 00000000..7f2f8355 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glConst.cs @@ -0,0 +1,4862 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glConst.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.Drawing; + +namespace StgSharp.Graphics.OpenGL +{ + //rename types in style of glConst + + public static unsafe class glConst + { + + #region glfw + + public const int GLFW_VERSION_MAJOR = 3; + public const int GLFW_VERSION_MINOR = 3; + public const int GLFW_VERSION_REVISION = 8; + public const int GLFW_TRUE = 1; + public const int GLFW_FALSE = 0; + public const int GLFW_RELEASE = 0; + public const int GLFW_PRESS = 1; + public const int GLFW_REPEAT = 2; + public const int GLFW_HAT_CENTERED = 0; + public const int GLFW_HAT_UP = 1; + public const int GLFW_HAT_RIGHT = 2; + public const int GLFW_HAT_DOWN = 4; + public const int GLFW_HAT_LEFT = 8; + public const int GLFW_HAT_RIGHT_UP = GLFW_HAT_RIGHT | GLFW_HAT_UP; + public const int GLFW_HAT_RIGHT_DOWN = GLFW_HAT_RIGHT | GLFW_HAT_DOWN; + public const int GLFW_HAT_LEFT_UP = GLFW_HAT_LEFT | GLFW_HAT_UP; + public const int GLFW_HAT_LEFT_DOWN = GLFW_HAT_LEFT | GLFW_HAT_DOWN; + public const int GLFW_KEY_UNKNOWN = -1; + public const int GLFW_KEY_SPACE = 32; + public const int GLFW_KEY_APOSTROPHE = 39; + public const int GLFW_KEY_COMMA = 44; + public const int GLFW_KEY_MINUS = 45; + public const int GLFW_KEY_PERIOD = 46; + public const int GLFW_KEY_SLASH = 47; + public const int GLFW_KEY_0 = 48; + public const int GLFW_KEY_1 = 49; + public const int GLFW_KEY_2 = 50; + public const int GLFW_KEY_3 = 51; + public const int GLFW_KEY_4 = 52; + public const int GLFW_KEY_5 = 53; + public const int GLFW_KEY_6 = 54; + public const int GLFW_KEY_7 = 55; + public const int GLFW_KEY_8 = 56; + public const int GLFW_KEY_9 = 57; + public const int GLFW_KEY_SEMICOLON = 59; + public const int GLFW_KEY_EQUAL = 61; + public const int GLFW_KEY_A = 65; + public const int GLFW_KEY_B = 66; + public const int GLFW_KEY_C = 67; + public const int GLFW_KEY_D = 68; + public const int GLFW_KEY_E = 69; + public const int GLFW_KEY_F = 70; + public const int GLFW_KEY_G = 71; + public const int GLFW_KEY_H = 72; + public const int GLFW_KEY_I = 73; + public const int GLFW_KEY_J = 74; + public const int GLFW_KEY_K = 75; + public const int GLFW_KEY_L = 76; + public const int GLFW_KEY_M = 77; + public const int GLFW_KEY_N = 78; + public const int GLFW_KEY_O = 79; + public const int GLFW_KEY_P = 80; + public const int GLFW_KEY_Q = 81; + public const int GLFW_KEY_R = 82; + public const int GLFW_KEY_S = 83; + public const int GLFW_KEY_T = 84; + public const int GLFW_KEY_U = 85; + public const int GLFW_KEY_V = 86; + public const int GLFW_KEY_W = 87; + public const int GLFW_KEY_X = 88; + public const int GLFW_KEY_Y = 89; + public const int GLFW_KEY_Z = 90; + public const int GLFW_KEY_LEFT_BRACKET = 91; + public const int GLFW_KEY_BACKSLASH = 92; + public const int GLFW_KEY_RIGHT_BRACKET = 93; + public const int GLFW_KEY_GRAVE_ACCENT = 96; + public const int GLFW_KEY_WORLD_1 = 161; + public const int GLFW_KEY_WORLD_2 = 162; + public const int GLFW_KEY_ESCAPE = 256; + public const int GLFW_KEY_ENTER = 257; + public const int GLFW_KEY_TAB = 258; + public const int GLFW_KEY_BACKSPACE = 259; + public const int GLFW_KEY_INSERT = 260; + public const int GLFW_KEY_DELETE = 261; + public const int GLFW_KEY_RIGHT = 262; + public const int GLFW_KEY_LEFT = 263; + public const int GLFW_KEY_DOWN = 264; + public const int GLFW_KEY_UP = 265; + public const int GLFW_KEY_PAGE_UP = 266; + public const int GLFW_KEY_PAGE_DOWN = 267; + public const int GLFW_KEY_HOME = 268; + public const int GLFW_KEY_END = 269; + public const int GLFW_KEY_CAPS_LOCK = 280; + public const int GLFW_KEY_SCROLL_LOCK = 281; + public const int GLFW_KEY_NUM_LOCK = 282; + public const int GLFW_KEY_PRINT_SCREEN = 283; + public const int GLFW_KEY_PAUSE = 284; + public const int GLFW_KEY_F1 = 290; + public const int GLFW_KEY_F2 = 291; + public const int GLFW_KEY_F3 = 292; + public const int GLFW_KEY_F4 = 293; + public const int GLFW_KEY_F5 = 294; + public const int GLFW_KEY_F6 = 295; + public const int GLFW_KEY_F7 = 296; + public const int GLFW_KEY_F8 = 297; + public const int GLFW_KEY_F9 = 298; + public const int GLFW_KEY_F10 = 299; + public const int GLFW_KEY_F11 = 300; + public const int GLFW_KEY_F12 = 301; + public const int GLFW_KEY_F13 = 302; + public const int GLFW_KEY_F14 = 303; + public const int GLFW_KEY_F15 = 304; + public const int GLFW_KEY_F16 = 305; + public const int GLFW_KEY_F17 = 306; + public const int GLFW_KEY_F18 = 307; + public const int GLFW_KEY_F19 = 308; + public const int GLFW_KEY_F20 = 309; + public const int GLFW_KEY_F21 = 310; + public const int GLFW_KEY_F22 = 311; + public const int GLFW_KEY_F23 = 312; + public const int GLFW_KEY_F24 = 313; + public const int GLFW_KEY_F25 = 314; + public const int GLFW_KEY_KP_0 = 320; + public const int GLFW_KEY_KP_1 = 321; + public const int GLFW_KEY_KP_2 = 322; + public const int GLFW_KEY_KP_3 = 323; + public const int GLFW_KEY_KP_4 = 324; + public const int GLFW_KEY_KP_5 = 325; + public const int GLFW_KEY_KP_6 = 326; + public const int GLFW_KEY_KP_7 = 327; + public const int GLFW_KEY_KP_8 = 328; + public const int GLFW_KEY_KP_9 = 329; + public const int GLFW_KEY_KP_DECIMAL = 330; + public const int GLFW_KEY_KP_DIVIDE = 331; + public const int GLFW_KEY_KP_MULTIPLY = 332; + public const int GLFW_KEY_KP_SUBTRACT = 333; + public const int GLFW_KEY_KP_ADD = 334; + public const int GLFW_KEY_KP_ENTER = 335; + public const int GLFW_KEY_KP_EQUAL = 336; + public const int GLFW_KEY_LEFT_SHIFT = 340; + public const int GLFW_KEY_LEFT_CONTROL = 341; + public const int GLFW_KEY_LEFT_ALT = 342; + public const int GLFW_KEY_LEFT_SUPER = 343; + public const int GLFW_KEY_RIGHT_SHIFT = 344; + public const int GLFW_KEY_RIGHT_CONTROL = 345; + public const int GLFW_KEY_RIGHT_ALT = 346; + public const int GLFW_KEY_RIGHT_SUPER = 347; + public const int GLFW_KEY_MENU = 348; + public const int GLFW_KEY_LAST = GLFW_KEY_MENU; + public const int GLFW_MOD_SHIFT = 0x0001; + public const int GLFW_MOD_CONTROL = 0x0002; + public const int GLFW_MOD_ALT = 0x0004; + public const int GLFW_MOD_SUPER = 0x0008; + public const int GLFW_MOD_CAPS_LOCK = 0x0010; + public const int GLFW_MOD_NUM_LOCK = 0x0020; + public const int GLFW_MOUSE_BUTTON_1 = 0; + public const int GLFW_MOUSE_BUTTON_2 = 1; + public const int GLFW_MOUSE_BUTTON_3 = 2; + public const int GLFW_MOUSE_BUTTON_4 = 3; + public const int GLFW_MOUSE_BUTTON_5 = 4; + public const int GLFW_MOUSE_BUTTON_6 = 5; + public const int GLFW_MOUSE_BUTTON_7 = 6; + public const int GLFW_MOUSE_BUTTON_8 = 7; + public const int GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8; + public const int GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1; + public const int GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2; + public const int GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3; + public const int GLFW_JOYSTICK_1 = 0; + public const int GLFW_JOYSTICK_2 = 1; + public const int GLFW_JOYSTICK_3 = 2; + public const int GLFW_JOYSTICK_4 = 3; + public const int GLFW_JOYSTICK_5 = 4; + public const int GLFW_JOYSTICK_6 = 5; + public const int GLFW_JOYSTICK_7 = 6; + public const int GLFW_JOYSTICK_8 = 7; + public const int GLFW_JOYSTICK_9 = 8; + public const int GLFW_JOYSTICK_10 = 9; + public const int GLFW_JOYSTICK_11 = 10; + public const int GLFW_JOYSTICK_12 = 11; + public const int GLFW_JOYSTICK_13 = 12; + public const int GLFW_JOYSTICK_14 = 13; + public const int GLFW_JOYSTICK_15 = 14; + public const int GLFW_JOYSTICK_16 = 15; + public const int GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16; + public const int GLFW_GAMEPAD_BUTTON_A = 0; + public const int GLFW_GAMEPAD_BUTTON_B = 1; + public const int GLFW_GAMEPAD_BUTTON_X = 2; + public const int GLFW_GAMEPAD_BUTTON_Y = 3; + public const int GLFW_GAMEPAD_BUTTON_LEFT_BUMPER = 4; + public const int GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER = 5; + public const int GLFW_GAMEPAD_BUTTON_BACK = 6; + public const int GLFW_GAMEPAD_BUTTON_START = 7; + public const int GLFW_GAMEPAD_BUTTON_GUIDE = 8; + public const int GLFW_GAMEPAD_BUTTON_LEFT_THUMB = 9; + public const int GLFW_GAMEPAD_BUTTON_RIGHT_THUMB = 10; + public const int GLFW_GAMEPAD_BUTTON_DPAD_UP = 11; + public const int GLFW_GAMEPAD_BUTTON_DPAD_RIGHT = 12; + public const int GLFW_GAMEPAD_BUTTON_DPAD_DOWN = 13; + public const int GLFW_GAMEPAD_BUTTON_DPAD_LEFT = 14; + public const int GLFW_GAMEPAD_BUTTON_LAST = GLFW_GAMEPAD_BUTTON_DPAD_LEFT; + public const int GLFW_GAMEPAD_BUTTON_CROSS = GLFW_GAMEPAD_BUTTON_A; + public const int GLFW_GAMEPAD_BUTTON_CIRCLE = GLFW_GAMEPAD_BUTTON_B; + public const int GLFW_GAMEPAD_BUTTON_SQUARE = GLFW_GAMEPAD_BUTTON_X; + public const int GLFW_GAMEPAD_BUTTON_TRIANGLE = GLFW_GAMEPAD_BUTTON_Y; + public const int GLFW_GAMEPAD_AXIS_LEFT_X = 0; + public const int GLFW_GAMEPAD_AXIS_LEFT_Y = 1; + public const int GLFW_GAMEPAD_AXIS_RIGHT_X = 2; + public const int GLFW_GAMEPAD_AXIS_RIGHT_Y = 3; + public const int GLFW_GAMEPAD_AXIS_LEFT_TRIGGER = 4; + public const int GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER = 5; + public const int GLFW_GAMEPAD_AXIS_LAST = GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER; + public const int GLFW_NO_ERROR = 0; + public const int GLFW_NOT_INITIALIZED = 0x00010001; + public const int GLFW_NO_CURRENT_CONTEXT = 0x00010002; + public const int GLFW_INVALID_ENUM = 0x00010003; + public const int GLFW_INVALID_VALUE = 0x00010004; + public const int GLFW_OUT_OF_MEMORY = 0x00010005; + public const int GLFW_API_UNAVAILABLE = 0x00010006; + public const int GLFW_VERSION_UNAVAILABLE = 0x00010007; + public const int GLFW_PLATFORM_ERROR = 0x00010008; + public const int GLFW_FORMAT_UNAVAILABLE = 0x00010009; + public const int GLFW_NO_WINDOW_CONTEXT = 0x0001000A; + public const int GLFW_FOCUSED = 0x00020001; + public const int GLFW_ICONIFIED = 0x00020002; + public const int GLFW_RESIZABLE = 0x00020003; + public const int GLFW_VISIBLE = 0x00020004; + public const int GLFW_DECORATED = 0x00020005; + public const int GLFW_AUTO_ICONIFY = 0x00020006; + public const int GLFW_FLOATING = 0x00020007; + public const int GLFW_MAXIMIZED = 0x00020008; + public const int GLFW_CENTER_CURSOR = 0x00020009; + public const int GLFW_TRANSPARENT_FRAMEBUFFER = 0x0002000A; + public const int GLFW_HOVERED = 0x0002000B; + public const int GLFW_FOCUS_ON_SHOW = 0x0002000C; + public const int GLFW_RED_BITS = 0x00021001; + public const int GLFW_GREEN_BITS = 0x00021002; + public const int GLFW_BLUE_BITS = 0x00021003; + public const int GLFW_ALPHA_BITS = 0x00021004; + public const int GLFW_DEPTH_BITS = 0x00021005; + public const int GLFW_STENCIL_BITS = 0x00021006; + public const int GLFW_ACCUM_RED_BITS = 0x00021007; + public const int GLFW_ACCUM_GREEN_BITS = 0x00021008; + public const int GLFW_ACCUM_BLUE_BITS = 0x00021009; + public const int GLFW_ACCUM_ALPHA_BITS = 0x0002100A; + public const int GLFW_AUX_BUFFERS = 0x0002100B; + public const int GLFW_STEREO = 0x0002100C; + public const int GLFW_SAMPLES = 0x0002100D; + public const int GLFW_SRGB_CAPABLE = 0x0002100E; + public const int GLFW_REFRESH_RATE = 0x0002100F; + public const int GLFW_DOUBLEBUFFER = 0x00021010; + public const int GLFW_CLIENT_API = 0x00022001; + public const int GLFW_CONTEXT_VERSION_MAJOR = 0x00022002; + public const int GLFW_CONTEXT_VERSION_MINOR = 0x00022003; + public const int GLFW_CONTEXT_REVISION = 0x00022004; + public const int GLFW_CONTEXT_ROBUSTNESS = 0x00022005; + public const int GLFW_OPENGL_FORWARD_COMPAT = 0x00022006; + public const int GLFW_OPENGL_DEBUG_CONTEXT = 0x00022007; + public const int GLFW_OPENGL_PROFILE = 0x00022008; + public const int GLFW_CONTEXT_RELEASE_BEHAVIOR = 0x00022009; + public const int GLFW_CONTEXT_NO_ERROR = 0x0002200A; + public const int GLFW_CONTEXT_CREATION_API = 0x0002200B; + public const int GLFW_SCALE_TO_MONITOR = 0x0002200C; + public const int GLFW_COCOA_RETINA_FRAMEBUFFER = 0x00023001; + public const int GLFW_COCOA_FRAME_NAME = 0x00023002; + public const int GLFW_COCOA_GRAPHICS_SWITCHING = 0x00023003; + public const int GLFW_X11_CLASS_NAME = 0x00024001; + public const int GLFW_X11_INSTANCE_NAME = 0x00024002; + public const int GLFW_NO_API = 0; + public const int GLFW_OPENGL_API = 0x00030001; + public const int GLFW_OPENGL_ES_API = 0x00030002; + public const int GLFW_NO_ROBUSTNESS = 0; + public const int GLFW_NO_RESET_NOTIFICATION = 0x00031001; + public const int GLFW_LOSE_CONTEXT_ON_RESET = 0x00031002; + public const int GLFW_OPENGL_ANY_PROFILE = 0; + public const int GLFW_OPENGL_CORE_PROFILE = 0x00032001; + public const int GLFW_OPENGL_COMPAT_PROFILE = 0x00032002; + public const int GLFW_CURSOR = 0x00033001; + public const int GLFW_STICKY_KEYS = 0x00033002; + public const int GLFW_STICKY_MOUSE_BUTTONS = 0x00033003; + public const int GLFW_LOCK_KEY_MODS = 0x00033004; + public const int GLFW_RAW_MOUSE_MOTION = 0x00033005; + public const int GLFW_CURSOR_NORMAL = 0x00034001; + public const int GLFW_CURSOR_HIDDEN = 0x00034002; + public const int GLFW_CURSOR_DISABLED = 0x00034003; + public const int GLFW_ANY_RELEASE_BEHAVIOR = 0; + public const int GLFW_RELEASE_BEHAVIOR_FLUSH = 0x00035001; + public const int GLFW_RELEASE_BEHAVIOR_NONE = 0x00035002; + public const int GLFW_NATIVE_CONTEXT_API = 0x00036001; + public const int GLFW_EGL_CONTEXT_API = 0x00036002; + public const int GLFW_OSMESA_CONTEXT_API = 0x00036003; + public const int GLFW_ARROW_CURSOR = 0x00036001; + public const int GLFW_IBEAM_CURSOR = 0x00036002; + public const int GLFW_CROSSHAIR_CURSOR = 0x00036003; + public const int GLFW_HAND_CURSOR = 0x00036004; + public const int GLFW_HRESIZE_CURSOR = 0x00036005; + public const int GLFW_VRESIZE_CURSOR = 0x00036006; + public const int GLFW_CONNECTED = 0x00040001; + public const int GLFW_DISCONNECTED = 0x00040002; + public const int GLFW_JOYSTICK_HAT_BUTTONS = 0x00050001; + public const int GLFW_COCOA_CHDIR_RESOURCES = 0x00051001; + public const int GLFW_COCOA_MENUBAR = 0x00051002; + public const int GLFW_DONT_CARE = -1; + + #endregion + + #region glad + + public const int _1PASS_EXT = 0x80A1; + public const int _1PASS_SGIS = 0x80A1; + public const int _2PASS_0_EXT = 0x80A2; + public const int _2PASS_0_SGIS = 0x80A2; + public const int _2PASS_1_EXT = 0x80A3; + public const int _2PASS_1_SGIS = 0x80A3; + public const int _2X_BIT_ATI = 0x00000001; + public const int _422_AVERAGE_EXT = 0x80CE; + public const int _422_EXT = 0x80CC; + public const int _422_REV_AVERAGE_EXT = 0x80CF; + public const int _422_REV_EXT = 0x80CD; + public const int _4PASS_0_EXT = 0x80A4; + public const int _4PASS_0_SGIS = 0x80A4; + public const int _4PASS_1_EXT = 0x80A5; + public const int _4PASS_1_SGIS = 0x80A5; + public const int _4PASS_2_EXT = 0x80A6; + public const int _4PASS_2_SGIS = 0x80A6; + public const int _4PASS_3_EXT = 0x80A7; + public const int _4PASS_3_SGIS = 0x80A7; + public const int _4X_BIT_ATI = 0x00000002; + public const int _8X_BIT_ATI = 0x00000004; + public const int ABGR_EXT = 0x8000; + public const int ACCUM_ADJACENT_PAIRS_NV = 0x90AD; + public const int ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9; + public const int ACTIVE_ATTRIBUTES = 0x8B89; + public const int ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; + public const int ACTIVE_PROGRAM = 0x8259; + public const int ACTIVE_PROGRAM_EXT = 0x8B8D; + public const int ACTIVE_RESOURCES = 0x92F5; + public const int ACTIVE_STENCIL_FACE_EXT = 0x8911; + public const int ACTIVE_SUBROUTINES = 0x8DE5; + public const int ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48; + public const int ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6; + public const int ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47; + public const int ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49; + public const int ACTIVE_TEXTURE = 0x84E0; + public const int ACTIVE_TEXTURE_ARB = 0x84E0; + public const int ACTIVE_UNIFORMS = 0x8B86; + public const int ACTIVE_UNIFORM_BLOCKS = 0x8A36; + public const int ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35; + public const int ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; + public const int ACTIVE_VARIABLES = 0x9305; + public const int ACTIVE_VARYINGS_NV = 0x8C81; + public const int ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82; + public const int ACTIVE_VERTEX_UNITS_ARB = 0x86A5; + public const int ADD_ATI = 0x8963; + public const int ADD_SIGNED_ARB = 0x8574; + public const int ADD_SIGNED_EXT = 0x8574; + public const int ADJACENT_PAIRS_NV = 0x90AE; + public const int AFFINE_2D_NV = 0x9092; + public const int AFFINE_3D_NV = 0x9094; + public const int ALIASED_LINE_WIDTH_RANGE = 0x846E; + public const int ALLOW_DRAW_FRG_HINT_PGI = 0x1A210; + public const int ALLOW_DRAW_MEM_HINT_PGI = 0x1A211; + public const int ALLOW_DRAW_OBJ_HINT_PGI = 0x1A20E; + public const int ALLOW_DRAW_WIN_HINT_PGI = 0x1A20F; + public const uint ALL_BARRIER_BITS = 0xFFFFFFFF; + public const uint ALL_BARRIER_BITS_EXT = 0xFFFFFFFF; + public const int ALL_COMPLETED_NV = 0x84F2; + public const uint ALL_PIXELS_AMD = 0xFFFFFFFF; + public const uint ALL_SHADER_BITS = 0xFFFFFFFF; + public const int ALL_STATIC_DATA_IBM = 103060; + public const int ALPHA = 0x1906; + public const int ALPHA12_EXT = 0x803D; + public const int ALPHA16F_ARB = 0x881C; + public const int ALPHA16F_EXT = 0x881C; + public const int ALPHA16I_EXT = 0x8D8A; + public const int ALPHA16UI_EXT = 0x8D78; + public const int ALPHA16_EXT = 0x803E; + public const int ALPHA16_SNORM = 0x9018; + public const int ALPHA32F_ARB = 0x8816; + public const int ALPHA32F_EXT = 0x8816; + public const int ALPHA32I_EXT = 0x8D84; + public const int ALPHA32UI_EXT = 0x8D72; + public const int ALPHA4_EXT = 0x803B; + public const int ALPHA8I_EXT = 0x8D90; + public const int ALPHA8UI_EXT = 0x8D7E; + public const int ALPHA8_EXT = 0x803C; + public const int ALPHA8_SNORM = 0x9014; + public const int ALPHA_FLOAT16_APPLE = 0x881C; + public const int ALPHA_FLOAT16_ATI = 0x881C; + public const int ALPHA_FLOAT32_APPLE = 0x8816; + public const int ALPHA_FLOAT32_ATI = 0x8816; + public const int ALPHA_INTEGER_EXT = 0x8D97; + public const int ALPHA_MAX_CLAMP_INGR = 0x8567; + public const int ALPHA_MAX_SGIX = 0x8321; + public const int ALPHA_MIN_CLAMP_INGR = 0x8563; + public const int ALPHA_MIN_SGIX = 0x8320; + public const int ALPHA_REF_COMMAND_NV = 0x000F; + public const int ALPHA_SNORM = 0x9010; + public const int ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV = 0x934D; + public const int ALPHA_TO_COVERAGE_DITHER_DISABLE_NV = 0x934F; + public const int ALPHA_TO_COVERAGE_DITHER_ENABLE_NV = 0x934E; + public const int ALPHA_TO_COVERAGE_DITHER_MODE_NV = 0x92BF; + public const int ALREADY_SIGNALED = 0x911A; + public const int ALWAYS = 0x0207; + public const int ALWAYS_FAST_HINT_PGI = 0x1A20C; + public const int ALWAYS_SOFT_HINT_PGI = 0x1A20D; + public const int AND = 0x1501; + public const int AND_INVERTED = 0x1504; + public const int AND_REVERSE = 0x1502; + public const int ANY_SAMPLES_PASSED = 0x8C2F; + public const int ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; + public const int ARC_TO_NV = 0xFE; + public const int ARRAY_BUFFER = 0x8892; + public const int ARRAY_BUFFER_ARB = 0x8892; + public const int ARRAY_BUFFER_BINDING = 0x8894; + public const int ARRAY_BUFFER_BINDING_ARB = 0x8894; + public const int ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x81A9; + public const int ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x81A8; + public const int ARRAY_OBJECT_BUFFER_ATI = 0x8766; + public const int ARRAY_OBJECT_OFFSET_ATI = 0x8767; + public const int ARRAY_SIZE = 0x92FB; + public const int ARRAY_STRIDE = 0x92FE; + public const int ASYNC_DRAW_PIXELS_SGIX = 0x835D; + public const int ASYNC_HISTOGRAM_SGIX = 0x832C; + public const int ASYNC_MARKER_SGIX = 0x8329; + public const int ASYNC_READ_PIXELS_SGIX = 0x835E; + public const int ASYNC_TEX_IMAGE_SGIX = 0x835C; + public const int ATOMIC_COUNTER_BARRIER_BIT = 0x00001000; + public const int ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000; + public const int ATOMIC_COUNTER_BUFFER = 0x92C0; + public const int ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x92C5; + public const int ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x92C6; + public const int ATOMIC_COUNTER_BUFFER_BINDING = 0x92C1; + public const int ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x92C4; + public const int ATOMIC_COUNTER_BUFFER_INDEX = 0x9301; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x92CB; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x92CA; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV = 0x959E; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV = 0x959F; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x92C8; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x92C7; + public const int ATOMIC_COUNTER_BUFFER_SIZE = 0x92C3; + public const int ATOMIC_COUNTER_BUFFER_START = 0x92C2; + public const int ATTACHED_MEMORY_OBJECT_NV = 0x95A4; + public const int ATTACHED_MEMORY_OFFSET_NV = 0x95A5; + public const int ATTACHED_SHADERS = 0x8B85; + public const int ATTENUATION_EXT = 0x834D; + public const int ATTRIBUTE_ADDRESS_COMMAND_NV = 0x0009; + public const int ATTRIB_ARRAY_POINTER_NV = 0x8645; + public const int ATTRIB_ARRAY_SIZE_NV = 0x8623; + public const int ATTRIB_ARRAY_STRIDE_NV = 0x8624; + public const int ATTRIB_ARRAY_TYPE_NV = 0x8625; + public const int AUTO_GENERATE_MIPMAP = 0x8295; + public const int AUX_DEPTH_STENCIL_APPLE = 0x8A14; + public const int AVERAGE_EXT = 0x8335; + public const int AVERAGE_HP = 0x8160; + public const int BACK = 0x0405; + public const int BACK_LEFT = 0x0402; + public const int BACK_NORMALS_HINT_PGI = 0x1A223; + public const int BACK_PRIMARY_COLOR_NV = 0x8C77; + public const int BACK_RIGHT = 0x0403; + public const int BACK_SECONDARY_COLOR_NV = 0x8C78; + public const int BEVEL_NV = 0x90A6; + public const int BGR = 0x80E0; + public const int BGRA = 0x80E1; + public const int BGRA8_EXT = 0x93A1; + public const int BGRA_EXT = 0x80E1; + public const int BGRA_INTEGER = 0x8D9B; + public const int BGRA_INTEGER_EXT = 0x8D9B; + public const int BGR_EXT = 0x80E0; + public const int BGR_INTEGER = 0x8D9A; + public const int BGR_INTEGER_EXT = 0x8D9A; + public const int BIAS_BIT_ATI = 0x00000008; + public const int BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541; + public const int BINORMAL_ARRAY_EXT = 0x843A; + public const int BINORMAL_ARRAY_POINTER_EXT = 0x8443; + public const int BINORMAL_ARRAY_STRIDE_EXT = 0x8441; + public const int BINORMAL_ARRAY_TYPE_EXT = 0x8440; + public const int BLACKHOLE_RENDER_INTEL = 0x83FC; + public const int BLEND = 0x0BE2; + public const int BLEND_ADVANCED_COHERENT_KHR = 0x9285; + public const int BLEND_ADVANCED_COHERENT_NV = 0x9285; + public const int BLEND_COLOR = 0x8005; + public const int BLEND_COLOR_COMMAND_NV = 0x000B; + public const int BLEND_COLOR_EXT = 0x8005; + public const int BLEND_DST = 0x0BE0; + public const int BLEND_DST_ALPHA = 0x80CA; + public const int BLEND_DST_ALPHA_EXT = 0x80CA; + public const int BLEND_DST_RGB = 0x80C8; + public const int BLEND_DST_RGB_EXT = 0x80C8; + public const int BLEND_EQUATION = 0x8009; + public const int BLEND_EQUATION_ALPHA = 0x883D; + public const int BLEND_EQUATION_ALPHA_EXT = 0x883D; + public const int BLEND_EQUATION_EXT = 0x8009; + public const int BLEND_EQUATION_RGB = 0x8009; + public const int BLEND_EQUATION_RGB_EXT = 0x8009; + public const int BLEND_OVERLAP_NV = 0x9281; + public const int BLEND_PREMULTIPLIED_SRC_NV = 0x9280; + public const int BLEND_SRC = 0x0BE1; + public const int BLEND_SRC_ALPHA = 0x80CB; + public const int BLEND_SRC_ALPHA_EXT = 0x80CB; + public const int BLEND_SRC_RGB = 0x80C9; + public const int BLEND_SRC_RGB_EXT = 0x80C9; + public const int BLOCK_INDEX = 0x92FD; + public const int BLUE = 0x1905; + public const int BLUE_BIT_ATI = 0x00000004; + public const int BLUE_INTEGER = 0x8D96; + public const int BLUE_INTEGER_EXT = 0x8D96; + public const int BLUE_MAX_CLAMP_INGR = 0x8566; + public const int BLUE_MIN_CLAMP_INGR = 0x8562; + public const int BLUE_NV = 0x1905; + public const int BOLD_BIT_NV = 0x01; + public const int BOOL = 0x8B56; + public const int BOOL_ARB = 0x8B56; + public const int BOOL_VEC2 = 0x8B57; + public const int BOOL_VEC2_ARB = 0x8B57; + public const int BOOL_VEC3 = 0x8B58; + public const int BOOL_VEC3_ARB = 0x8B58; + public const int BOOL_VEC4 = 0x8B59; + public const int BOOL_VEC4_ARB = 0x8B59; + public const int BOUNDING_BOX_NV = 0x908D; + public const int BOUNDING_BOX_OF_BOUNDING_BOXES_NV = 0x909C; + public const int BUFFER = 0x82E0; + public const int BUFFER_ACCESS = 0x88BB; + public const int BUFFER_ACCESS_ARB = 0x88BB; + public const int BUFFER_ACCESS_FLAGS = 0x911F; + public const int BUFFER_BINDING = 0x9302; + public const int BUFFER_DATA_SIZE = 0x9303; + public const int BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13; + public const int BUFFER_GPU_ADDRESS_NV = 0x8F1D; + public const int BUFFER_IMMUTABLE_STORAGE = 0x821F; + public const int BUFFER_MAPPED = 0x88BC; + public const int BUFFER_MAPPED_ARB = 0x88BC; + public const int BUFFER_MAP_LENGTH = 0x9120; + public const int BUFFER_MAP_OFFSET = 0x9121; + public const int BUFFER_MAP_POINTER = 0x88BD; + public const int BUFFER_MAP_POINTER_ARB = 0x88BD; + public const int BUFFER_OBJECT_APPLE = 0x85B3; + public const int BUFFER_OBJECT_EXT = 0x9151; + public const int BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12; + public const int BUFFER_SIZE = 0x8764; + public const int BUFFER_SIZE_ARB = 0x8764; + public const int BUFFER_STORAGE_FLAGS = 0x8220; + public const int BUFFER_UPDATE_BARRIER_BIT = 0x00000200; + public const int BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200; + public const int BUFFER_USAGE = 0x8765; + public const int BUFFER_USAGE_ARB = 0x8765; + public const int BUFFER_VARIABLE = 0x92E5; + public const int BUMP_ENVMAP_ATI = 0x877B; + public const int BUMP_NUM_TEX_UNITS_ATI = 0x8777; + public const int BUMP_ROT_MATRIX_ATI = 0x8775; + public const int BUMP_ROT_MATRIX_SIZE_ATI = 0x8776; + public const int BUMP_TARGET_ATI = 0x877C; + public const int BUMP_TEX_UNITS_ATI = 0x8778; + public const int BYTE = 0x1400; + public const int CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183; + public const int CAVEAT_SUPPORT = 0x82B8; + public const int CCW = 0x0901; + public const int CIRCULAR_CCW_ARC_TO_NV = 0xF8; + public const int CIRCULAR_CW_ARC_TO_NV = 0xFA; + public const int CIRCULAR_TANGENT_ARC_TO_NV = 0xFC; + public const int CLAMP_FRAGMENT_COLOR_ARB = 0x891B; + public const int CLAMP_READ_COLOR = 0x891C; + public const int CLAMP_READ_COLOR_ARB = 0x891C; + public const int CLAMP_TO_BORDER = 0x812D; + public const int CLAMP_TO_BORDER_ARB = 0x812D; + public const int CLAMP_TO_BORDER_SGIS = 0x812D; + public const int CLAMP_TO_EDGE = 0x812F; + public const int CLAMP_TO_EDGE_SGIS = 0x812F; + public const int CLAMP_VERTEX_COLOR_ARB = 0x891A; + public const int CLEAR = 0x1500; + public const int CLEAR_BUFFER = 0x82B4; + public const int CLEAR_TEXTURE = 0x9365; + public const int CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1; + public const int CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000; + public const int CLIENT_STORAGE_BIT = 0x0200; + public const int CLIPPING_INPUT_PRIMITIVES = 0x82F6; + public const int CLIPPING_INPUT_PRIMITIVES_ARB = 0x82F6; + public const int CLIPPING_OUTPUT_PRIMITIVES = 0x82F7; + public const int CLIPPING_OUTPUT_PRIMITIVES_ARB = 0x82F7; + public const int CLIP_DEPTH_MODE = 0x935D; + public const int CLIP_DISTANCE0 = 0x3000; + public const int CLIP_DISTANCE1 = 0x3001; + public const int CLIP_DISTANCE2 = 0x3002; + public const int CLIP_DISTANCE3 = 0x3003; + public const int CLIP_DISTANCE4 = 0x3004; + public const int CLIP_DISTANCE5 = 0x3005; + public const int CLIP_DISTANCE6 = 0x3006; + public const int CLIP_DISTANCE7 = 0x3007; + public const int CLIP_DISTANCE_NV = 0x8C7A; + public const int CLIP_FAR_HINT_PGI = 0x1A221; + public const int CLIP_NEAR_HINT_PGI = 0x1A220; + public const int CLIP_ORIGIN = 0x935C; + public const int CLIP_VOLUME_CLIPPING_HINT_EXT = 0x80F0; + public const int CLOSE_PATH_NV = 0x00; + public const int CMYKA_EXT = 0x800D; + public const int CMYK_EXT = 0x800C; + public const int CND0_ATI = 0x896B; + public const int CND_ATI = 0x896A; + public const int COLOR = 0x1800; + public const int COLOR3_BIT_PGI = 0x00010000; + public const int COLOR4_BIT_PGI = 0x00020000; + public const int COLORBURN_KHR = 0x929A; + public const int COLORBURN_NV = 0x929A; + public const int COLORDODGE_KHR = 0x9299; + public const int COLORDODGE_NV = 0x9299; + public const int COLOR_ALPHA_PAIRING_ATI = 0x8975; + public const int COLOR_ARRAY_ADDRESS_NV = 0x8F23; + public const int COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898; + public const int COLOR_ARRAY_COUNT_EXT = 0x8084; + public const int COLOR_ARRAY_EXT = 0x8076; + public const int COLOR_ARRAY_LENGTH_NV = 0x8F2D; + public const int COLOR_ARRAY_LIST_IBM = 103072; + public const int COLOR_ARRAY_LIST_STRIDE_IBM = 103082; + public const int COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F7; + public const int COLOR_ARRAY_POINTER_EXT = 0x8090; + public const int COLOR_ARRAY_SIZE_EXT = 0x8081; + public const int COLOR_ARRAY_STRIDE_EXT = 0x8083; + public const int COLOR_ARRAY_TYPE_EXT = 0x8082; + public const int COLOR_ATTACHMENT0 = 0x8CE0; + public const int COLOR_ATTACHMENT0_EXT = 0x8CE0; + public const int COLOR_ATTACHMENT1 = 0x8CE1; + public const int COLOR_ATTACHMENT10 = 0x8CEA; + public const int COLOR_ATTACHMENT10_EXT = 0x8CEA; + public const int COLOR_ATTACHMENT11 = 0x8CEB; + public const int COLOR_ATTACHMENT11_EXT = 0x8CEB; + public const int COLOR_ATTACHMENT12 = 0x8CEC; + public const int COLOR_ATTACHMENT12_EXT = 0x8CEC; + public const int COLOR_ATTACHMENT13 = 0x8CED; + public const int COLOR_ATTACHMENT13_EXT = 0x8CED; + public const int COLOR_ATTACHMENT14 = 0x8CEE; + public const int COLOR_ATTACHMENT14_EXT = 0x8CEE; + public const int COLOR_ATTACHMENT15 = 0x8CEF; + public const int COLOR_ATTACHMENT15_EXT = 0x8CEF; + public const int COLOR_ATTACHMENT16 = 0x8CF0; + public const int COLOR_ATTACHMENT17 = 0x8CF1; + public const int COLOR_ATTACHMENT18 = 0x8CF2; + public const int COLOR_ATTACHMENT19 = 0x8CF3; + public const int COLOR_ATTACHMENT1_EXT = 0x8CE1; + public const int COLOR_ATTACHMENT2 = 0x8CE2; + public const int COLOR_ATTACHMENT20 = 0x8CF4; + public const int COLOR_ATTACHMENT21 = 0x8CF5; + public const int COLOR_ATTACHMENT22 = 0x8CF6; + public const int COLOR_ATTACHMENT23 = 0x8CF7; + public const int COLOR_ATTACHMENT24 = 0x8CF8; + public const int COLOR_ATTACHMENT25 = 0x8CF9; + public const int COLOR_ATTACHMENT26 = 0x8CFA; + public const int COLOR_ATTACHMENT27 = 0x8CFB; + public const int COLOR_ATTACHMENT28 = 0x8CFC; + public const int COLOR_ATTACHMENT29 = 0x8CFD; + public const int COLOR_ATTACHMENT2_EXT = 0x8CE2; + public const int COLOR_ATTACHMENT3 = 0x8CE3; + public const int COLOR_ATTACHMENT30 = 0x8CFE; + public const int COLOR_ATTACHMENT31 = 0x8CFF; + public const int COLOR_ATTACHMENT3_EXT = 0x8CE3; + public const int COLOR_ATTACHMENT4 = 0x8CE4; + public const int COLOR_ATTACHMENT4_EXT = 0x8CE4; + public const int COLOR_ATTACHMENT5 = 0x8CE5; + public const int COLOR_ATTACHMENT5_EXT = 0x8CE5; + public const int COLOR_ATTACHMENT6 = 0x8CE6; + public const int COLOR_ATTACHMENT6_EXT = 0x8CE6; + public const int COLOR_ATTACHMENT7 = 0x8CE7; + public const int COLOR_ATTACHMENT7_EXT = 0x8CE7; + public const int COLOR_ATTACHMENT8 = 0x8CE8; + public const int COLOR_ATTACHMENT8_EXT = 0x8CE8; + public const int COLOR_ATTACHMENT9 = 0x8CE9; + public const int COLOR_ATTACHMENT9_EXT = 0x8CE9; + public const int COLOR_BUFFER_BIT = 0x00004000; + public const int COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x8835; + public const int COLOR_CLEAR_VALUE = 0x0C22; + public const int COLOR_COMPONENTS = 0x8283; + public const int COLOR_ENCODING = 0x8296; + public const int COLOR_FLOAT_APPLE = 0x8A0F; + public const int COLOR_INDEX12_EXT = 0x80E6; + public const int COLOR_INDEX16_EXT = 0x80E7; + public const int COLOR_INDEX1_EXT = 0x80E2; + public const int COLOR_INDEX2_EXT = 0x80E3; + public const int COLOR_INDEX4_EXT = 0x80E4; + public const int COLOR_INDEX8_EXT = 0x80E5; + public const int COLOR_LOGIC_OP = 0x0BF2; + public const int COLOR_MATRIX_SGI = 0x80B1; + public const int COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2; + public const int COLOR_RENDERABLE = 0x8286; + public const int COLOR_SAMPLES_NV = 0x8E20; + public const int COLOR_SUM_ARB = 0x8458; + public const int COLOR_SUM_CLAMP_NV = 0x854F; + public const int COLOR_SUM_EXT = 0x8458; + public const int COLOR_TABLE_ALPHA_SIZE_SGI = 0x80DD; + public const int COLOR_TABLE_BIAS_SGI = 0x80D7; + public const int COLOR_TABLE_BLUE_SIZE_SGI = 0x80DC; + public const int COLOR_TABLE_FORMAT_SGI = 0x80D8; + public const int COLOR_TABLE_GREEN_SIZE_SGI = 0x80DB; + public const int COLOR_TABLE_INTENSITY_SIZE_SGI = 0x80DF; + public const int COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x80DE; + public const int COLOR_TABLE_RED_SIZE_SGI = 0x80DA; + public const int COLOR_TABLE_SCALE_SGI = 0x80D6; + public const int COLOR_TABLE_SGI = 0x80D0; + public const int COLOR_TABLE_WIDTH_SGI = 0x80D9; + public const int COLOR_WRITEMASK = 0x0C23; + public const int COMBINE4_NV = 0x8503; + public const int COMBINER0_NV = 0x8550; + public const int COMBINER1_NV = 0x8551; + public const int COMBINER2_NV = 0x8552; + public const int COMBINER3_NV = 0x8553; + public const int COMBINER4_NV = 0x8554; + public const int COMBINER5_NV = 0x8555; + public const int COMBINER6_NV = 0x8556; + public const int COMBINER7_NV = 0x8557; + public const int COMBINER_AB_DOT_PRODUCT_NV = 0x8545; + public const int COMBINER_AB_OUTPUT_NV = 0x854A; + public const int COMBINER_BIAS_NV = 0x8549; + public const int COMBINER_CD_DOT_PRODUCT_NV = 0x8546; + public const int COMBINER_CD_OUTPUT_NV = 0x854B; + public const int COMBINER_COMPONENT_USAGE_NV = 0x8544; + public const int COMBINER_INPUT_NV = 0x8542; + public const int COMBINER_MAPPING_NV = 0x8543; + public const int COMBINER_MUX_SUM_NV = 0x8547; + public const int COMBINER_SCALE_NV = 0x8548; + public const int COMBINER_SUM_OUTPUT_NV = 0x854C; + public const int COMBINE_ALPHA_ARB = 0x8572; + public const int COMBINE_ALPHA_EXT = 0x8572; + public const int COMBINE_ARB = 0x8570; + public const int COMBINE_EXT = 0x8570; + public const int COMBINE_RGB_ARB = 0x8571; + public const int COMBINE_RGB_EXT = 0x8571; + public const int COMMAND_BARRIER_BIT = 0x00000040; + public const int COMMAND_BARRIER_BIT_EXT = 0x00000040; + public const int COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E; + public const int COMPARE_REF_TO_TEXTURE = 0x884E; + public const int COMPARE_R_TO_TEXTURE_ARB = 0x884E; + public const int COMPATIBLE_SUBROUTINES = 0x8E4B; + public const int COMPILE_STATUS = 0x8B81; + public const int COMPLETION_STATUS_ARB = 0x91B1; + public const int COMPLETION_STATUS_KHR = 0x91B1; + public const int COMPRESSED_ALPHA_ARB = 0x84E9; + public const int COMPRESSED_INTENSITY_ARB = 0x84EC; + public const int COMPRESSED_LUMINANCE_ALPHA_ARB = 0x84EB; + public const int COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C72; + public const int COMPRESSED_LUMINANCE_ARB = 0x84EA; + public const int COMPRESSED_LUMINANCE_LATC1_EXT = 0x8C70; + public const int COMPRESSED_R11_EAC = 0x9270; + public const int COMPRESSED_RED = 0x8225; + public const int COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD; + public const int COMPRESSED_RED_RGTC1 = 0x8DBB; + public const int COMPRESSED_RED_RGTC1_EXT = 0x8DBB; + public const int COMPRESSED_RG = 0x8226; + public const int COMPRESSED_RG11_EAC = 0x9272; + public const int COMPRESSED_RGB = 0x84ED; + public const int COMPRESSED_RGB8_ETC2 = 0x9274; + public const int COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; + public const int COMPRESSED_RGBA = 0x84EE; + public const int COMPRESSED_RGBA8_ETC2_EAC = 0x9278; + public const int COMPRESSED_RGBA_ARB = 0x84EE; + public const int COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB; + public const int COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8; + public const int COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9; + public const int COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA; + public const int COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC; + public const int COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD; + public const int COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; + public const int COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1; + public const int COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2; + public const int COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3; + public const int COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4; + public const int COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5; + public const int COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6; + public const int COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7; + public const int COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C; + public const int COMPRESSED_RGBA_BPTC_UNORM_ARB = 0x8E8C; + public const int COMPRESSED_RGBA_FXT1_3DFX = 0x86B1; + public const int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + public const int COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + public const int COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; + public const int COMPRESSED_RGB_ARB = 0x84ED; + public const int COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E; + public const int COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = 0x8E8E; + public const int COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F; + public const int COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = 0x8E8F; + public const int COMPRESSED_RGB_FXT1_3DFX = 0x86B0; + public const int COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + public const int COMPRESSED_RG_RGTC2 = 0x8DBD; + public const int COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C73; + public const int COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x8C71; + public const int COMPRESSED_SIGNED_R11_EAC = 0x9271; + public const int COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE; + public const int COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC; + public const int COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC; + public const int COMPRESSED_SIGNED_RG11_EAC = 0x9273; + public const int COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE; + public const int COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B; + public const int COMPRESSED_SLUMINANCE_EXT = 0x8C4A; + public const int COMPRESSED_SRGB = 0x8C48; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7; + public const int COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; + public const int COMPRESSED_SRGB8_ETC2 = 0x9275; + public const int COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; + public const int COMPRESSED_SRGB_ALPHA = 0x8C49; + public const int COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D; + public const int COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = 0x8E8D; + public const int COMPRESSED_SRGB_ALPHA_EXT = 0x8C49; + public const int COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D; + public const int COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E; + public const int COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F; + public const int COMPRESSED_SRGB_EXT = 0x8C48; + public const int COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C; + public const int COMPRESSED_TEXTURE_FORMATS = 0x86A3; + public const int COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A3; + public const int COMPUTE_PROGRAM_NV = 0x90FB; + public const int COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC; + public const int COMPUTE_SHADER = 0x91B9; + public const int COMPUTE_SHADER_BIT = 0x00000020; + public const int COMPUTE_SHADER_INVOCATIONS = 0x82F5; + public const int COMPUTE_SHADER_INVOCATIONS_ARB = 0x82F5; + public const int COMPUTE_SUBROUTINE = 0x92ED; + public const int COMPUTE_SUBROUTINE_UNIFORM = 0x92F3; + public const int COMPUTE_TEXTURE = 0x82A0; + public const int COMPUTE_WORK_GROUP_SIZE = 0x8267; + public const int COMP_BIT_ATI = 0x00000002; + public const int CONDITION_SATISFIED = 0x911C; + public const int CONFORMANT_NV = 0x9374; + public const int CONIC_CURVE_TO_NV = 0x1A; + public const int CONJOINT_NV = 0x9284; + public const int CONSERVATIVE_RASTERIZATION_INTEL = 0x83FE; + public const int CONSERVATIVE_RASTERIZATION_NV = 0x9346; + public const int CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV = 0x937B; + public const int CONSERVATIVE_RASTER_DILATE_NV = 0x9379; + public const int CONSERVATIVE_RASTER_DILATE_RANGE_NV = 0x937A; + public const int CONSERVATIVE_RASTER_MODE_NV = 0x954D; + public const int CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = 0x954E; + public const int CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV = 0x9550; + public const int CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = 0x954F; + public const int CONSERVE_MEMORY_HINT_PGI = 0x1A1FD; + public const int CONSTANT_ALPHA = 0x8003; + public const int CONSTANT_ALPHA_EXT = 0x8003; + public const int CONSTANT_ARB = 0x8576; + public const int CONSTANT_BORDER_HP = 0x8151; + public const int CONSTANT_COLOR = 0x8001; + public const int CONSTANT_COLOR0_NV = 0x852A; + public const int CONSTANT_COLOR1_NV = 0x852B; + public const int CONSTANT_COLOR_EXT = 0x8001; + public const int CONSTANT_EXT = 0x8576; + public const int CONST_EYE_NV = 0x86E5; + public const int CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002; + public const int CONTEXT_CORE_PROFILE_BIT = 0x00000001; + public const int CONTEXT_FLAGS = 0x821E; + public const int CONTEXT_FLAG_DEBUG_BIT = 0x00000002; + public const int CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001; + public const int CONTEXT_FLAG_NO_ERROR_BIT = 0x00000008; + public const int CONTEXT_FLAG_NO_ERROR_BIT_KHR = 0x00000008; + public const int CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004; + public const int CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004; + public const int CONTEXT_LOST = 0x0507; + public const int CONTEXT_PROFILE_MASK = 0x9126; + public const int CONTEXT_RELEASE_BEHAVIOR = 0x82FB; + public const int CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC; + public const int CONTEXT_ROBUST_ACCESS = 0x90F3; + public const int CONTINUOUS_AMD = 0x9007; + public const int CONTRAST_NV = 0x92A1; + public const int CONVEX_HULL_NV = 0x908B; + public const int CONVOLUTION_1D_EXT = 0x8010; + public const int CONVOLUTION_2D_EXT = 0x8011; + public const int CONVOLUTION_BORDER_COLOR_HP = 0x8154; + public const int CONVOLUTION_BORDER_MODE_EXT = 0x8013; + public const int CONVOLUTION_FILTER_BIAS_EXT = 0x8015; + public const int CONVOLUTION_FILTER_SCALE_EXT = 0x8014; + public const int CONVOLUTION_FORMAT_EXT = 0x8017; + public const int CONVOLUTION_HEIGHT_EXT = 0x8019; + public const int CONVOLUTION_HINT_SGIX = 0x8316; + public const int CONVOLUTION_WIDTH_EXT = 0x8018; + public const int CON_0_ATI = 0x8941; + public const int CON_10_ATI = 0x894B; + public const int CON_11_ATI = 0x894C; + public const int CON_12_ATI = 0x894D; + public const int CON_13_ATI = 0x894E; + public const int CON_14_ATI = 0x894F; + public const int CON_15_ATI = 0x8950; + public const int CON_16_ATI = 0x8951; + public const int CON_17_ATI = 0x8952; + public const int CON_18_ATI = 0x8953; + public const int CON_19_ATI = 0x8954; + public const int CON_1_ATI = 0x8942; + public const int CON_20_ATI = 0x8955; + public const int CON_21_ATI = 0x8956; + public const int CON_22_ATI = 0x8957; + public const int CON_23_ATI = 0x8958; + public const int CON_24_ATI = 0x8959; + public const int CON_25_ATI = 0x895A; + public const int CON_26_ATI = 0x895B; + public const int CON_27_ATI = 0x895C; + public const int CON_28_ATI = 0x895D; + public const int CON_29_ATI = 0x895E; + public const int CON_2_ATI = 0x8943; + public const int CON_30_ATI = 0x895F; + public const int CON_31_ATI = 0x8960; + public const int CON_3_ATI = 0x8944; + public const int CON_4_ATI = 0x8945; + public const int CON_5_ATI = 0x8946; + public const int CON_6_ATI = 0x8947; + public const int CON_7_ATI = 0x8948; + public const int CON_8_ATI = 0x8949; + public const int CON_9_ATI = 0x894A; + public const int COORD_REPLACE_ARB = 0x8862; + public const int COORD_REPLACE_NV = 0x8862; + public const int COPY = 0x1503; + public const int COPY_INVERTED = 0x150C; + public const int COPY_READ_BUFFER = 0x8F36; + public const int COPY_READ_BUFFER_BINDING = 0x8F36; + public const int COPY_WRITE_BUFFER = 0x8F37; + public const int COPY_WRITE_BUFFER_BINDING = 0x8F37; + public const int COUNTER_RANGE_AMD = 0x8BC1; + public const int COUNTER_TYPE_AMD = 0x8BC0; + public const int COUNT_DOWN_NV = 0x9089; + public const int COUNT_UP_NV = 0x9088; + public const int COVERAGE_MODULATION_NV = 0x9332; + public const int COVERAGE_MODULATION_TABLE_NV = 0x9331; + public const int COVERAGE_MODULATION_TABLE_SIZE_NV = 0x9333; + public const int CUBIC_CURVE_TO_NV = 0x0C; + public const int CUBIC_EXT = 0x8334; + public const int CUBIC_HP = 0x815F; + public const int CULL_FACE = 0x0B44; + public const int CULL_FACE_MODE = 0x0B45; + public const int CULL_FRAGMENT_NV = 0x86E7; + public const int CULL_MODES_NV = 0x86E0; + public const int CULL_VERTEX_EXT = 0x81AA; + public const int CULL_VERTEX_EYE_POSITION_EXT = 0x81AB; + public const int CULL_VERTEX_IBM = 103050; + public const int CULL_VERTEX_OBJECT_POSITION_EXT = 0x81AC; + public const int CURRENT_ATTRIB_NV = 0x8626; + public const int CURRENT_BINORMAL_EXT = 0x843C; + public const int CURRENT_FOG_COORDINATE_EXT = 0x8453; + public const int CURRENT_MATRIX_ARB = 0x8641; + public const int CURRENT_MATRIX_INDEX_ARB = 0x8845; + public const int CURRENT_MATRIX_NV = 0x8641; + public const int CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640; + public const int CURRENT_MATRIX_STACK_DEPTH_NV = 0x8640; + public const int CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865; + public const int CURRENT_PALETTE_MATRIX_ARB = 0x8843; + public const int CURRENT_PROGRAM = 0x8B8D; + public const int CURRENT_QUERY = 0x8865; + public const int CURRENT_QUERY_ARB = 0x8865; + public const int CURRENT_RASTER_NORMAL_SGIX = 0x8406; + public const int CURRENT_SECONDARY_COLOR_EXT = 0x8459; + public const int CURRENT_TANGENT_EXT = 0x843B; + public const int CURRENT_TIME_NV = 0x8E28; + public const int CURRENT_VERTEX_ATTRIB = 0x8626; + public const int CURRENT_VERTEX_ATTRIB_ARB = 0x8626; + public const int CURRENT_VERTEX_EXT = 0x87E2; + public const int CURRENT_VERTEX_WEIGHT_EXT = 0x850B; + public const int CURRENT_WEIGHT_ARB = 0x86A8; + public const int CW = 0x0900; + public const int D3D12_FENCE_VALUE_EXT = 0x9595; + public const int DARKEN_KHR = 0x9297; + public const int DARKEN_NV = 0x9297; + public const int DATA_BUFFER_AMD = 0x9151; + public const int DEBUG_CALLBACK_FUNCTION = 0x8244; + public const int DEBUG_CALLBACK_FUNCTION_ARB = 0x8244; + public const int DEBUG_CALLBACK_USER_PARAM = 0x8245; + public const int DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245; + public const int DEBUG_CATEGORY_API_ERROR_AMD = 0x9149; + public const int DEBUG_CATEGORY_APPLICATION_AMD = 0x914F; + public const int DEBUG_CATEGORY_DEPRECATION_AMD = 0x914B; + public const int DEBUG_CATEGORY_OTHER_AMD = 0x9150; + public const int DEBUG_CATEGORY_PERFORMANCE_AMD = 0x914D; + public const int DEBUG_CATEGORY_SHADER_COMPILER_AMD = 0x914E; + public const int DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = 0x914C; + public const int DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = 0x914A; + public const int DEBUG_GROUP_STACK_DEPTH = 0x826D; + public const int DEBUG_LOGGED_MESSAGES = 0x9145; + public const int DEBUG_LOGGED_MESSAGES_AMD = 0x9145; + public const int DEBUG_LOGGED_MESSAGES_ARB = 0x9145; + public const int DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243; + public const int DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243; + public const int DEBUG_OUTPUT = 0x92E0; + public const int DEBUG_OUTPUT_SYNCHRONOUS = 0x8242; + public const int DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242; + public const int DEBUG_SEVERITY_HIGH = 0x9146; + public const int DEBUG_SEVERITY_HIGH_AMD = 0x9146; + public const int DEBUG_SEVERITY_HIGH_ARB = 0x9146; + public const int DEBUG_SEVERITY_LOW = 0x9148; + public const int DEBUG_SEVERITY_LOW_AMD = 0x9148; + public const int DEBUG_SEVERITY_LOW_ARB = 0x9148; + public const int DEBUG_SEVERITY_MEDIUM = 0x9147; + public const int DEBUG_SEVERITY_MEDIUM_AMD = 0x9147; + public const int DEBUG_SEVERITY_MEDIUM_ARB = 0x9147; + public const int DEBUG_SEVERITY_NOTIFICATION = 0x826B; + public const int DEBUG_SOURCE_API = 0x8246; + public const int DEBUG_SOURCE_API_ARB = 0x8246; + public const int DEBUG_SOURCE_APPLICATION = 0x824A; + public const int DEBUG_SOURCE_APPLICATION_ARB = 0x824A; + public const int DEBUG_SOURCE_OTHER = 0x824B; + public const int DEBUG_SOURCE_OTHER_ARB = 0x824B; + public const int DEBUG_SOURCE_SHADER_COMPILER = 0x8248; + public const int DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248; + public const int DEBUG_SOURCE_THIRD_PARTY = 0x8249; + public const int DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249; + public const int DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247; + public const int DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247; + public const int DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D; + public const int DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D; + public const int DEBUG_TYPE_ERROR = 0x824C; + public const int DEBUG_TYPE_ERROR_ARB = 0x824C; + public const int DEBUG_TYPE_MARKER = 0x8268; + public const int DEBUG_TYPE_OTHER = 0x8251; + public const int DEBUG_TYPE_OTHER_ARB = 0x8251; + public const int DEBUG_TYPE_PERFORMANCE = 0x8250; + public const int DEBUG_TYPE_PERFORMANCE_ARB = 0x8250; + public const int DEBUG_TYPE_POP_GROUP = 0x826A; + public const int DEBUG_TYPE_PORTABILITY = 0x824F; + public const int DEBUG_TYPE_PORTABILITY_ARB = 0x824F; + public const int DEBUG_TYPE_PUSH_GROUP = 0x8269; + public const int DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824E; + public const int DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E; + public const int DECODE_EXT = 0x8A49; + public const int DECR = 0x1E03; + public const int DECR_WRAP = 0x8508; + public const int DECR_WRAP_EXT = 0x8508; + public const int DEDICATED_MEMORY_OBJECT_EXT = 0x9581; + public const int DEFORMATIONS_MASK_SGIX = 0x8196; + public const int DELETE_STATUS = 0x8B80; + public const int DEPENDENT_AR_TEXTURE_2D_NV = 0x86E9; + public const int DEPENDENT_GB_TEXTURE_2D_NV = 0x86EA; + public const int DEPENDENT_HILO_TEXTURE_2D_NV = 0x8858; + public const int DEPENDENT_RGB_TEXTURE_3D_NV = 0x8859; + public const int DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x885A; + public const int DEPTH = 0x1801; + public const int DEPTH24_STENCIL8 = 0x88F0; + public const int DEPTH24_STENCIL8_EXT = 0x88F0; + public const int DEPTH32F_STENCIL8 = 0x8CAD; + public const int DEPTH32F_STENCIL8_NV = 0x8DAC; + public const int DEPTH_ATTACHMENT = 0x8D00; + public const int DEPTH_ATTACHMENT_EXT = 0x8D00; + public const int DEPTH_BOUNDS_EXT = 0x8891; + public const int DEPTH_BOUNDS_TEST_EXT = 0x8890; + public const int DEPTH_BUFFER_BIT = 0x00000100; + public const int DEPTH_BUFFER_FLOAT_MODE_NV = 0x8DAF; + public const int DEPTH_CLAMP = 0x864F; + public const int DEPTH_CLAMP_FAR_AMD = 0x901F; + public const int DEPTH_CLAMP_NEAR_AMD = 0x901E; + public const int DEPTH_CLAMP_NV = 0x864F; + public const int DEPTH_CLEAR_VALUE = 0x0B73; + public const int DEPTH_COMPONENT = 0x1902; + public const int DEPTH_COMPONENT16 = 0x81A5; + public const int DEPTH_COMPONENT16_ARB = 0x81A5; + public const int DEPTH_COMPONENT16_SGIX = 0x81A5; + public const int DEPTH_COMPONENT24 = 0x81A6; + public const int DEPTH_COMPONENT24_ARB = 0x81A6; + public const int DEPTH_COMPONENT24_SGIX = 0x81A6; + public const int DEPTH_COMPONENT32 = 0x81A7; + public const int DEPTH_COMPONENT32F = 0x8CAC; + public const int DEPTH_COMPONENT32F_NV = 0x8DAB; + public const int DEPTH_COMPONENT32_ARB = 0x81A7; + public const int DEPTH_COMPONENT32_SGIX = 0x81A7; + public const int DEPTH_COMPONENTS = 0x8284; + public const int DEPTH_FUNC = 0x0B74; + public const int DEPTH_RANGE = 0x0B70; + public const int DEPTH_RENDERABLE = 0x8287; + public const int DEPTH_SAMPLES_NV = 0x932D; + public const int DEPTH_STENCIL = 0x84F9; + public const int DEPTH_STENCIL_ATTACHMENT = 0x821A; + public const int DEPTH_STENCIL_EXT = 0x84F9; + public const int DEPTH_STENCIL_NV = 0x84F9; + public const int DEPTH_STENCIL_TEXTURE_MODE = 0x90EA; + public const int DEPTH_STENCIL_TO_BGRA_NV = 0x886F; + public const int DEPTH_STENCIL_TO_RGBA_NV = 0x886E; + public const int DEPTH_TEST = 0x0B71; + public const int DEPTH_TEXTURE_MODE_ARB = 0x884B; + public const int DEPTH_WRITEMASK = 0x0B72; + public const int DETACHED_BUFFERS_NV = 0x95AB; + public const int DETACHED_MEMORY_INCARNATION_NV = 0x95A9; + public const int DETACHED_TEXTURES_NV = 0x95AA; + public const int DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096; + public const int DETAIL_TEXTURE_2D_SGIS = 0x8095; + public const int DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C; + public const int DETAIL_TEXTURE_LEVEL_SGIS = 0x809A; + public const int DETAIL_TEXTURE_MODE_SGIS = 0x809B; + public const int DEVICE_LUID_EXT = 0x9599; + public const int DEVICE_NODE_MASK_EXT = 0x959A; + public const int DEVICE_UUID_EXT = 0x9597; + public const int DIFFERENCE_KHR = 0x929E; + public const int DIFFERENCE_NV = 0x929E; + public const int DISCARD_ATI = 0x8763; + public const int DISCARD_NV = 0x8530; + public const int DISCRETE_AMD = 0x9006; + public const int DISJOINT_NV = 0x9283; + public const int DISPATCH_INDIRECT_BUFFER = 0x90EE; + public const int DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF; + public const int DISTANCE_ATTENUATION_EXT = 0x8129; + public const int DISTANCE_ATTENUATION_SGIS = 0x8129; + public const int DITHER = 0x0BD0; + public const int DONT_CARE = 0x1100; + public const int DOT2_ADD_ATI = 0x896C; + public const int DOT3_ATI = 0x8966; + public const int DOT3_RGBA_ARB = 0x86AF; + public const int DOT3_RGBA_EXT = 0x8741; + public const int DOT3_RGB_ARB = 0x86AE; + public const int DOT3_RGB_EXT = 0x8740; + public const int DOT4_ATI = 0x8967; + public const int DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x885D; + public const int DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x86F3; + public const int DOT_PRODUCT_DEPTH_REPLACE_NV = 0x86ED; + public const int DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x86F1; + public const int DOT_PRODUCT_NV = 0x86EC; + public const int DOT_PRODUCT_PASS_THROUGH_NV = 0x885B; + public const int DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x86F2; + public const int DOT_PRODUCT_TEXTURE_1D_NV = 0x885C; + public const int DOT_PRODUCT_TEXTURE_2D_NV = 0x86EE; + public const int DOT_PRODUCT_TEXTURE_3D_NV = 0x86EF; + public const int DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x86F0; + public const int DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x864E; + public const int DOUBLE = 0x140A; + public const int DOUBLEBUFFER = 0x0C32; + public const int DOUBLE_MAT2 = 0x8F46; + public const int DOUBLE_MAT2_EXT = 0x8F46; + public const int DOUBLE_MAT2x3 = 0x8F49; + public const int DOUBLE_MAT2x3_EXT = 0x8F49; + public const int DOUBLE_MAT2x4 = 0x8F4A; + public const int DOUBLE_MAT2x4_EXT = 0x8F4A; + public const int DOUBLE_MAT3 = 0x8F47; + public const int DOUBLE_MAT3_EXT = 0x8F47; + public const int DOUBLE_MAT3x2 = 0x8F4B; + public const int DOUBLE_MAT3x2_EXT = 0x8F4B; + public const int DOUBLE_MAT3x4 = 0x8F4C; + public const int DOUBLE_MAT3x4_EXT = 0x8F4C; + public const int DOUBLE_MAT4 = 0x8F48; + public const int DOUBLE_MAT4_EXT = 0x8F48; + public const int DOUBLE_MAT4x2 = 0x8F4D; + public const int DOUBLE_MAT4x2_EXT = 0x8F4D; + public const int DOUBLE_MAT4x3 = 0x8F4E; + public const int DOUBLE_MAT4x3_EXT = 0x8F4E; + public const int DOUBLE_VEC2 = 0x8FFC; + public const int DOUBLE_VEC2_EXT = 0x8FFC; + public const int DOUBLE_VEC3 = 0x8FFD; + public const int DOUBLE_VEC3_EXT = 0x8FFD; + public const int DOUBLE_VEC4 = 0x8FFE; + public const int DOUBLE_VEC4_EXT = 0x8FFE; + public const int DRAW_ARRAYS_COMMAND_NV = 0x0003; + public const int DRAW_ARRAYS_INSTANCED_COMMAND_NV = 0x0007; + public const int DRAW_ARRAYS_STRIP_COMMAND_NV = 0x0005; + public const int DRAW_BUFFER = 0x0C01; + public const int DRAW_BUFFER0 = 0x8825; + public const int DRAW_BUFFER0_ARB = 0x8825; + public const int DRAW_BUFFER0_ATI = 0x8825; + public const int DRAW_BUFFER1 = 0x8826; + public const int DRAW_BUFFER10 = 0x882F; + public const int DRAW_BUFFER10_ARB = 0x882F; + public const int DRAW_BUFFER10_ATI = 0x882F; + public const int DRAW_BUFFER11 = 0x8830; + public const int DRAW_BUFFER11_ARB = 0x8830; + public const int DRAW_BUFFER11_ATI = 0x8830; + public const int DRAW_BUFFER12 = 0x8831; + public const int DRAW_BUFFER12_ARB = 0x8831; + public const int DRAW_BUFFER12_ATI = 0x8831; + public const int DRAW_BUFFER13 = 0x8832; + public const int DRAW_BUFFER13_ARB = 0x8832; + public const int DRAW_BUFFER13_ATI = 0x8832; + public const int DRAW_BUFFER14 = 0x8833; + public const int DRAW_BUFFER14_ARB = 0x8833; + public const int DRAW_BUFFER14_ATI = 0x8833; + public const int DRAW_BUFFER15 = 0x8834; + public const int DRAW_BUFFER15_ARB = 0x8834; + public const int DRAW_BUFFER15_ATI = 0x8834; + public const int DRAW_BUFFER1_ARB = 0x8826; + public const int DRAW_BUFFER1_ATI = 0x8826; + public const int DRAW_BUFFER2 = 0x8827; + public const int DRAW_BUFFER2_ARB = 0x8827; + public const int DRAW_BUFFER2_ATI = 0x8827; + public const int DRAW_BUFFER3 = 0x8828; + public const int DRAW_BUFFER3_ARB = 0x8828; + public const int DRAW_BUFFER3_ATI = 0x8828; + public const int DRAW_BUFFER4 = 0x8829; + public const int DRAW_BUFFER4_ARB = 0x8829; + public const int DRAW_BUFFER4_ATI = 0x8829; + public const int DRAW_BUFFER5 = 0x882A; + public const int DRAW_BUFFER5_ARB = 0x882A; + public const int DRAW_BUFFER5_ATI = 0x882A; + public const int DRAW_BUFFER6 = 0x882B; + public const int DRAW_BUFFER6_ARB = 0x882B; + public const int DRAW_BUFFER6_ATI = 0x882B; + public const int DRAW_BUFFER7 = 0x882C; + public const int DRAW_BUFFER7_ARB = 0x882C; + public const int DRAW_BUFFER7_ATI = 0x882C; + public const int DRAW_BUFFER8 = 0x882D; + public const int DRAW_BUFFER8_ARB = 0x882D; + public const int DRAW_BUFFER8_ATI = 0x882D; + public const int DRAW_BUFFER9 = 0x882E; + public const int DRAW_BUFFER9_ARB = 0x882E; + public const int DRAW_BUFFER9_ATI = 0x882E; + public const int DRAW_ELEMENTS_COMMAND_NV = 0x0002; + public const int DRAW_ELEMENTS_INSTANCED_COMMAND_NV = 0x0006; + public const int DRAW_ELEMENTS_STRIP_COMMAND_NV = 0x0004; + public const int DRAW_FRAMEBUFFER = 0x8CA9; + public const int DRAW_FRAMEBUFFER_BINDING = 0x8CA6; + public const int DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6; + public const int DRAW_FRAMEBUFFER_EXT = 0x8CA9; + public const int DRAW_INDIRECT_ADDRESS_NV = 0x8F41; + public const int DRAW_INDIRECT_BUFFER = 0x8F3F; + public const int DRAW_INDIRECT_BUFFER_BINDING = 0x8F43; + public const int DRAW_INDIRECT_LENGTH_NV = 0x8F42; + public const int DRAW_INDIRECT_UNIFIED_NV = 0x8F40; + public const int DRAW_PIXELS_APPLE = 0x8A0A; + public const int DRIVER_UUID_EXT = 0x9598; + public const int DSDT8_MAG8_INTENSITY8_NV = 0x870B; + public const int DSDT8_MAG8_NV = 0x870A; + public const int DSDT8_NV = 0x8709; + public const int DSDT_MAG_INTENSITY_NV = 0x86DC; + public const int DSDT_MAG_NV = 0x86F6; + public const int DSDT_MAG_VIB_NV = 0x86F7; + public const int DSDT_NV = 0x86F5; + public const int DST_ALPHA = 0x0304; + public const int DST_ATOP_NV = 0x928F; + public const int DST_COLOR = 0x0306; + public const int DST_IN_NV = 0x928B; + public const int DST_NV = 0x9287; + public const int DST_OUT_NV = 0x928D; + public const int DST_OVER_NV = 0x9289; + public const int DS_BIAS_NV = 0x8716; + public const int DS_SCALE_NV = 0x8710; + public const int DT_BIAS_NV = 0x8717; + public const int DT_SCALE_NV = 0x8711; + public const int DU8DV8_ATI = 0x877A; + public const int DUAL_ALPHA12_SGIS = 0x8112; + public const int DUAL_ALPHA16_SGIS = 0x8113; + public const int DUAL_ALPHA4_SGIS = 0x8110; + public const int DUAL_ALPHA8_SGIS = 0x8111; + public const int DUAL_INTENSITY12_SGIS = 0x811A; + public const int DUAL_INTENSITY16_SGIS = 0x811B; + public const int DUAL_INTENSITY4_SGIS = 0x8118; + public const int DUAL_INTENSITY8_SGIS = 0x8119; + public const int DUAL_LUMINANCE12_SGIS = 0x8116; + public const int DUAL_LUMINANCE16_SGIS = 0x8117; + public const int DUAL_LUMINANCE4_SGIS = 0x8114; + public const int DUAL_LUMINANCE8_SGIS = 0x8115; + public const int DUAL_LUMINANCE_ALPHA4_SGIS = 0x811C; + public const int DUAL_LUMINANCE_ALPHA8_SGIS = 0x811D; + public const int DUAL_TEXTURE_SELECT_SGIS = 0x8124; + public const int DUDV_ATI = 0x8779; + public const int DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2; + public const int DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4; + public const int DYNAMIC_ATI = 0x8761; + public const int DYNAMIC_COPY = 0x88EA; + public const int DYNAMIC_COPY_ARB = 0x88EA; + public const int DYNAMIC_DRAW = 0x88E8; + public const int DYNAMIC_DRAW_ARB = 0x88E8; + public const int DYNAMIC_READ = 0x88E9; + public const int DYNAMIC_READ_ARB = 0x88E9; + public const int DYNAMIC_STORAGE_BIT = 0x0100; + public const int EDGEFLAG_BIT_PGI = 0x00040000; + public const int EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26; + public const int EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B; + public const int EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D; + public const int EDGE_FLAG_ARRAY_EXT = 0x8079; + public const int EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30; + public const int EDGE_FLAG_ARRAY_LIST_IBM = 103075; + public const int EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085; + public const int EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093; + public const int EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C; + public const int EFFECTIVE_RASTER_SAMPLES_EXT = 0x932C; + public const int EIGHTH_BIT_ATI = 0x00000020; + public const int ELEMENT_ADDRESS_COMMAND_NV = 0x0008; + public const int ELEMENT_ARRAY_ADDRESS_NV = 0x8F29; + public const int ELEMENT_ARRAY_APPLE = 0x8A0C; + public const int ELEMENT_ARRAY_ATI = 0x8768; + public const int ELEMENT_ARRAY_BARRIER_BIT = 0x00000002; + public const int ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002; + public const int ELEMENT_ARRAY_BUFFER = 0x8893; + public const int ELEMENT_ARRAY_BUFFER_ARB = 0x8893; + public const int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + public const int ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895; + public const int ELEMENT_ARRAY_LENGTH_NV = 0x8F33; + public const int ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E; + public const int ELEMENT_ARRAY_POINTER_ATI = 0x876A; + public const int ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D; + public const int ELEMENT_ARRAY_TYPE_ATI = 0x8769; + public const int ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F; + public const int EMBOSS_CONSTANT_NV = 0x855E; + public const int EMBOSS_LIGHT_NV = 0x855D; + public const int EMBOSS_MAP_NV = 0x855F; + public const int EQUAL = 0x0202; + public const int EQUIV = 0x1509; + public const int EVAL_2D_NV = 0x86C0; + public const int EVAL_FRACTIONAL_TESSELLATION_NV = 0x86C5; + public const int EVAL_TRIANGULAR_2D_NV = 0x86C1; + public const int EVAL_VERTEX_ATTRIB0_NV = 0x86C6; + public const int EVAL_VERTEX_ATTRIB10_NV = 0x86D0; + public const int EVAL_VERTEX_ATTRIB11_NV = 0x86D1; + public const int EVAL_VERTEX_ATTRIB12_NV = 0x86D2; + public const int EVAL_VERTEX_ATTRIB13_NV = 0x86D3; + public const int EVAL_VERTEX_ATTRIB14_NV = 0x86D4; + public const int EVAL_VERTEX_ATTRIB15_NV = 0x86D5; + public const int EVAL_VERTEX_ATTRIB1_NV = 0x86C7; + public const int EVAL_VERTEX_ATTRIB2_NV = 0x86C8; + public const int EVAL_VERTEX_ATTRIB3_NV = 0x86C9; + public const int EVAL_VERTEX_ATTRIB4_NV = 0x86CA; + public const int EVAL_VERTEX_ATTRIB5_NV = 0x86CB; + public const int EVAL_VERTEX_ATTRIB6_NV = 0x86CC; + public const int EVAL_VERTEX_ATTRIB7_NV = 0x86CD; + public const int EVAL_VERTEX_ATTRIB8_NV = 0x86CE; + public const int EVAL_VERTEX_ATTRIB9_NV = 0x86CF; + public const int EXCLUSION_KHR = 0x92A0; + public const int EXCLUSION_NV = 0x92A0; + public const int EXCLUSIVE_EXT = 0x8F11; + public const int EXPAND_NEGATE_NV = 0x8539; + public const int EXPAND_NORMAL_NV = 0x8538; + public const int EXTENSIONS = 0x1F03; + public const int EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = 0x9160; + public const int EYE_DISTANCE_TO_LINE_SGIS = 0x81F2; + public const int EYE_DISTANCE_TO_POINT_SGIS = 0x81F0; + public const int EYE_LINE_SGIS = 0x81F6; + public const int EYE_PLANE = 0x2502; + public const int EYE_PLANE_ABSOLUTE_NV = 0x855C; + public const int EYE_POINT_SGIS = 0x81F4; + public const int EYE_RADIAL_NV = 0x855B; + public const int E_TIMES_F_NV = 0x8531; + public const int FACTOR_MAX_AMD = 0x901D; + public const int FACTOR_MIN_AMD = 0x901C; + public const int FAILURE_NV = 0x9030; + public const int FALSE = 0; + public const int FASTEST = 0x1101; + public const int FENCE_APPLE = 0x8A0B; + public const int FENCE_CONDITION_NV = 0x84F4; + public const int FENCE_STATUS_NV = 0x84F3; + public const int FIELDS_NV = 0x8E27; + public const int FIELD_LOWER_NV = 0x9023; + public const int FIELD_UPPER_NV = 0x9022; + public const int FILE_NAME_NV = 0x9074; + public const int FILL = 0x1B02; + public const int FILL_RECTANGLE_NV = 0x933C; + public const int FILTER = 0x829A; + public const int FILTER4_SGIS = 0x8146; + public const int FIRST_TO_REST_NV = 0x90AF; + public const int FIRST_VERTEX_CONVENTION = 0x8E4D; + public const int FIRST_VERTEX_CONVENTION_EXT = 0x8E4D; + public const int FIXED = 0x140C; + public const int FIXED_OES = 0x140C; + public const int FIXED_ONLY = 0x891D; + public const int FIXED_ONLY_ARB = 0x891D; + public const int FLOAT = 0x1406; + public const int FLOAT16_MAT2_AMD = 0x91C5; + public const int FLOAT16_MAT2x3_AMD = 0x91C8; + public const int FLOAT16_MAT2x4_AMD = 0x91C9; + public const int FLOAT16_MAT3_AMD = 0x91C6; + public const int FLOAT16_MAT3x2_AMD = 0x91CA; + public const int FLOAT16_MAT3x4_AMD = 0x91CB; + public const int FLOAT16_MAT4_AMD = 0x91C7; + public const int FLOAT16_MAT4x2_AMD = 0x91CC; + public const int FLOAT16_MAT4x3_AMD = 0x91CD; + public const int FLOAT16_NV = 0x8FF8; + public const int FLOAT16_VEC2_NV = 0x8FF9; + public const int FLOAT16_VEC3_NV = 0x8FFA; + public const int FLOAT16_VEC4_NV = 0x8FFB; + public const int FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + public const int FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x8DAD; + public const int FLOAT_CLEAR_COLOR_VALUE_NV = 0x888D; + public const int FLOAT_MAT2 = 0x8B5A; + public const int FLOAT_MAT2_ARB = 0x8B5A; + public const int FLOAT_MAT2x3 = 0x8B65; + public const int FLOAT_MAT2x4 = 0x8B66; + public const int FLOAT_MAT3 = 0x8B5B; + public const int FLOAT_MAT3_ARB = 0x8B5B; + public const int FLOAT_MAT3x2 = 0x8B67; + public const int FLOAT_MAT3x4 = 0x8B68; + public const int FLOAT_MAT4 = 0x8B5C; + public const int FLOAT_MAT4_ARB = 0x8B5C; + public const int FLOAT_MAT4x2 = 0x8B69; + public const int FLOAT_MAT4x3 = 0x8B6A; + public const int FLOAT_R16_NV = 0x8884; + public const int FLOAT_R32_NV = 0x8885; + public const int FLOAT_RG16_NV = 0x8886; + public const int FLOAT_RG32_NV = 0x8887; + public const int FLOAT_RGB16_NV = 0x8888; + public const int FLOAT_RGB32_NV = 0x8889; + public const int FLOAT_RGBA16_NV = 0x888A; + public const int FLOAT_RGBA32_NV = 0x888B; + public const int FLOAT_RGBA_MODE_NV = 0x888E; + public const int FLOAT_RGBA_NV = 0x8883; + public const int FLOAT_RGB_NV = 0x8882; + public const int FLOAT_RG_NV = 0x8881; + public const int FLOAT_R_NV = 0x8880; + public const int FLOAT_VEC2 = 0x8B50; + public const int FLOAT_VEC2_ARB = 0x8B50; + public const int FLOAT_VEC3 = 0x8B51; + public const int FLOAT_VEC3_ARB = 0x8B51; + public const int FLOAT_VEC4 = 0x8B52; + public const int FLOAT_VEC4_ARB = 0x8B52; + public const int FOG = 0x0B60; + public const int FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D; + public const int FOG_COORDINATE_ARRAY_EXT = 0x8457; + public const int FOG_COORDINATE_ARRAY_LIST_IBM = 103076; + public const int FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086; + public const int FOG_COORDINATE_ARRAY_POINTER_EXT = 0x8456; + public const int FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x8455; + public const int FOG_COORDINATE_ARRAY_TYPE_EXT = 0x8454; + public const int FOG_COORDINATE_EXT = 0x8451; + public const int FOG_COORDINATE_SOURCE_EXT = 0x8450; + public const int FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28; + public const int FOG_COORD_ARRAY_LENGTH_NV = 0x8F32; + public const int FOG_DISTANCE_MODE_NV = 0x855A; + public const int FOG_FUNC_POINTS_SGIS = 0x812B; + public const int FOG_FUNC_SGIS = 0x812A; + public const int FOG_OFFSET_SGIX = 0x8198; + public const int FOG_OFFSET_VALUE_SGIX = 0x8199; + public const int FOG_SPECULAR_TEXTURE_WIN = 0x80EC; + public const int FONT_ASCENDER_BIT_NV = 0x00200000; + public const int FONT_DESCENDER_BIT_NV = 0x00400000; + public const int FONT_GLYPHS_AVAILABLE_NV = 0x9368; + public const int FONT_HAS_KERNING_BIT_NV = 0x10000000; + public const int FONT_HEIGHT_BIT_NV = 0x00800000; + public const int FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000; + public const int FONT_MAX_ADVANCE_WIDTH_BIT_NV = 0x01000000; + public const int FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000; + public const int FONT_TARGET_UNAVAILABLE_NV = 0x9369; + public const int FONT_UNAVAILABLE_NV = 0x936A; + public const int FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000; + public const int FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000; + public const int FONT_UNINTELLIGIBLE_NV = 0x936B; + public const int FONT_UNITS_PER_EM_BIT_NV = 0x00100000; + public const int FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000; + public const int FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000; + public const int FONT_Y_MAX_BOUNDS_BIT_NV = 0x00080000; + public const int FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000; + public const int FORCE_BLUE_TO_ONE_NV = 0x8860; + public const int FORMAT_SUBSAMPLE_244_244_OML = 0x8983; + public const int FORMAT_SUBSAMPLE_24_24_OML = 0x8982; + public const int FRACTIONAL_EVEN = 0x8E7C; + public const int FRACTIONAL_ODD = 0x8E7B; + public const int FRAGMENT_COLOR_EXT = 0x834C; + public const int FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402; + public const int FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403; + public const int FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401; + public const int FRAGMENT_COVERAGE_COLOR_NV = 0x92DE; + public const int FRAGMENT_COVERAGE_TO_COLOR_NV = 0x92DD; + public const int FRAGMENT_DEPTH_EXT = 0x8452; + public const int FRAGMENT_INPUT_NV = 0x936D; + public const int FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D; + public const int FRAGMENT_LIGHT0_SGIX = 0x840C; + public const int FRAGMENT_LIGHT1_SGIX = 0x840D; + public const int FRAGMENT_LIGHT2_SGIX = 0x840E; + public const int FRAGMENT_LIGHT3_SGIX = 0x840F; + public const int FRAGMENT_LIGHT4_SGIX = 0x8410; + public const int FRAGMENT_LIGHT5_SGIX = 0x8411; + public const int FRAGMENT_LIGHT6_SGIX = 0x8412; + public const int FRAGMENT_LIGHT7_SGIX = 0x8413; + public const int FRAGMENT_LIGHTING_SGIX = 0x8400; + public const int FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A; + public const int FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408; + public const int FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B; + public const int FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409; + public const int FRAGMENT_MATERIAL_EXT = 0x8349; + public const int FRAGMENT_NORMAL_EXT = 0x834A; + public const int FRAGMENT_PROGRAM_ARB = 0x8804; + public const int FRAGMENT_PROGRAM_BINDING_NV = 0x8873; + public const int FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = 0x8E5D; + public const int FRAGMENT_PROGRAM_NV = 0x8870; + public const int FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA4; + public const int FRAGMENT_SHADER = 0x8B30; + public const int FRAGMENT_SHADER_ARB = 0x8B30; + public const int FRAGMENT_SHADER_ATI = 0x8920; + public const int FRAGMENT_SHADER_BIT = 0x00000002; + public const int FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + public const int FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B; + public const int FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x8A52; + public const int FRAGMENT_SHADER_INVOCATIONS = 0x82F4; + public const int FRAGMENT_SHADER_INVOCATIONS_ARB = 0x82F4; + public const int FRAGMENT_SUBROUTINE = 0x92EC; + public const int FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2; + public const int FRAGMENT_TEXTURE = 0x829F; + public const int FRAMEBUFFER = 0x8D40; + public const int FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + public const int FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + public const int FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + public const int FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + public const int FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + public const int FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + public const int FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7; + public const int FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7; + public const int FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x8DA7; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0; + public const int FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + public const int FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x8CD4; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630; + public const int FRAMEBUFFER_BARRIER_BIT = 0x00000400; + public const int FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400; + public const int FRAMEBUFFER_BINDING = 0x8CA6; + public const int FRAMEBUFFER_BINDING_EXT = 0x8CA6; + public const int FRAMEBUFFER_BLEND = 0x828B; + public const int FRAMEBUFFER_COMPLETE = 0x8CD5; + public const int FRAMEBUFFER_COMPLETE_EXT = 0x8CD5; + public const int FRAMEBUFFER_DEFAULT = 0x8218; + public const int FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314; + public const int FRAMEBUFFER_DEFAULT_HEIGHT = 0x9311; + public const int FRAMEBUFFER_DEFAULT_LAYERS = 0x9312; + public const int FRAMEBUFFER_DEFAULT_SAMPLES = 0x9313; + public const int FRAMEBUFFER_DEFAULT_WIDTH = 0x9310; + public const int FRAMEBUFFER_EXT = 0x8D40; + public const int FRAMEBUFFER_FLIP_X_MESA = 0x8BBC; + public const int FRAMEBUFFER_FLIP_Y_MESA = 0x8BBB; + public const int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + public const int FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6; + public const int FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9; + public const int FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB; + public const int FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB; + public const int FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x8DA9; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x8DA8; + public const int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + public const int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7; + public const int FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + public const int FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56; + public const int FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC; + public const int FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC; + public const int FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633; + public const int FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB = 0x9342; + public const int FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x9342; + public const int FRAMEBUFFER_RENDERABLE = 0x8289; + public const int FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A; + public const int FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB = 0x9343; + public const int FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x9343; + public const int FRAMEBUFFER_SRGB = 0x8DB9; + public const int FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA; + public const int FRAMEBUFFER_SRGB_EXT = 0x8DB9; + public const int FRAMEBUFFER_SWAP_XY_MESA = 0x8BBD; + public const int FRAMEBUFFER_UNDEFINED = 0x8219; + public const int FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + public const int FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD; + public const int FRAMEZOOM_FACTOR_SGIX = 0x818C; + public const int FRAMEZOOM_SGIX = 0x818B; + public const int FRAME_NV = 0x8E26; + public const int FRONT = 0x0404; + public const int FRONT_AND_BACK = 0x0408; + public const int FRONT_FACE = 0x0B46; + public const int FRONT_FACE_COMMAND_NV = 0x0012; + public const int FRONT_LEFT = 0x0400; + public const int FRONT_RIGHT = 0x0401; + public const int FULL_RANGE_EXT = 0x87E1; + public const int FULL_STIPPLE_HINT_PGI = 0x1A219; + public const int FULL_SUPPORT = 0x82B7; + public const int FUNC_ADD = 0x8006; + public const int FUNC_ADD_EXT = 0x8006; + public const int FUNC_REVERSE_SUBTRACT = 0x800B; + public const int FUNC_REVERSE_SUBTRACT_EXT = 0x800B; + public const int FUNC_SUBTRACT = 0x800A; + public const int FUNC_SUBTRACT_EXT = 0x800A; + public const int GENERATE_MIPMAP_HINT_SGIS = 0x8192; + public const int GENERATE_MIPMAP_SGIS = 0x8191; + public const int GENERIC_ATTRIB_NV = 0x8C7D; + public const int GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002; + public const int GEOMETRY_DEFORMATION_SGIX = 0x8194; + public const int GEOMETRY_INPUT_TYPE = 0x8917; + public const int GEOMETRY_INPUT_TYPE_ARB = 0x8DDB; + public const int GEOMETRY_INPUT_TYPE_EXT = 0x8DDB; + public const int GEOMETRY_OUTPUT_TYPE = 0x8918; + public const int GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC; + public const int GEOMETRY_OUTPUT_TYPE_EXT = 0x8DDC; + public const int GEOMETRY_PROGRAM_NV = 0x8C26; + public const int GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA3; + public const int GEOMETRY_SHADER = 0x8DD9; + public const int GEOMETRY_SHADER_ARB = 0x8DD9; + public const int GEOMETRY_SHADER_BIT = 0x00000004; + public const int GEOMETRY_SHADER_EXT = 0x8DD9; + public const int GEOMETRY_SHADER_INVOCATIONS = 0x887F; + public const int GEOMETRY_SHADER_PRIMITIVES_EMITTED = 0x82F3; + public const int GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = 0x82F3; + public const int GEOMETRY_SUBROUTINE = 0x92EB; + public const int GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1; + public const int GEOMETRY_TEXTURE = 0x829E; + public const int GEOMETRY_VERTICES_OUT = 0x8916; + public const int GEOMETRY_VERTICES_OUT_ARB = 0x8DDA; + public const int GEOMETRY_VERTICES_OUT_EXT = 0x8DDA; + public const int GEQUAL = 0x0206; + public const int GET_TEXTURE_IMAGE_FORMAT = 0x8291; + public const int GET_TEXTURE_IMAGE_TYPE = 0x8292; + public const int GLOBAL_ALPHA_FACTOR_SUN = 0x81DA; + public const int GLOBAL_ALPHA_SUN = 0x81D9; + public const int GLYPH_HAS_KERNING_BIT_NV = 0x100; + public const int GLYPH_HEIGHT_BIT_NV = 0x02; + public const int GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV = 0x10; + public const int GLYPH_HORIZONTAL_BEARING_X_BIT_NV = 0x04; + public const int GLYPH_HORIZONTAL_BEARING_Y_BIT_NV = 0x08; + public const int GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80; + public const int GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20; + public const int GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40; + public const int GLYPH_WIDTH_BIT_NV = 0x01; + public const int GPU_ADDRESS_NV = 0x8F34; + public const int GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = 0x9049; + public const int GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = 0x9047; + public const int GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = 0x904B; + public const int GPU_MEMORY_INFO_EVICTION_COUNT_NVX = 0x904A; + public const int GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = 0x9048; + public const int GREATER = 0x0204; + public const int GREEN = 0x1904; + public const int GREEN_BIT_ATI = 0x00000002; + public const int GREEN_INTEGER = 0x8D95; + public const int GREEN_INTEGER_EXT = 0x8D95; + public const int GREEN_MAX_CLAMP_INGR = 0x8565; + public const int GREEN_MIN_CLAMP_INGR = 0x8561; + public const int GREEN_NV = 0x1904; + public const int GUILTY_CONTEXT_RESET = 0x8253; + public const int GUILTY_CONTEXT_RESET_ARB = 0x8253; + public const int HALF_APPLE = 0x140B; + public const int HALF_BIAS_NEGATE_NV = 0x853B; + public const int HALF_BIAS_NORMAL_NV = 0x853A; + public const int HALF_BIT_ATI = 0x00000008; + public const int HALF_FLOAT = 0x140B; + public const int HALF_FLOAT_ARB = 0x140B; + public const int HALF_FLOAT_NV = 0x140B; + public const int HANDLE_TYPE_D3D11_IMAGE_EXT = 0x958B; + public const int HANDLE_TYPE_D3D11_IMAGE_KMT_EXT = 0x958C; + public const int HANDLE_TYPE_D3D12_FENCE_EXT = 0x9594; + public const int HANDLE_TYPE_D3D12_RESOURCE_EXT = 0x958A; + public const int HANDLE_TYPE_D3D12_TILEPOOL_EXT = 0x9589; + public const int HANDLE_TYPE_OPAQUE_FD_EXT = 0x9586; + public const int HANDLE_TYPE_OPAQUE_WIN32_EXT = 0x9587; + public const int HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT = 0x9588; + public const int HARDLIGHT_KHR = 0x929B; + public const int HARDLIGHT_NV = 0x929B; + public const int HARDMIX_NV = 0x92A9; + public const int HIGH_FLOAT = 0x8DF2; + public const int HIGH_INT = 0x8DF5; + public const int HILO16_NV = 0x86F8; + public const int HILO8_NV = 0x885E; + public const int HILO_NV = 0x86F4; + public const int HISTOGRAM_ALPHA_SIZE_EXT = 0x802B; + public const int HISTOGRAM_BLUE_SIZE_EXT = 0x802A; + public const int HISTOGRAM_EXT = 0x8024; + public const int HISTOGRAM_FORMAT_EXT = 0x8027; + public const int HISTOGRAM_GREEN_SIZE_EXT = 0x8029; + public const int HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C; + public const int HISTOGRAM_RED_SIZE_EXT = 0x8028; + public const int HISTOGRAM_SINK_EXT = 0x802D; + public const int HISTOGRAM_WIDTH_EXT = 0x8026; + public const int HI_BIAS_NV = 0x8714; + public const int HI_SCALE_NV = 0x870E; + public const int HORIZONTAL_LINE_TO_NV = 0x06; + public const int HSL_COLOR_KHR = 0x92AF; + public const int HSL_COLOR_NV = 0x92AF; + public const int HSL_HUE_KHR = 0x92AD; + public const int HSL_HUE_NV = 0x92AD; + public const int HSL_LUMINOSITY_KHR = 0x92B0; + public const int HSL_LUMINOSITY_NV = 0x92B0; + public const int HSL_SATURATION_KHR = 0x92AE; + public const int HSL_SATURATION_NV = 0x92AE; + public const int IDENTITY_NV = 0x862A; + public const int IGNORE_BORDER_HP = 0x8150; + public const int IMAGE_1D = 0x904C; + public const int IMAGE_1D_ARRAY = 0x9052; + public const int IMAGE_1D_ARRAY_EXT = 0x9052; + public const int IMAGE_1D_EXT = 0x904C; + public const int IMAGE_2D = 0x904D; + public const int IMAGE_2D_ARRAY = 0x9053; + public const int IMAGE_2D_ARRAY_EXT = 0x9053; + public const int IMAGE_2D_EXT = 0x904D; + public const int IMAGE_2D_MULTISAMPLE = 0x9055; + public const int IMAGE_2D_MULTISAMPLE_ARRAY = 0x9056; + public const int IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9056; + public const int IMAGE_2D_MULTISAMPLE_EXT = 0x9055; + public const int IMAGE_2D_RECT = 0x904F; + public const int IMAGE_2D_RECT_EXT = 0x904F; + public const int IMAGE_3D = 0x904E; + public const int IMAGE_3D_EXT = 0x904E; + public const int IMAGE_BINDING_ACCESS = 0x8F3E; + public const int IMAGE_BINDING_ACCESS_EXT = 0x8F3E; + public const int IMAGE_BINDING_FORMAT = 0x906E; + public const int IMAGE_BINDING_FORMAT_EXT = 0x906E; + public const int IMAGE_BINDING_LAYER = 0x8F3D; + public const int IMAGE_BINDING_LAYERED = 0x8F3C; + public const int IMAGE_BINDING_LAYERED_EXT = 0x8F3C; + public const int IMAGE_BINDING_LAYER_EXT = 0x8F3D; + public const int IMAGE_BINDING_LEVEL = 0x8F3B; + public const int IMAGE_BINDING_LEVEL_EXT = 0x8F3B; + public const int IMAGE_BINDING_NAME = 0x8F3A; + public const int IMAGE_BINDING_NAME_EXT = 0x8F3A; + public const int IMAGE_BUFFER = 0x9051; + public const int IMAGE_BUFFER_EXT = 0x9051; + public const int IMAGE_CLASS_10_10_10_2 = 0x82C3; + public const int IMAGE_CLASS_11_11_10 = 0x82C2; + public const int IMAGE_CLASS_1_X_16 = 0x82BE; + public const int IMAGE_CLASS_1_X_32 = 0x82BB; + public const int IMAGE_CLASS_1_X_8 = 0x82C1; + public const int IMAGE_CLASS_2_X_16 = 0x82BD; + public const int IMAGE_CLASS_2_X_32 = 0x82BA; + public const int IMAGE_CLASS_2_X_8 = 0x82C0; + public const int IMAGE_CLASS_4_X_16 = 0x82BC; + public const int IMAGE_CLASS_4_X_32 = 0x82B9; + public const int IMAGE_CLASS_4_X_8 = 0x82BF; + public const int IMAGE_COMPATIBILITY_CLASS = 0x82A8; + public const int IMAGE_CUBE = 0x9050; + public const int IMAGE_CUBE_EXT = 0x9050; + public const int IMAGE_CUBE_MAP_ARRAY = 0x9054; + public const int IMAGE_CUBE_MAP_ARRAY_EXT = 0x9054; + public const int IMAGE_CUBIC_WEIGHT_HP = 0x815E; + public const int IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x90C9; + public const int IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x90C8; + public const int IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7; + public const int IMAGE_MAG_FILTER_HP = 0x815C; + public const int IMAGE_MIN_FILTER_HP = 0x815D; + public const int IMAGE_PIXEL_FORMAT = 0x82A9; + public const int IMAGE_PIXEL_TYPE = 0x82AA; + public const int IMAGE_ROTATE_ANGLE_HP = 0x8159; + public const int IMAGE_ROTATE_ORIGIN_X_HP = 0x815A; + public const int IMAGE_ROTATE_ORIGIN_Y_HP = 0x815B; + public const int IMAGE_SCALE_X_HP = 0x8155; + public const int IMAGE_SCALE_Y_HP = 0x8156; + public const int IMAGE_TEXEL_SIZE = 0x82A7; + public const int IMAGE_TRANSFORM_2D_HP = 0x8161; + public const int IMAGE_TRANSLATE_X_HP = 0x8157; + public const int IMAGE_TRANSLATE_Y_HP = 0x8158; + public const int IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + public const int IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B; + public const int IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; + public const int IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A; + public const int INCLUSIVE_EXT = 0x8F10; + public const int INCR = 0x1E02; + public const int INCR_WRAP = 0x8507; + public const int INCR_WRAP_EXT = 0x8507; + public const int INDEX_ARRAY_ADDRESS_NV = 0x8F24; + public const int INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899; + public const int INDEX_ARRAY_COUNT_EXT = 0x8087; + public const int INDEX_ARRAY_EXT = 0x8077; + public const int INDEX_ARRAY_LENGTH_NV = 0x8F2E; + public const int INDEX_ARRAY_LIST_IBM = 103073; + public const int INDEX_ARRAY_LIST_STRIDE_IBM = 103083; + public const int INDEX_ARRAY_POINTER_EXT = 0x8091; + public const int INDEX_ARRAY_STRIDE_EXT = 0x8086; + public const int INDEX_ARRAY_TYPE_EXT = 0x8085; + public const int INDEX_BIT_PGI = 0x00080000; + public const int INDEX_MATERIAL_EXT = 0x81B8; + public const int INDEX_MATERIAL_FACE_EXT = 0x81BA; + public const int INDEX_MATERIAL_PARAMETER_EXT = 0x81B9; + public const int INDEX_TEST_EXT = 0x81B5; + public const int INDEX_TEST_FUNC_EXT = 0x81B6; + public const int INDEX_TEST_REF_EXT = 0x81B7; + public const int INFO_LOG_LENGTH = 0x8B84; + public const int INNOCENT_CONTEXT_RESET = 0x8254; + public const int INNOCENT_CONTEXT_RESET_ARB = 0x8254; + public const int INSTRUMENT_BUFFER_POINTER_SGIX = 0x8180; + public const int INSTRUMENT_MEASUREMENTS_SGIX = 0x8181; + public const int INT = 0x1404; + public const int INT16_NV = 0x8FE4; + public const int INT16_VEC2_NV = 0x8FE5; + public const int INT16_VEC3_NV = 0x8FE6; + public const int INT16_VEC4_NV = 0x8FE7; + public const int INT64_ARB = 0x140E; + public const int INT64_NV = 0x140E; + public const int INT64_VEC2_ARB = 0x8FE9; + public const int INT64_VEC2_NV = 0x8FE9; + public const int INT64_VEC3_ARB = 0x8FEA; + public const int INT64_VEC3_NV = 0x8FEA; + public const int INT64_VEC4_ARB = 0x8FEB; + public const int INT64_VEC4_NV = 0x8FEB; + public const int INT8_NV = 0x8FE0; + public const int INT8_VEC2_NV = 0x8FE1; + public const int INT8_VEC3_NV = 0x8FE2; + public const int INT8_VEC4_NV = 0x8FE3; + public const int INTENSITY12_EXT = 0x804C; + public const int INTENSITY16F_ARB = 0x881D; + public const int INTENSITY16I_EXT = 0x8D8B; + public const int INTENSITY16UI_EXT = 0x8D79; + public const int INTENSITY16_EXT = 0x804D; + public const int INTENSITY16_SNORM = 0x901B; + public const int INTENSITY32F_ARB = 0x8817; + public const int INTENSITY32I_EXT = 0x8D85; + public const int INTENSITY32UI_EXT = 0x8D73; + public const int INTENSITY4_EXT = 0x804A; + public const int INTENSITY8I_EXT = 0x8D91; + public const int INTENSITY8UI_EXT = 0x8D7F; + public const int INTENSITY8_EXT = 0x804B; + public const int INTENSITY8_SNORM = 0x9017; + public const int INTENSITY_EXT = 0x8049; + public const int INTENSITY_FLOAT16_APPLE = 0x881D; + public const int INTENSITY_FLOAT16_ATI = 0x881D; + public const int INTENSITY_FLOAT32_APPLE = 0x8817; + public const int INTENSITY_FLOAT32_ATI = 0x8817; + public const int INTENSITY_SNORM = 0x9013; + public const int INTERLACE_OML = 0x8980; + public const int INTERLACE_READ_INGR = 0x8568; + public const int INTERLACE_READ_OML = 0x8981; + public const int INTERLACE_SGIX = 0x8094; + public const int INTERLEAVED_ATTRIBS = 0x8C8C; + public const int INTERLEAVED_ATTRIBS_EXT = 0x8C8C; + public const int INTERLEAVED_ATTRIBS_NV = 0x8C8C; + public const int INTERNALFORMAT_ALPHA_SIZE = 0x8274; + public const int INTERNALFORMAT_ALPHA_TYPE = 0x827B; + public const int INTERNALFORMAT_BLUE_SIZE = 0x8273; + public const int INTERNALFORMAT_BLUE_TYPE = 0x827A; + public const int INTERNALFORMAT_DEPTH_SIZE = 0x8275; + public const int INTERNALFORMAT_DEPTH_TYPE = 0x827C; + public const int INTERNALFORMAT_GREEN_SIZE = 0x8272; + public const int INTERNALFORMAT_GREEN_TYPE = 0x8279; + public const int INTERNALFORMAT_PREFERRED = 0x8270; + public const int INTERNALFORMAT_RED_SIZE = 0x8271; + public const int INTERNALFORMAT_RED_TYPE = 0x8278; + public const int INTERNALFORMAT_SHARED_SIZE = 0x8277; + public const int INTERNALFORMAT_STENCIL_SIZE = 0x8276; + public const int INTERNALFORMAT_STENCIL_TYPE = 0x827D; + public const int INTERNALFORMAT_SUPPORTED = 0x826F; + public const int INTERPOLATE_ARB = 0x8575; + public const int INTERPOLATE_EXT = 0x8575; + public const int INT_2_10_10_10_REV = 0x8D9F; + public const int INT_IMAGE_1D = 0x9057; + public const int INT_IMAGE_1D_ARRAY = 0x905D; + public const int INT_IMAGE_1D_ARRAY_EXT = 0x905D; + public const int INT_IMAGE_1D_EXT = 0x9057; + public const int INT_IMAGE_2D = 0x9058; + public const int INT_IMAGE_2D_ARRAY = 0x905E; + public const int INT_IMAGE_2D_ARRAY_EXT = 0x905E; + public const int INT_IMAGE_2D_EXT = 0x9058; + public const int INT_IMAGE_2D_MULTISAMPLE = 0x9060; + public const int INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9061; + public const int INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9061; + public const int INT_IMAGE_2D_MULTISAMPLE_EXT = 0x9060; + public const int INT_IMAGE_2D_RECT = 0x905A; + public const int INT_IMAGE_2D_RECT_EXT = 0x905A; + public const int INT_IMAGE_3D = 0x9059; + public const int INT_IMAGE_3D_EXT = 0x9059; + public const int INT_IMAGE_BUFFER = 0x905C; + public const int INT_IMAGE_BUFFER_EXT = 0x905C; + public const int INT_IMAGE_CUBE = 0x905B; + public const int INT_IMAGE_CUBE_EXT = 0x905B; + public const int INT_IMAGE_CUBE_MAP_ARRAY = 0x905F; + public const int INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x905F; + public const int INT_SAMPLER_1D = 0x8DC9; + public const int INT_SAMPLER_1D_ARRAY = 0x8DCE; + public const int INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE; + public const int INT_SAMPLER_1D_EXT = 0x8DC9; + public const int INT_SAMPLER_2D = 0x8DCA; + public const int INT_SAMPLER_2D_ARRAY = 0x8DCF; + public const int INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF; + public const int INT_SAMPLER_2D_EXT = 0x8DCA; + public const int INT_SAMPLER_2D_MULTISAMPLE = 0x9109; + public const int INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C; + public const int INT_SAMPLER_2D_RECT = 0x8DCD; + public const int INT_SAMPLER_2D_RECT_EXT = 0x8DCD; + public const int INT_SAMPLER_3D = 0x8DCB; + public const int INT_SAMPLER_3D_EXT = 0x8DCB; + public const int INT_SAMPLER_BUFFER = 0x8DD0; + public const int INT_SAMPLER_BUFFER_AMD = 0x9002; + public const int INT_SAMPLER_BUFFER_EXT = 0x8DD0; + public const int INT_SAMPLER_CUBE = 0x8DCC; + public const int INT_SAMPLER_CUBE_EXT = 0x8DCC; + public const int INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E; + public const int INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900E; + public const int INT_SAMPLER_RENDERBUFFER_NV = 0x8E57; + public const int INT_VEC2 = 0x8B53; + public const int INT_VEC2_ARB = 0x8B53; + public const int INT_VEC3 = 0x8B54; + public const int INT_VEC3_ARB = 0x8B54; + public const int INT_VEC4 = 0x8B55; + public const int INT_VEC4_ARB = 0x8B55; + public const int INVALID_ENUM = 0x0500; + public const int INVALID_FRAMEBUFFER_OPERATION = 0x0506; + public const int INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506; + public const uint INVALID_INDEX = 0xFFFFFFFF; + public const int INVALID_OPERATION = 0x0502; + public const int INVALID_VALUE = 0x0501; + public const int INVARIANT_DATATYPE_EXT = 0x87EB; + public const int INVARIANT_EXT = 0x87C2; + public const int INVARIANT_VALUE_EXT = 0x87EA; + public const int INVERSE_NV = 0x862B; + public const int INVERSE_TRANSPOSE_NV = 0x862D; + public const int INVERT = 0x150A; + public const int INVERTED_SCREEN_W_REND = 0x8491; + public const int INVERT_OVG_NV = 0x92B4; + public const int INVERT_RGB_NV = 0x92A3; + public const int IR_INSTRUMENT1_SGIX = 0x817F; + public const int ISOLINES = 0x8E7A; + public const int IS_PER_PATCH = 0x92E7; + public const int IS_ROW_MAJOR = 0x9300; + public const int ITALIC_BIT_NV = 0x02; + public const int IUI_N3F_V2F_EXT = 0x81AF; + public const int IUI_N3F_V3F_EXT = 0x81B0; + public const int IUI_V2F_EXT = 0x81AD; + public const int IUI_V3F_EXT = 0x81AE; + public const int KEEP = 0x1E00; + public const int LARGE_CCW_ARC_TO_NV = 0x16; + public const int LARGE_CW_ARC_TO_NV = 0x18; + public const int LAST_VERTEX_CONVENTION = 0x8E4E; + public const int LAST_VERTEX_CONVENTION_EXT = 0x8E4E; + public const int LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027; + public const int LAYER_NV = 0x8DAA; + public const int LAYER_PROVOKING_VERTEX = 0x825E; + public const int LAYOUT_COLOR_ATTACHMENT_EXT = 0x958E; + public const int LAYOUT_DEFAULT_INTEL = 0; + public const int LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT = 0x9531; + public const int LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT = 0x9530; + public const int LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT = 0x958F; + public const int LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT = 0x9590; + public const int LAYOUT_GENERAL_EXT = 0x958D; + public const int LAYOUT_LINEAR_CPU_CACHED_INTEL = 2; + public const int LAYOUT_LINEAR_INTEL = 1; + public const int LAYOUT_SHADER_READ_ONLY_EXT = 0x9591; + public const int LAYOUT_TRANSFER_DST_EXT = 0x9593; + public const int LAYOUT_TRANSFER_SRC_EXT = 0x9592; + public const int LEFT = 0x0406; + public const int LEQUAL = 0x0203; + public const int LERP_ATI = 0x8969; + public const int LESS = 0x0201; + public const int LGPU_SEPARATE_STORAGE_BIT_NVX = 0x0800; + public const int LIGHTEN_KHR = 0x9298; + public const int LIGHTEN_NV = 0x9298; + public const int LIGHT_ENV_MODE_SGIX = 0x8407; + public const int LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8; + public const int LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x85B0; + public const int LINE = 0x1B01; + public const int LINEAR = 0x2601; + public const int LINEARBURN_NV = 0x92A5; + public const int LINEARDODGE_NV = 0x92A4; + public const int LINEARLIGHT_NV = 0x92A7; + public const int LINEAR_CLIPMAP_LINEAR_SGIX = 0x8170; + public const int LINEAR_CLIPMAP_NEAREST_SGIX = 0x844F; + public const int LINEAR_DETAIL_ALPHA_SGIS = 0x8098; + public const int LINEAR_DETAIL_COLOR_SGIS = 0x8099; + public const int LINEAR_DETAIL_SGIS = 0x8097; + public const int LINEAR_MIPMAP_LINEAR = 0x2703; + public const int LINEAR_MIPMAP_NEAREST = 0x2701; + public const int LINEAR_SHARPEN_ALPHA_SGIS = 0x80AE; + public const int LINEAR_SHARPEN_COLOR_SGIS = 0x80AF; + public const int LINEAR_SHARPEN_SGIS = 0x80AD; + public const int LINEAR_TILING_EXT = 0x9585; + public const int LINES = 0x0001; + public const int LINES_ADJACENCY = 0x000A; + public const int LINES_ADJACENCY_ARB = 0x000A; + public const int LINES_ADJACENCY_EXT = 0x000A; + public const int LINE_LOOP = 0x0002; + public const int LINE_SMOOTH = 0x0B20; + public const int LINE_SMOOTH_HINT = 0x0C52; + public const int LINE_STRIP = 0x0003; + public const int LINE_STRIP_ADJACENCY = 0x000B; + public const int LINE_STRIP_ADJACENCY_ARB = 0x000B; + public const int LINE_STRIP_ADJACENCY_EXT = 0x000B; + public const int LINE_TO_NV = 0x04; + public const int LINE_WIDTH = 0x0B21; + public const int LINE_WIDTH_COMMAND_NV = 0x000D; + public const int LINE_WIDTH_GRANULARITY = 0x0B23; + public const int LINE_WIDTH_RANGE = 0x0B22; + public const int LINK_STATUS = 0x8B82; + public const int LIST_PRIORITY_SGIX = 0x8182; + public const int LOCAL_CONSTANT_DATATYPE_EXT = 0x87ED; + public const int LOCAL_CONSTANT_EXT = 0x87C3; + public const int LOCAL_CONSTANT_VALUE_EXT = 0x87EC; + public const int LOCAL_EXT = 0x87C4; + public const int LOCATION = 0x930E; + public const int LOCATION_COMPONENT = 0x934A; + public const int LOCATION_INDEX = 0x930F; + public const int LOGIC_OP_MODE = 0x0BF0; + public const int LOSE_CONTEXT_ON_RESET = 0x8252; + public const int LOSE_CONTEXT_ON_RESET_ARB = 0x8252; + public const int LOWER_LEFT = 0x8CA1; + public const int LOW_FLOAT = 0x8DF0; + public const int LOW_INT = 0x8DF3; + public const int LO_BIAS_NV = 0x8715; + public const int LO_SCALE_NV = 0x870F; + public const int LUID_SIZE_EXT = 8; + public const int LUMINANCE12_ALPHA12_EXT = 0x8047; + public const int LUMINANCE12_ALPHA4_EXT = 0x8046; + public const int LUMINANCE12_EXT = 0x8041; + public const int LUMINANCE16F_ARB = 0x881E; + public const int LUMINANCE16F_EXT = 0x881E; + public const int LUMINANCE16I_EXT = 0x8D8C; + public const int LUMINANCE16UI_EXT = 0x8D7A; + public const int LUMINANCE16_ALPHA16_EXT = 0x8048; + public const int LUMINANCE16_ALPHA16_SNORM = 0x901A; + public const int LUMINANCE16_EXT = 0x8042; + public const int LUMINANCE16_SNORM = 0x9019; + public const int LUMINANCE32F_ARB = 0x8818; + public const int LUMINANCE32F_EXT = 0x8818; + public const int LUMINANCE32I_EXT = 0x8D86; + public const int LUMINANCE32UI_EXT = 0x8D74; + public const int LUMINANCE4_ALPHA4_EXT = 0x8043; + public const int LUMINANCE4_EXT = 0x803F; + public const int LUMINANCE6_ALPHA2_EXT = 0x8044; + public const int LUMINANCE8I_EXT = 0x8D92; + public const int LUMINANCE8UI_EXT = 0x8D80; + public const int LUMINANCE8_ALPHA8_EXT = 0x8045; + public const int LUMINANCE8_ALPHA8_SNORM = 0x9016; + public const int LUMINANCE8_EXT = 0x8040; + public const int LUMINANCE8_SNORM = 0x9015; + public const int LUMINANCE_ALPHA16F_ARB = 0x881F; + public const int LUMINANCE_ALPHA16F_EXT = 0x881F; + public const int LUMINANCE_ALPHA16I_EXT = 0x8D8D; + public const int LUMINANCE_ALPHA16UI_EXT = 0x8D7B; + public const int LUMINANCE_ALPHA32F_ARB = 0x8819; + public const int LUMINANCE_ALPHA32F_EXT = 0x8819; + public const int LUMINANCE_ALPHA32I_EXT = 0x8D87; + public const int LUMINANCE_ALPHA32UI_EXT = 0x8D75; + public const int LUMINANCE_ALPHA8I_EXT = 0x8D93; + public const int LUMINANCE_ALPHA8UI_EXT = 0x8D81; + public const int LUMINANCE_ALPHA_FLOAT16_APPLE = 0x881F; + public const int LUMINANCE_ALPHA_FLOAT16_ATI = 0x881F; + public const int LUMINANCE_ALPHA_FLOAT32_APPLE = 0x8819; + public const int LUMINANCE_ALPHA_FLOAT32_ATI = 0x8819; + public const int LUMINANCE_ALPHA_INTEGER_EXT = 0x8D9D; + public const int LUMINANCE_ALPHA_SNORM = 0x9012; + public const int LUMINANCE_FLOAT16_APPLE = 0x881E; + public const int LUMINANCE_FLOAT16_ATI = 0x881E; + public const int LUMINANCE_FLOAT32_APPLE = 0x8818; + public const int LUMINANCE_FLOAT32_ATI = 0x8818; + public const int LUMINANCE_INTEGER_EXT = 0x8D9C; + public const int LUMINANCE_SNORM = 0x9011; + public const int MAD_ATI = 0x8968; + public const int MAGNITUDE_BIAS_NV = 0x8718; + public const int MAGNITUDE_SCALE_NV = 0x8712; + public const int MAJOR_VERSION = 0x821B; + public const int MANUAL_GENERATE_MIPMAP = 0x8294; + public const int MAP1_BINORMAL_EXT = 0x8446; + public const int MAP1_TANGENT_EXT = 0x8444; + public const int MAP1_VERTEX_ATTRIB0_4_NV = 0x8660; + public const int MAP1_VERTEX_ATTRIB10_4_NV = 0x866A; + public const int MAP1_VERTEX_ATTRIB11_4_NV = 0x866B; + public const int MAP1_VERTEX_ATTRIB12_4_NV = 0x866C; + public const int MAP1_VERTEX_ATTRIB13_4_NV = 0x866D; + public const int MAP1_VERTEX_ATTRIB14_4_NV = 0x866E; + public const int MAP1_VERTEX_ATTRIB15_4_NV = 0x866F; + public const int MAP1_VERTEX_ATTRIB1_4_NV = 0x8661; + public const int MAP1_VERTEX_ATTRIB2_4_NV = 0x8662; + public const int MAP1_VERTEX_ATTRIB3_4_NV = 0x8663; + public const int MAP1_VERTEX_ATTRIB4_4_NV = 0x8664; + public const int MAP1_VERTEX_ATTRIB5_4_NV = 0x8665; + public const int MAP1_VERTEX_ATTRIB6_4_NV = 0x8666; + public const int MAP1_VERTEX_ATTRIB7_4_NV = 0x8667; + public const int MAP1_VERTEX_ATTRIB8_4_NV = 0x8668; + public const int MAP1_VERTEX_ATTRIB9_4_NV = 0x8669; + public const int MAP2_BINORMAL_EXT = 0x8447; + public const int MAP2_TANGENT_EXT = 0x8445; + public const int MAP2_VERTEX_ATTRIB0_4_NV = 0x8670; + public const int MAP2_VERTEX_ATTRIB10_4_NV = 0x867A; + public const int MAP2_VERTEX_ATTRIB11_4_NV = 0x867B; + public const int MAP2_VERTEX_ATTRIB12_4_NV = 0x867C; + public const int MAP2_VERTEX_ATTRIB13_4_NV = 0x867D; + public const int MAP2_VERTEX_ATTRIB14_4_NV = 0x867E; + public const int MAP2_VERTEX_ATTRIB15_4_NV = 0x867F; + public const int MAP2_VERTEX_ATTRIB1_4_NV = 0x8671; + public const int MAP2_VERTEX_ATTRIB2_4_NV = 0x8672; + public const int MAP2_VERTEX_ATTRIB3_4_NV = 0x8673; + public const int MAP2_VERTEX_ATTRIB4_4_NV = 0x8674; + public const int MAP2_VERTEX_ATTRIB5_4_NV = 0x8675; + public const int MAP2_VERTEX_ATTRIB6_4_NV = 0x8676; + public const int MAP2_VERTEX_ATTRIB7_4_NV = 0x8677; + public const int MAP2_VERTEX_ATTRIB8_4_NV = 0x8678; + public const int MAP2_VERTEX_ATTRIB9_4_NV = 0x8679; + public const int MAP_ATTRIB_U_ORDER_NV = 0x86C3; + public const int MAP_ATTRIB_V_ORDER_NV = 0x86C4; + public const int MAP_COHERENT_BIT = 0x0080; + public const int MAP_FLUSH_EXPLICIT_BIT = 0x0010; + public const int MAP_INVALIDATE_BUFFER_BIT = 0x0008; + public const int MAP_INVALIDATE_RANGE_BIT = 0x0004; + public const int MAP_PERSISTENT_BIT = 0x0040; + public const int MAP_READ_BIT = 0x0001; + public const int MAP_TESSELLATION_NV = 0x86C2; + public const int MAP_UNSYNCHRONIZED_BIT = 0x0020; + public const int MAP_WRITE_BIT = 0x0002; + public const int MATERIAL_SIDE_HINT_PGI = 0x1A22C; + public const int MATRIX0_ARB = 0x88C0; + public const int MATRIX0_NV = 0x8630; + public const int MATRIX10_ARB = 0x88CA; + public const int MATRIX11_ARB = 0x88CB; + public const int MATRIX12_ARB = 0x88CC; + public const int MATRIX13_ARB = 0x88CD; + public const int MATRIX14_ARB = 0x88CE; + public const int MATRIX15_ARB = 0x88CF; + public const int MATRIX16_ARB = 0x88D0; + public const int MATRIX17_ARB = 0x88D1; + public const int MATRIX18_ARB = 0x88D2; + public const int MATRIX19_ARB = 0x88D3; + public const int MATRIX1_ARB = 0x88C1; + public const int MATRIX1_NV = 0x8631; + public const int MATRIX20_ARB = 0x88D4; + public const int MATRIX21_ARB = 0x88D5; + public const int MATRIX22_ARB = 0x88D6; + public const int MATRIX23_ARB = 0x88D7; + public const int MATRIX24_ARB = 0x88D8; + public const int MATRIX25_ARB = 0x88D9; + public const int MATRIX26_ARB = 0x88DA; + public const int MATRIX27_ARB = 0x88DB; + public const int MATRIX28_ARB = 0x88DC; + public const int MATRIX29_ARB = 0x88DD; + public const int MATRIX2_ARB = 0x88C2; + public const int MATRIX2_NV = 0x8632; + public const int MATRIX30_ARB = 0x88DE; + public const int MATRIX31_ARB = 0x88DF; + public const int MATRIX3_ARB = 0x88C3; + public const int MATRIX3_NV = 0x8633; + public const int MATRIX4_ARB = 0x88C4; + public const int MATRIX4_NV = 0x8634; + public const int MATRIX5_ARB = 0x88C5; + public const int MATRIX5_NV = 0x8635; + public const int MATRIX6_ARB = 0x88C6; + public const int MATRIX6_NV = 0x8636; + public const int MATRIX7_ARB = 0x88C7; + public const int MATRIX7_NV = 0x8637; + public const int MATRIX8_ARB = 0x88C8; + public const int MATRIX9_ARB = 0x88C9; + public const int MATRIX_EXT = 0x87C0; + public const int MATRIX_INDEX_ARRAY_ARB = 0x8844; + public const int MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849; + public const int MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846; + public const int MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848; + public const int MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847; + public const int MATRIX_PALETTE_ARB = 0x8840; + public const int MATRIX_STRIDE = 0x92FF; + public const int MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = 0x00200000; + public const int MAT_AMBIENT_BIT_PGI = 0x00100000; + public const int MAT_COLOR_INDEXES_BIT_PGI = 0x01000000; + public const int MAT_DIFFUSE_BIT_PGI = 0x00400000; + public const int MAT_EMISSION_BIT_PGI = 0x00800000; + public const int MAT_SHININESS_BIT_PGI = 0x02000000; + public const int MAT_SPECULAR_BIT_PGI = 0x04000000; + public const int MAX = 0x8008; + public const int MAX_3D_TEXTURE_SIZE = 0x8073; + public const int MAX_3D_TEXTURE_SIZE_EXT = 0x8073; + public const int MAX_4D_TEXTURE_SIZE_SGIS = 0x8138; + public const int MAX_ACTIVE_LIGHTS_SGIX = 0x8405; + public const int MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + public const int MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x88FF; + public const int MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360; + public const int MAX_ASYNC_HISTOGRAM_SGIX = 0x832D; + public const int MAX_ASYNC_READ_PIXELS_SGIX = 0x8361; + public const int MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F; + public const int MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x92DC; + public const int MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x92D8; + public const int MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x8DED; + public const int MAX_CLIPMAP_DEPTH_SGIX = 0x8177; + public const int MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178; + public const int MAX_CLIP_DISTANCES = 0x0D32; + public const int MAX_COARSE_FRAGMENT_SAMPLES_NV = 0x955F; + public const int MAX_COLOR_ATTACHMENTS = 0x8CDF; + public const int MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF; + public const int MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD = 0x91B3; + public const int MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD = 0x91B4; + public const int MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3; + public const int MAX_COLOR_TEXTURE_SAMPLES = 0x910E; + public const int MAX_COMBINED_ATOMIC_COUNTERS = 0x92D7; + public const int MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x92D1; + public const int MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA; + public const int MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266; + public const int MAX_COMBINED_DIMENSIONS = 0x8282; + public const int MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + public const int MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32; + public const int MAX_COMBINED_IMAGE_UNIFORMS = 0x90CF; + public const int MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39; + public const int MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x8F39; + public const int MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV = 0x8E67; + public const int MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39; + public const int MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC; + public const int MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV = 0x8E6F; + public const int MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E; + public const int MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F; + public const int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + public const int MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D; + public const int MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + public const int MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + public const int MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265; + public const int MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264; + public const int MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = 0x90EB; + public const int MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = 0x91BF; + public const int MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD; + public const int MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB; + public const int MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262; + public const int MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC; + public const int MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB; + public const int MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263; + public const int MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = 0x9344; + public const int MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = 0x9345; + public const int MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE; + public const int MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB; + public const int MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF; + public const int MAX_CONVOLUTION_HEIGHT_EXT = 0x801B; + public const int MAX_CONVOLUTION_WIDTH_EXT = 0x801A; + public const int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + public const int MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x851C; + public const int MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x851C; + public const int MAX_CULL_DISTANCES = 0x82F9; + public const int MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C; + public const int MAX_DEBUG_LOGGED_MESSAGES = 0x9144; + public const int MAX_DEBUG_LOGGED_MESSAGES_AMD = 0x9144; + public const int MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144; + public const int MAX_DEBUG_MESSAGE_LENGTH = 0x9143; + public const int MAX_DEBUG_MESSAGE_LENGTH_AMD = 0x9143; + public const int MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143; + public const int MAX_DEEP_3D_TEXTURE_DEPTH_NV = 0x90D1; + public const int MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0; + public const int MAX_DEFORMATION_ORDER_SGIX = 0x8197; + public const int MAX_DEPTH = 0x8280; + public const int MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD = 0x91B5; + public const int MAX_DEPTH_TEXTURE_SAMPLES = 0x910F; + public const int MAX_DETACHED_BUFFERS_NV = 0x95AD; + public const int MAX_DETACHED_TEXTURES_NV = 0x95AC; + public const int MAX_DRAW_BUFFERS = 0x8824; + public const int MAX_DRAW_BUFFERS_ARB = 0x8824; + public const int MAX_DRAW_BUFFERS_ATI = 0x8824; + public const int MAX_DRAW_MESH_TASKS_COUNT_NV = 0x953D; + public const int MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC; + public const int MAX_ELEMENTS_INDICES = 0x80E9; + public const int MAX_ELEMENTS_INDICES_EXT = 0x80E9; + public const int MAX_ELEMENTS_VERTICES = 0x80E8; + public const int MAX_ELEMENTS_VERTICES_EXT = 0x80E8; + public const int MAX_ELEMENT_INDEX = 0x8D6B; + public const int MAX_EXT = 0x8008; + public const int MAX_FOG_FUNC_POINTS_SGIS = 0x812C; + public const int MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6; + public const int MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0; + public const int MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x8DE3; + public const int MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE; + public const int MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + public const int MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C; + public const int MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5C; + public const int MAX_FRAGMENT_LIGHTS_SGIX = 0x8404; + public const int MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868; + public const int MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA; + public const int MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + public const int MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + public const int MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49; + public const int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; + public const int MAX_FRAMEBUFFER_HEIGHT = 0x9316; + public const int MAX_FRAMEBUFFER_LAYERS = 0x9317; + public const int MAX_FRAMEBUFFER_SAMPLES = 0x9318; + public const int MAX_FRAMEBUFFER_WIDTH = 0x9315; + public const int MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D; + public const int MAX_GENERAL_COMBINERS_NV = 0x854D; + public const int MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5; + public const int MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF; + public const int MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x8DE4; + public const int MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD; + public const int MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123; + public const int MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124; + public const int MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0; + public const int MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0; + public const int MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x8DE0; + public const int MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = 0x8E5A; + public const int MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A; + public const int MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7; + public const int MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29; + public const int MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29; + public const int MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x8C29; + public const int MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1; + public const int MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1; + public const int MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8DE1; + public const int MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C; + public const int MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF; + public const int MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF; + public const int MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8DDF; + public const int MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD; + public const int MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x8DDD; + public const int MAX_HEIGHT = 0x827F; + public const int MAX_IMAGE_SAMPLES = 0x906D; + public const int MAX_IMAGE_SAMPLES_EXT = 0x906D; + public const int MAX_IMAGE_UNITS = 0x8F38; + public const int MAX_IMAGE_UNITS_EXT = 0x8F38; + public const int MAX_INTEGER_SAMPLES = 0x9110; + public const int MAX_LABEL_LENGTH = 0x82E8; + public const int MAX_LAYERS = 0x8281; + public const int MAX_LGPU_GPUS_NVX = 0x92BA; + public const int MAX_MAP_TESSELLATION_NV = 0x86D6; + public const int MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841; + public const int MAX_MESH_ATOMIC_COUNTERS_NV = 0x8E65; + public const int MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV = 0x8E64; + public const int MAX_MESH_IMAGE_UNIFORMS_NV = 0x8E62; + public const int MAX_MESH_OUTPUT_PRIMITIVES_NV = 0x9539; + public const int MAX_MESH_OUTPUT_VERTICES_NV = 0x9538; + public const int MAX_MESH_SHADER_STORAGE_BLOCKS_NV = 0x8E66; + public const int MAX_MESH_TEXTURE_IMAGE_UNITS_NV = 0x8E61; + public const int MAX_MESH_TOTAL_MEMORY_SIZE_NV = 0x9536; + public const int MAX_MESH_UNIFORM_BLOCKS_NV = 0x8E60; + public const int MAX_MESH_UNIFORM_COMPONENTS_NV = 0x8E63; + public const int MAX_MESH_VIEWS_NV = 0x9557; + public const int MAX_MESH_WORK_GROUP_INVOCATIONS_NV = 0x95A2; + public const int MAX_MESH_WORK_GROUP_SIZE_NV = 0x953B; + public const int MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11; + public const int MAX_NAME_LENGTH = 0x92F6; + public const int MAX_NUM_ACTIVE_VARIABLES = 0x92F7; + public const int MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8; + public const int MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CA; + public const int MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x87CD; + public const int MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x87CE; + public const int MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC; + public const int MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x87CB; + public const int MAX_PALETTE_MATRICES_ARB = 0x8842; + public const int MAX_PATCH_VERTICES = 0x8E7D; + public const int MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8337; + public const int MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F1; + public const int MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1; + public const int MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x880B; + public const int MAX_PROGRAM_ATTRIBS_ARB = 0x88AD; + public const int MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8908; + public const int MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5; + public const int MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5; + public const int MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4; + public const int MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x8DA5; + public const int MAX_PROGRAM_GENERIC_RESULTS_NV = 0x8DA6; + public const int MAX_PROGRAM_IF_DEPTH_NV = 0x88F6; + public const int MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1; + public const int MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4; + public const int MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8; + public const int MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7; + public const int MAX_PROGRAM_MATRICES_ARB = 0x862F; + public const int MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E; + public const int MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3; + public const int MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x880E; + public const int MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF; + public const int MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3; + public const int MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB; + public const int MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7; + public const int MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x8810; + public const int MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x880F; + public const int MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x8C27; + public const int MAX_PROGRAM_PARAMETERS_ARB = 0x88A9; + public const int MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x8DA0; + public const int MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x8DA1; + public const int MAX_PROGRAM_PATCH_ATTRIBS_NV = 0x86D8; + public const int MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x8909; + public const int MAX_PROGRAM_SUBROUTINE_NUM_NV = 0x8F45; + public const int MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = 0x8F44; + public const int MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5; + public const int MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + public const int MAX_PROGRAM_TEXEL_OFFSET_EXT = 0x8905; + public const int MAX_PROGRAM_TEXEL_OFFSET_NV = 0x8905; + public const int MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = 0x8F9F; + public const int MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F; + public const int MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F; + public const int MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5F; + public const int MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x880D; + public const int MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x880C; + public const int MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x8C28; + public const int MAX_RASTER_SAMPLES_EXT = 0x9329; + public const int MAX_RATIONAL_EVAL_ORDER_NV = 0x86D7; + public const int MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8; + public const int MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8; + public const int MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x84F8; + public const int MAX_RENDERBUFFER_SIZE = 0x84E8; + public const int MAX_RENDERBUFFER_SIZE_EXT = 0x84E8; + public const int MAX_SAMPLES = 0x8D57; + public const int MAX_SAMPLES_EXT = 0x8D57; + public const int MAX_SAMPLE_MASK_WORDS = 0x8E59; + public const int MAX_SAMPLE_MASK_WORDS_NV = 0x8E59; + public const int MAX_SERVER_WAIT_TIMEOUT = 0x9111; + public const int MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35; + public const int MAX_SHADER_COMPILER_THREADS_ARB = 0x91B0; + public const int MAX_SHADER_COMPILER_THREADS_KHR = 0x91B0; + public const int MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE; + public const int MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD; + public const int MAX_SHININESS_NV = 0x8504; + public const int MAX_SPARSE_3D_TEXTURE_SIZE_AMD = 0x9199; + public const int MAX_SPARSE_3D_TEXTURE_SIZE_ARB = 0x9199; + public const int MAX_SPARSE_ARRAY_TEXTURE_LAYERS = 0x919A; + public const int MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = 0x919A; + public const int MAX_SPARSE_TEXTURE_SIZE_AMD = 0x9198; + public const int MAX_SPARSE_TEXTURE_SIZE_ARB = 0x9198; + public const int MAX_SPOT_EXPONENT_NV = 0x8505; + public const int MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x9349; + public const int MAX_SUBROUTINES = 0x8DE7; + public const int MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8; + public const int MAX_TASK_ATOMIC_COUNTERS_NV = 0x8E6D; + public const int MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV = 0x8E6C; + public const int MAX_TASK_IMAGE_UNIFORMS_NV = 0x8E6A; + public const int MAX_TASK_OUTPUT_COUNT_NV = 0x953A; + public const int MAX_TASK_SHADER_STORAGE_BLOCKS_NV = 0x8E6E; + public const int MAX_TASK_TEXTURE_IMAGE_UNITS_NV = 0x8E69; + public const int MAX_TASK_TOTAL_MEMORY_SIZE_NV = 0x9537; + public const int MAX_TASK_UNIFORM_BLOCKS_NV = 0x8E68; + public const int MAX_TASK_UNIFORM_COMPONENTS_NV = 0x8E6B; + public const int MAX_TASK_WORK_GROUP_INVOCATIONS_NV = 0x95A3; + public const int MAX_TASK_WORK_GROUP_SIZE_NV = 0x953C; + public const int MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3; + public const int MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD; + public const int MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB; + public const int MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C; + public const int MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83; + public const int MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8; + public const int MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81; + public const int MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85; + public const int MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89; + public const int MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F; + public const int MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4; + public const int MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE; + public const int MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC; + public const int MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D; + public const int MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86; + public const int MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9; + public const int MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82; + public const int MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A; + public const int MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80; + public const int MAX_TESS_GEN_LEVEL = 0x8E7E; + public const int MAX_TESS_PATCH_COMPONENTS = 0x8E84; + public const int MAX_TEXTURE_BUFFER_SIZE = 0x8C2B; + public const int MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B; + public const int MAX_TEXTURE_BUFFER_SIZE_EXT = 0x8C2B; + public const int MAX_TEXTURE_COORDS_ARB = 0x8871; + public const int MAX_TEXTURE_COORDS_NV = 0x8871; + public const int MAX_TEXTURE_IMAGE_UNITS = 0x8872; + public const int MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872; + public const int MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872; + public const int MAX_TEXTURE_LOD_BIAS = 0x84FD; + public const int MAX_TEXTURE_LOD_BIAS_EXT = 0x84FD; + public const int MAX_TEXTURE_MAX_ANISOTROPY = 0x84FF; + public const int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF; + public const int MAX_TEXTURE_SIZE = 0x0D33; + public const int MAX_TEXTURE_UNITS_ARB = 0x84E2; + public const int MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV = 0x95B6; + public const int MAX_TRACK_MATRICES_NV = 0x862F; + public const int MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x862E; + public const int MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70; + public const int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + public const int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A; + public const int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = 0x8C8A; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x8C8B; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x8C80; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80; + public const int MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + public const int MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + public const int MAX_UNIFORM_LOCATIONS = 0x826E; + public const int MAX_VARYING_COMPONENTS = 0x8B4B; + public const int MAX_VARYING_COMPONENTS_EXT = 0x8B4B; + public const int MAX_VARYING_FLOATS = 0x8B4B; + public const int MAX_VARYING_FLOATS_ARB = 0x8B4B; + public const int MAX_VARYING_VECTORS = 0x8DFC; + public const int MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x8520; + public const int MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2; + public const int MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC; + public const int MAX_VERTEX_ATTRIBS = 0x8869; + public const int MAX_VERTEX_ATTRIBS_ARB = 0x8869; + public const int MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA; + public const int MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9; + public const int MAX_VERTEX_ATTRIB_STRIDE = 0x82E5; + public const int MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x8DE2; + public const int MAX_VERTEX_HINT_PGI = 0x1A22D; + public const int MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA; + public const int MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + public const int MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87C5; + public const int MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x87C7; + public const int MAX_VERTEX_SHADER_LOCALS_EXT = 0x87C9; + public const int MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87C8; + public const int MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6; + public const int MAX_VERTEX_SHADER_VARIANTS_EXT = 0x87C6; + public const int MAX_VERTEX_STREAMS = 0x8E71; + public const int MAX_VERTEX_STREAMS_ATI = 0x876B; + public const int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + public const int MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C; + public const int MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + public const int MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + public const int MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A; + public const int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; + public const int MAX_VERTEX_UNITS_ARB = 0x86A4; + public const int MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE; + public const int MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x8DDE; + public const int MAX_VIEWPORTS = 0x825B; + public const int MAX_VIEWPORT_DIMS = 0x0D3A; + public const int MAX_VIEWS_OVR = 0x9631; + public const int MAX_WIDTH = 0x827E; + public const int MAX_WINDOW_RECTANGLES_EXT = 0x8F14; + public const int MEDIUM_FLOAT = 0x8DF1; + public const int MEDIUM_INT = 0x8DF4; + public const int MEMORY_ATTACHABLE_ALIGNMENT_NV = 0x95A6; + public const int MEMORY_ATTACHABLE_NV = 0x95A8; + public const int MEMORY_ATTACHABLE_SIZE_NV = 0x95A7; + public const int MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV = 0x9543; + public const int MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV = 0x92DF; + public const int MESH_OUTPUT_TYPE_NV = 0x957B; + public const int MESH_PRIMITIVES_OUT_NV = 0x957A; + public const int MESH_SHADER_BIT_NV = 0x00000040; + public const int MESH_SHADER_NV = 0x9559; + public const int MESH_SUBROUTINE_NV = 0x957C; + public const int MESH_SUBROUTINE_UNIFORM_NV = 0x957E; + public const int MESH_VERTICES_OUT_NV = 0x9579; + public const int MESH_WORK_GROUP_SIZE_NV = 0x953E; + public const int MIN = 0x8007; + public const int MINMAX_EXT = 0x802E; + public const int MINMAX_FORMAT_EXT = 0x802F; + public const int MINMAX_SINK_EXT = 0x8030; + public const int MINOR_VERSION = 0x821C; + public const int MINUS_CLAMPED_NV = 0x92B3; + public const int MINUS_NV = 0x929F; + public const int MIN_EXT = 0x8007; + public const int MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B; + public const int MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5B; + public const int MIN_LOD_WARNING_AMD = 0x919C; + public const int MIN_MAP_BUFFER_ALIGNMENT = 0x90BC; + public const int MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + public const int MIN_PROGRAM_TEXEL_OFFSET_EXT = 0x8904; + public const int MIN_PROGRAM_TEXEL_OFFSET_NV = 0x8904; + public const int MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E; + public const int MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E; + public const int MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5E; + public const int MIN_SAMPLE_SHADING_VALUE = 0x8C37; + public const int MIN_SAMPLE_SHADING_VALUE_ARB = 0x8C37; + public const int MIN_SPARSE_LEVEL_AMD = 0x919B; + public const int MIPMAP = 0x8293; + public const int MIRRORED_REPEAT = 0x8370; + public const int MIRRORED_REPEAT_ARB = 0x8370; + public const int MIRRORED_REPEAT_IBM = 0x8370; + public const int MIRROR_CLAMP_ATI = 0x8742; + public const int MIRROR_CLAMP_EXT = 0x8742; + public const int MIRROR_CLAMP_TO_BORDER_EXT = 0x8912; + public const int MIRROR_CLAMP_TO_EDGE = 0x8743; + public const int MIRROR_CLAMP_TO_EDGE_ATI = 0x8743; + public const int MIRROR_CLAMP_TO_EDGE_EXT = 0x8743; + public const int MITER_REVERT_NV = 0x90A7; + public const int MITER_TRUNCATE_NV = 0x90A8; + public const int MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x932F; + public const int MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x9330; + public const int MODELVIEW0_ARB = 0x1700; + public const int MODELVIEW0_EXT = 0x1700; + public const int MODELVIEW0_MATRIX_EXT = 0x0BA6; + public const int MODELVIEW0_STACK_DEPTH_EXT = 0x0BA3; + public const int MODELVIEW10_ARB = 0x872A; + public const int MODELVIEW11_ARB = 0x872B; + public const int MODELVIEW12_ARB = 0x872C; + public const int MODELVIEW13_ARB = 0x872D; + public const int MODELVIEW14_ARB = 0x872E; + public const int MODELVIEW15_ARB = 0x872F; + public const int MODELVIEW16_ARB = 0x8730; + public const int MODELVIEW17_ARB = 0x8731; + public const int MODELVIEW18_ARB = 0x8732; + public const int MODELVIEW19_ARB = 0x8733; + public const int MODELVIEW1_ARB = 0x850A; + public const int MODELVIEW1_EXT = 0x850A; + public const int MODELVIEW1_MATRIX_EXT = 0x8506; + public const int MODELVIEW1_STACK_DEPTH_EXT = 0x8502; + public const int MODELVIEW20_ARB = 0x8734; + public const int MODELVIEW21_ARB = 0x8735; + public const int MODELVIEW22_ARB = 0x8736; + public const int MODELVIEW23_ARB = 0x8737; + public const int MODELVIEW24_ARB = 0x8738; + public const int MODELVIEW25_ARB = 0x8739; + public const int MODELVIEW26_ARB = 0x873A; + public const int MODELVIEW27_ARB = 0x873B; + public const int MODELVIEW28_ARB = 0x873C; + public const int MODELVIEW29_ARB = 0x873D; + public const int MODELVIEW2_ARB = 0x8722; + public const int MODELVIEW30_ARB = 0x873E; + public const int MODELVIEW31_ARB = 0x873F; + public const int MODELVIEW3_ARB = 0x8723; + public const int MODELVIEW4_ARB = 0x8724; + public const int MODELVIEW5_ARB = 0x8725; + public const int MODELVIEW6_ARB = 0x8726; + public const int MODELVIEW7_ARB = 0x8727; + public const int MODELVIEW8_ARB = 0x8728; + public const int MODELVIEW9_ARB = 0x8729; + public const int MODELVIEW_PROJECTION_NV = 0x8629; + public const int MODULATE_ADD_ATI = 0x8744; + public const int MODULATE_SIGNED_ADD_ATI = 0x8745; + public const int MODULATE_SUBTRACT_ATI = 0x8746; + public const int MOVE_TO_CONTINUES_NV = 0x90B6; + public const int MOVE_TO_NV = 0x02; + public const int MOVE_TO_RESETS_NV = 0x90B5; + public const int MOV_ATI = 0x8961; + public const int MULTICAST_GPUS_NV = 0x92BA; + public const int MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9549; + public const int MULTIPLY_KHR = 0x9294; + public const int MULTIPLY_NV = 0x9294; + public const int MULTISAMPLE = 0x809D; + public const int MULTISAMPLES_NV = 0x9371; + public const int MULTISAMPLE_3DFX = 0x86B2; + public const int MULTISAMPLE_ARB = 0x809D; + public const int MULTISAMPLE_BIT_3DFX = 0x20000000; + public const int MULTISAMPLE_BIT_ARB = 0x20000000; + public const int MULTISAMPLE_BIT_EXT = 0x20000000; + public const int MULTISAMPLE_COVERAGE_MODES_NV = 0x8E12; + public const int MULTISAMPLE_EXT = 0x809D; + public const int MULTISAMPLE_FILTER_HINT_NV = 0x8534; + public const int MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB = 0x9382; + public const int MULTISAMPLE_LINE_WIDTH_RANGE_ARB = 0x9381; + public const int MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x932B; + public const int MULTISAMPLE_SGIS = 0x809D; + public const int MUL_ATI = 0x8964; + public const int MVP_MATRIX_EXT = 0x87E3; + public const int NAMED_STRING_LENGTH_ARB = 0x8DE9; + public const int NAMED_STRING_TYPE_ARB = 0x8DEA; + public const int NAME_LENGTH = 0x92F9; + public const int NAND = 0x150E; + public const int NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x1A203; + public const int NATIVE_GRAPHICS_END_HINT_PGI = 0x1A204; + public const int NATIVE_GRAPHICS_HANDLE_PGI = 0x1A202; + public const int NEAREST = 0x2600; + public const int NEAREST_CLIPMAP_LINEAR_SGIX = 0x844E; + public const int NEAREST_CLIPMAP_NEAREST_SGIX = 0x844D; + public const int NEAREST_MIPMAP_LINEAR = 0x2702; + public const int NEAREST_MIPMAP_NEAREST = 0x2700; + public const int NEGATE_BIT_ATI = 0x00000004; + public const int NEGATIVE_ONE_EXT = 0x87DF; + public const int NEGATIVE_ONE_TO_ONE = 0x935E; + public const int NEGATIVE_W_EXT = 0x87DC; + public const int NEGATIVE_X_EXT = 0x87D9; + public const int NEGATIVE_Y_EXT = 0x87DA; + public const int NEGATIVE_Z_EXT = 0x87DB; + public const int NEVER = 0x0200; + public const int NEXT_BUFFER_NV = -2; + public const int NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025; + public const int NICEST = 0x1102; + public const int NONE = 0; + public const int NOOP = 0x1505; + public const int NOP_COMMAND_NV = 0x0001; + public const int NOR = 0x1508; + public const int NORMALIZED_RANGE_EXT = 0x87E0; + public const int NORMAL_ARRAY_ADDRESS_NV = 0x8F22; + public const int NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897; + public const int NORMAL_ARRAY_COUNT_EXT = 0x8080; + public const int NORMAL_ARRAY_EXT = 0x8075; + public const int NORMAL_ARRAY_LENGTH_NV = 0x8F2C; + public const int NORMAL_ARRAY_LIST_IBM = 103071; + public const int NORMAL_ARRAY_LIST_STRIDE_IBM = 103081; + public const int NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F6; + public const int NORMAL_ARRAY_POINTER_EXT = 0x808F; + public const int NORMAL_ARRAY_STRIDE_EXT = 0x807F; + public const int NORMAL_ARRAY_TYPE_EXT = 0x807E; + public const int NORMAL_BIT_PGI = 0x08000000; + public const int NORMAL_MAP_ARB = 0x8511; + public const int NORMAL_MAP_EXT = 0x8511; + public const int NORMAL_MAP_NV = 0x8511; + public const int NOTEQUAL = 0x0205; + public const int NO_ERROR = 0; + public const int NO_RESET_NOTIFICATION = 0x8261; + public const int NO_RESET_NOTIFICATION_ARB = 0x8261; + public const int NUM_ACTIVE_VARIABLES = 0x9304; + public const int NUM_COMPATIBLE_SUBROUTINES = 0x8E4A; + public const int NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; + public const int NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A2; + public const int NUM_DEVICE_UUIDS_EXT = 0x9596; + public const int NUM_EXTENSIONS = 0x821D; + public const int NUM_FILL_STREAMS_NV = 0x8E29; + public const int NUM_FRAGMENT_CONSTANTS_ATI = 0x896F; + public const int NUM_FRAGMENT_REGISTERS_ATI = 0x896E; + public const int NUM_GENERAL_COMBINERS_NV = 0x854E; + public const int NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x8973; + public const int NUM_INSTRUCTIONS_PER_PASS_ATI = 0x8971; + public const int NUM_INSTRUCTIONS_TOTAL_ATI = 0x8972; + public const int NUM_LOOPBACK_COMPONENTS_ATI = 0x8974; + public const int NUM_PASSES_ATI = 0x8970; + public const int NUM_PROGRAM_BINARY_FORMATS = 0x87FE; + public const int NUM_SAMPLE_COUNTS = 0x9380; + public const int NUM_SHADER_BINARY_FORMATS = 0x8DF9; + public const int NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9; + public const int NUM_SPARSE_LEVELS_ARB = 0x91AA; + public const int NUM_SPIR_V_EXTENSIONS = 0x9554; + public const int NUM_SUPPORTED_MULTISAMPLE_MODES_AMD = 0x91B6; + public const int NUM_TILING_TYPES_EXT = 0x9582; + public const int NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024; + public const int NUM_VIRTUAL_PAGE_SIZES_ARB = 0x91A8; + public const int NUM_WINDOW_RECTANGLES_EXT = 0x8F15; + public const int OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89; + public const int OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A; + public const int OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86; + public const int OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87; + public const int OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85; + public const int OBJECT_BUFFER_SIZE_ATI = 0x8764; + public const int OBJECT_BUFFER_USAGE_ATI = 0x8765; + public const int OBJECT_COMPILE_STATUS_ARB = 0x8B81; + public const int OBJECT_DELETE_STATUS_ARB = 0x8B80; + public const int OBJECT_DISTANCE_TO_LINE_SGIS = 0x81F3; + public const int OBJECT_DISTANCE_TO_POINT_SGIS = 0x81F1; + public const int OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84; + public const int OBJECT_LINE_SGIS = 0x81F7; + public const int OBJECT_LINK_STATUS_ARB = 0x8B82; + public const int OBJECT_POINT_SGIS = 0x81F5; + public const int OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88; + public const int OBJECT_SUBTYPE_ARB = 0x8B4F; + public const int OBJECT_TYPE = 0x9112; + public const int OBJECT_TYPE_ARB = 0x8B4E; + public const int OBJECT_VALIDATE_STATUS_ARB = 0x8B83; + public const int OCCLUSION_QUERY_EVENT_MASK_AMD = 0x874F; + public const int OCCLUSION_TEST_HP = 0x8165; + public const int OCCLUSION_TEST_RESULT_HP = 0x8166; + public const int OFFSET = 0x92FC; + public const int OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x8856; + public const int OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8857; + public const int OFFSET_HILO_TEXTURE_2D_NV = 0x8854; + public const int OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x8855; + public const int OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x8850; + public const int OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x8851; + public const int OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8852; + public const int OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x8853; + public const int OFFSET_TEXTURE_2D_BIAS_NV = 0x86E3; + public const int OFFSET_TEXTURE_2D_MATRIX_NV = 0x86E1; + public const int OFFSET_TEXTURE_2D_NV = 0x86E8; + public const int OFFSET_TEXTURE_2D_SCALE_NV = 0x86E2; + public const int OFFSET_TEXTURE_BIAS_NV = 0x86E3; + public const int OFFSET_TEXTURE_MATRIX_NV = 0x86E1; + public const int OFFSET_TEXTURE_RECTANGLE_NV = 0x864C; + public const int OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x864D; + public const int OFFSET_TEXTURE_SCALE_NV = 0x86E2; + public const int ONE = 1; + public const int ONE_EXT = 0x87DE; + public const int ONE_MINUS_CONSTANT_ALPHA = 0x8004; + public const int ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004; + public const int ONE_MINUS_CONSTANT_COLOR = 0x8002; + public const int ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002; + public const int ONE_MINUS_DST_ALPHA = 0x0305; + public const int ONE_MINUS_DST_COLOR = 0x0307; + public const int ONE_MINUS_SRC1_ALPHA = 0x88FB; + public const int ONE_MINUS_SRC1_COLOR = 0x88FA; + public const int ONE_MINUS_SRC_ALPHA = 0x0303; + public const int ONE_MINUS_SRC_COLOR = 0x0301; + public const int OPERAND0_ALPHA_ARB = 0x8598; + public const int OPERAND0_ALPHA_EXT = 0x8598; + public const int OPERAND0_RGB_ARB = 0x8590; + public const int OPERAND0_RGB_EXT = 0x8590; + public const int OPERAND1_ALPHA_ARB = 0x8599; + public const int OPERAND1_ALPHA_EXT = 0x8599; + public const int OPERAND1_RGB_ARB = 0x8591; + public const int OPERAND1_RGB_EXT = 0x8591; + public const int OPERAND2_ALPHA_ARB = 0x859A; + public const int OPERAND2_ALPHA_EXT = 0x859A; + public const int OPERAND2_RGB_ARB = 0x8592; + public const int OPERAND2_RGB_EXT = 0x8592; + public const int OPERAND3_ALPHA_NV = 0x859B; + public const int OPERAND3_RGB_NV = 0x8593; + public const int OPTIMAL_TILING_EXT = 0x9584; + public const int OP_ADD_EXT = 0x8787; + public const int OP_CLAMP_EXT = 0x878E; + public const int OP_CROSS_PRODUCT_EXT = 0x8797; + public const int OP_DOT3_EXT = 0x8784; + public const int OP_DOT4_EXT = 0x8785; + public const int OP_EXP_BASE_2_EXT = 0x8791; + public const int OP_FLOOR_EXT = 0x878F; + public const int OP_FRAC_EXT = 0x8789; + public const int OP_INDEX_EXT = 0x8782; + public const int OP_LOG_BASE_2_EXT = 0x8792; + public const int OP_MADD_EXT = 0x8788; + public const int OP_MAX_EXT = 0x878A; + public const int OP_MIN_EXT = 0x878B; + public const int OP_MOV_EXT = 0x8799; + public const int OP_MULTIPLY_MATRIX_EXT = 0x8798; + public const int OP_MUL_EXT = 0x8786; + public const int OP_NEGATE_EXT = 0x8783; + public const int OP_POWER_EXT = 0x8793; + public const int OP_RECIP_EXT = 0x8794; + public const int OP_RECIP_SQRT_EXT = 0x8795; + public const int OP_ROUND_EXT = 0x8790; + public const int OP_SET_GE_EXT = 0x878C; + public const int OP_SET_LT_EXT = 0x878D; + public const int OP_SUB_EXT = 0x8796; + public const int OR = 0x1507; + public const int OR_INVERTED = 0x150D; + public const int OR_REVERSE = 0x150B; + public const int OUTPUT_COLOR0_EXT = 0x879B; + public const int OUTPUT_COLOR1_EXT = 0x879C; + public const int OUTPUT_FOG_EXT = 0x87BD; + public const int OUTPUT_TEXTURE_COORD0_EXT = 0x879D; + public const int OUTPUT_TEXTURE_COORD10_EXT = 0x87A7; + public const int OUTPUT_TEXTURE_COORD11_EXT = 0x87A8; + public const int OUTPUT_TEXTURE_COORD12_EXT = 0x87A9; + public const int OUTPUT_TEXTURE_COORD13_EXT = 0x87AA; + public const int OUTPUT_TEXTURE_COORD14_EXT = 0x87AB; + public const int OUTPUT_TEXTURE_COORD15_EXT = 0x87AC; + public const int OUTPUT_TEXTURE_COORD16_EXT = 0x87AD; + public const int OUTPUT_TEXTURE_COORD17_EXT = 0x87AE; + public const int OUTPUT_TEXTURE_COORD18_EXT = 0x87AF; + public const int OUTPUT_TEXTURE_COORD19_EXT = 0x87B0; + public const int OUTPUT_TEXTURE_COORD1_EXT = 0x879E; + public const int OUTPUT_TEXTURE_COORD20_EXT = 0x87B1; + public const int OUTPUT_TEXTURE_COORD21_EXT = 0x87B2; + public const int OUTPUT_TEXTURE_COORD22_EXT = 0x87B3; + public const int OUTPUT_TEXTURE_COORD23_EXT = 0x87B4; + public const int OUTPUT_TEXTURE_COORD24_EXT = 0x87B5; + public const int OUTPUT_TEXTURE_COORD25_EXT = 0x87B6; + public const int OUTPUT_TEXTURE_COORD26_EXT = 0x87B7; + public const int OUTPUT_TEXTURE_COORD27_EXT = 0x87B8; + public const int OUTPUT_TEXTURE_COORD28_EXT = 0x87B9; + public const int OUTPUT_TEXTURE_COORD29_EXT = 0x87BA; + public const int OUTPUT_TEXTURE_COORD2_EXT = 0x879F; + public const int OUTPUT_TEXTURE_COORD30_EXT = 0x87BB; + public const int OUTPUT_TEXTURE_COORD31_EXT = 0x87BC; + public const int OUTPUT_TEXTURE_COORD3_EXT = 0x87A0; + public const int OUTPUT_TEXTURE_COORD4_EXT = 0x87A1; + public const int OUTPUT_TEXTURE_COORD5_EXT = 0x87A2; + public const int OUTPUT_TEXTURE_COORD6_EXT = 0x87A3; + public const int OUTPUT_TEXTURE_COORD7_EXT = 0x87A4; + public const int OUTPUT_TEXTURE_COORD8_EXT = 0x87A5; + public const int OUTPUT_TEXTURE_COORD9_EXT = 0x87A6; + public const int OUTPUT_VERTEX_EXT = 0x879A; + public const int OUT_OF_MEMORY = 0x0505; + public const int OVERLAY_KHR = 0x9296; + public const int OVERLAY_NV = 0x9296; + public const int PACK_ALIGNMENT = 0x0D05; + public const int PACK_CMYK_HINT_EXT = 0x800E; + public const int PACK_COMPRESSED_BLOCK_DEPTH = 0x912D; + public const int PACK_COMPRESSED_BLOCK_HEIGHT = 0x912C; + public const int PACK_COMPRESSED_BLOCK_SIZE = 0x912E; + public const int PACK_COMPRESSED_BLOCK_WIDTH = 0x912B; + public const int PACK_IMAGE_DEPTH_SGIS = 0x8131; + public const int PACK_IMAGE_HEIGHT = 0x806C; + public const int PACK_IMAGE_HEIGHT_EXT = 0x806C; + public const int PACK_INVERT_MESA = 0x8758; + public const int PACK_LSB_FIRST = 0x0D01; + public const int PACK_RESAMPLE_OML = 0x8984; + public const int PACK_RESAMPLE_SGIX = 0x842E; + public const int PACK_ROW_BYTES_APPLE = 0x8A15; + public const int PACK_ROW_LENGTH = 0x0D02; + public const int PACK_SKIP_IMAGES = 0x806B; + public const int PACK_SKIP_IMAGES_EXT = 0x806B; + public const int PACK_SKIP_PIXELS = 0x0D04; + public const int PACK_SKIP_ROWS = 0x0D03; + public const int PACK_SKIP_VOLUMES_SGIS = 0x8130; + public const int PACK_SUBSAMPLE_RATE_SGIX = 0x85A0; + public const int PACK_SWAP_BYTES = 0x0D00; + public const int PALETTE4_R5_G6_B5_OES = 0x8B92; + public const int PALETTE4_RGB5_A1_OES = 0x8B94; + public const int PALETTE4_RGB8_OES = 0x8B90; + public const int PALETTE4_RGBA4_OES = 0x8B93; + public const int PALETTE4_RGBA8_OES = 0x8B91; + public const int PALETTE8_R5_G6_B5_OES = 0x8B97; + public const int PALETTE8_RGB5_A1_OES = 0x8B99; + public const int PALETTE8_RGB8_OES = 0x8B95; + public const int PALETTE8_RGBA4_OES = 0x8B98; + public const int PALETTE8_RGBA8_OES = 0x8B96; + public const int PARALLEL_ARRAYS_INTEL = 0x83F4; + public const int PARAMETER_BUFFER = 0x80EE; + public const int PARAMETER_BUFFER_ARB = 0x80EE; + public const int PARAMETER_BUFFER_BINDING = 0x80EF; + public const int PARAMETER_BUFFER_BINDING_ARB = 0x80EF; + public const int PARTIAL_SUCCESS_NV = 0x902E; + public const int PASS_THROUGH_NV = 0x86E6; + public const int PATCHES = 0x000E; + public const int PATCH_DEFAULT_INNER_LEVEL = 0x8E73; + public const int PATCH_DEFAULT_OUTER_LEVEL = 0x8E74; + public const int PATCH_VERTICES = 0x8E72; + public const int PATH_CLIENT_LENGTH_NV = 0x907F; + public const int PATH_COMMAND_COUNT_NV = 0x909D; + public const int PATH_COMPUTED_LENGTH_NV = 0x90A0; + public const int PATH_COORD_COUNT_NV = 0x909E; + public const int PATH_COVER_DEPTH_FUNC_NV = 0x90BF; + public const int PATH_DASH_ARRAY_COUNT_NV = 0x909F; + public const int PATH_DASH_CAPS_NV = 0x907B; + public const int PATH_DASH_OFFSET_NV = 0x907E; + public const int PATH_DASH_OFFSET_RESET_NV = 0x90B4; + public const int PATH_END_CAPS_NV = 0x9076; + public const int PATH_ERROR_POSITION_NV = 0x90AB; + public const int PATH_FILL_BOUNDING_BOX_NV = 0x90A1; + public const int PATH_FILL_COVER_MODE_NV = 0x9082; + public const int PATH_FILL_MASK_NV = 0x9081; + public const int PATH_FILL_MODE_NV = 0x9080; + public const int PATH_FORMAT_PS_NV = 0x9071; + public const int PATH_FORMAT_SVG_NV = 0x9070; + public const int PATH_GEN_COEFF_NV = 0x90B1; + public const int PATH_GEN_COMPONENTS_NV = 0x90B3; + public const int PATH_GEN_MODE_NV = 0x90B0; + public const int PATH_INITIAL_DASH_CAP_NV = 0x907C; + public const int PATH_INITIAL_END_CAP_NV = 0x9077; + public const int PATH_JOIN_STYLE_NV = 0x9079; + public const int PATH_MAX_MODELVIEW_STACK_DEPTH_NV = 0x0D36; + public const int PATH_MAX_PROJECTION_STACK_DEPTH_NV = 0x0D38; + public const int PATH_MITER_LIMIT_NV = 0x907A; + public const int PATH_MODELVIEW_MATRIX_NV = 0x0BA6; + public const int PATH_MODELVIEW_NV = 0x1700; + public const int PATH_MODELVIEW_STACK_DEPTH_NV = 0x0BA3; + public const int PATH_OBJECT_BOUNDING_BOX_NV = 0x908A; + public const int PATH_PROJECTION_MATRIX_NV = 0x0BA7; + public const int PATH_PROJECTION_NV = 0x1701; + public const int PATH_PROJECTION_STACK_DEPTH_NV = 0x0BA4; + public const int PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD; + public const int PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE; + public const int PATH_STENCIL_FUNC_NV = 0x90B7; + public const int PATH_STENCIL_REF_NV = 0x90B8; + public const int PATH_STENCIL_VALUE_MASK_NV = 0x90B9; + public const int PATH_STROKE_BOUNDING_BOX_NV = 0x90A2; + public const int PATH_STROKE_COVER_MODE_NV = 0x9083; + public const int PATH_STROKE_MASK_NV = 0x9084; + public const int PATH_STROKE_WIDTH_NV = 0x9075; + public const int PATH_TERMINAL_DASH_CAP_NV = 0x907D; + public const int PATH_TERMINAL_END_CAP_NV = 0x9078; + public const int PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = 0x84E3; + public const int PATH_TRANSPOSE_PROJECTION_MATRIX_NV = 0x84E4; + public const int PERCENTAGE_AMD = 0x8BC3; + public const int PERFMON_RESULT_AMD = 0x8BC6; + public const int PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4; + public const int PERFMON_RESULT_SIZE_AMD = 0x8BC5; + public const int PERFORMANCE_MONITOR_AMD = 0x9152; + public const int PERFQUERY_COUNTER_DATA_BOOL32_INTEL = 0x94FC; + public const int PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = 0x94FB; + public const int PERFQUERY_COUNTER_DATA_FLOAT_INTEL = 0x94FA; + public const int PERFQUERY_COUNTER_DATA_UINT32_INTEL = 0x94F8; + public const int PERFQUERY_COUNTER_DATA_UINT64_INTEL = 0x94F9; + public const int PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = 0x94FF; + public const int PERFQUERY_COUNTER_DURATION_NORM_INTEL = 0x94F1; + public const int PERFQUERY_COUNTER_DURATION_RAW_INTEL = 0x94F2; + public const int PERFQUERY_COUNTER_EVENT_INTEL = 0x94F0; + public const int PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = 0x94FE; + public const int PERFQUERY_COUNTER_RAW_INTEL = 0x94F4; + public const int PERFQUERY_COUNTER_THROUGHPUT_INTEL = 0x94F3; + public const int PERFQUERY_COUNTER_TIMESTAMP_INTEL = 0x94F5; + public const int PERFQUERY_DONOT_FLUSH_INTEL = 0x83F9; + public const int PERFQUERY_FLUSH_INTEL = 0x83FA; + public const int PERFQUERY_GLOBAL_CONTEXT_INTEL = 0x00000001; + public const int PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = 0x9500; + public const int PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = 0x94FD; + public const int PERFQUERY_SINGLE_CONTEXT_INTEL = 0x00000000; + public const int PERFQUERY_WAIT_INTEL = 0x83FB; + public const int PERTURB_EXT = 0x85AE; + public const int PER_GPU_STORAGE_BIT_NV = 0x0800; + public const int PER_GPU_STORAGE_NV = 0x9548; + public const int PER_STAGE_CONSTANTS_NV = 0x8535; + public const int PHONG_HINT_WIN = 0x80EB; + public const int PHONG_WIN = 0x80EA; + public const int PINLIGHT_NV = 0x92A8; + public const int PIXELS_PER_SAMPLE_PATTERN_X_AMD = 0x91AE; + public const int PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 0x91AF; + public const int PIXEL_BUFFER_BARRIER_BIT = 0x00000080; + public const int PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080; + public const int PIXEL_COUNTER_BITS_NV = 0x8864; + public const int PIXEL_COUNT_AVAILABLE_NV = 0x8867; + public const int PIXEL_COUNT_NV = 0x8866; + public const int PIXEL_CUBIC_WEIGHT_EXT = 0x8333; + public const int PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x8355; + public const int PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x8354; + public const int PIXEL_GROUP_COLOR_SGIS = 0x8356; + public const int PIXEL_MAG_FILTER_EXT = 0x8331; + public const int PIXEL_MIN_FILTER_EXT = 0x8332; + public const int PIXEL_PACK_BUFFER = 0x88EB; + public const int PIXEL_PACK_BUFFER_ARB = 0x88EB; + public const int PIXEL_PACK_BUFFER_BINDING = 0x88ED; + public const int PIXEL_PACK_BUFFER_BINDING_ARB = 0x88ED; + public const int PIXEL_PACK_BUFFER_BINDING_EXT = 0x88ED; + public const int PIXEL_PACK_BUFFER_EXT = 0x88EB; + public const int PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3; + public const int PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4; + public const int PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2; + public const int PIXEL_TEXTURE_SGIS = 0x8353; + public const int PIXEL_TEX_GEN_MODE_SGIX = 0x832B; + public const int PIXEL_TEX_GEN_SGIX = 0x8139; + public const int PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E; + public const int PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F; + public const int PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145; + public const int PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144; + public const int PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143; + public const int PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142; + public const int PIXEL_TILE_HEIGHT_SGIX = 0x8141; + public const int PIXEL_TILE_WIDTH_SGIX = 0x8140; + public const int PIXEL_TRANSFORM_2D_EXT = 0x8330; + public const int PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x8338; + public const int PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8336; + public const int PIXEL_UNPACK_BUFFER = 0x88EC; + public const int PIXEL_UNPACK_BUFFER_ARB = 0x88EC; + public const int PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + public const int PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x88EF; + public const int PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x88EF; + public const int PIXEL_UNPACK_BUFFER_EXT = 0x88EC; + public const int PLUS_CLAMPED_ALPHA_NV = 0x92B2; + public const int PLUS_CLAMPED_NV = 0x92B1; + public const int PLUS_DARKER_NV = 0x9292; + public const int PLUS_NV = 0x9291; + public const int PN_TRIANGLES_ATI = 0x87F0; + public const int PN_TRIANGLES_NORMAL_MODE_ATI = 0x87F3; + public const int PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x87F7; + public const int PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x87F8; + public const int PN_TRIANGLES_POINT_MODE_ATI = 0x87F2; + public const int PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x87F6; + public const int PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x87F5; + public const int PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F4; + public const int POINT = 0x1B00; + public const int POINTS = 0x0000; + public const int POINT_DISTANCE_ATTENUATION_ARB = 0x8129; + public const int POINT_FADE_THRESHOLD_SIZE = 0x8128; + public const int POINT_FADE_THRESHOLD_SIZE_ARB = 0x8128; + public const int POINT_FADE_THRESHOLD_SIZE_EXT = 0x8128; + public const int POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128; + public const int POINT_SIZE = 0x0B11; + public const int POINT_SIZE_GRANULARITY = 0x0B13; + public const int POINT_SIZE_MAX_ARB = 0x8127; + public const int POINT_SIZE_MAX_EXT = 0x8127; + public const int POINT_SIZE_MAX_SGIS = 0x8127; + public const int POINT_SIZE_MIN_ARB = 0x8126; + public const int POINT_SIZE_MIN_EXT = 0x8126; + public const int POINT_SIZE_MIN_SGIS = 0x8126; + public const int POINT_SIZE_RANGE = 0x0B12; + public const int POINT_SPRITE_ARB = 0x8861; + public const int POINT_SPRITE_COORD_ORIGIN = 0x8CA0; + public const int POINT_SPRITE_NV = 0x8861; + public const int POINT_SPRITE_R_MODE_NV = 0x8863; + public const int POLYGON_MODE = 0x0B40; + public const int POLYGON_OFFSET_BIAS_EXT = 0x8039; + public const int POLYGON_OFFSET_CLAMP = 0x8E1B; + public const int POLYGON_OFFSET_CLAMP_EXT = 0x8E1B; + public const int POLYGON_OFFSET_COMMAND_NV = 0x000E; + public const int POLYGON_OFFSET_EXT = 0x8037; + public const int POLYGON_OFFSET_FACTOR = 0x8038; + public const int POLYGON_OFFSET_FACTOR_EXT = 0x8038; + public const int POLYGON_OFFSET_FILL = 0x8037; + public const int POLYGON_OFFSET_LINE = 0x2A02; + public const int POLYGON_OFFSET_POINT = 0x2A01; + public const int POLYGON_OFFSET_UNITS = 0x2A00; + public const int POLYGON_SMOOTH = 0x0B41; + public const int POLYGON_SMOOTH_HINT = 0x0C53; + public const int POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB; + public const int POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7; + public const int POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA; + public const int POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6; + public const int POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2; + public const int POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9; + public const int POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5; + public const int POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8; + public const int POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4; + public const int POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023; + public const int POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F; + public const int POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022; + public const int POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E; + public const int POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1; + public const int POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021; + public const int POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D; + public const int POST_CONVOLUTION_RED_BIAS_EXT = 0x8020; + public const int POST_CONVOLUTION_RED_SCALE_EXT = 0x801C; + public const int POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8162; + public const int POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B; + public const int POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179; + public const int POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C; + public const int POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A; + public const int PREFER_DOUBLEBUFFER_HINT_PGI = 0x1A1F8; + public const int PRESENT_DURATION_NV = 0x8E2B; + public const int PRESENT_TIME_NV = 0x8E2A; + public const int PRESERVE_ATI = 0x8762; + public const int PREVIOUS_ARB = 0x8578; + public const int PREVIOUS_EXT = 0x8578; + public const int PREVIOUS_TEXTURE_INPUT_NV = 0x86E4; + public const int PRIMARY_COLOR_ARB = 0x8577; + public const int PRIMARY_COLOR_EXT = 0x8577; + public const int PRIMARY_COLOR_NV = 0x852C; + public const int PRIMITIVES_GENERATED = 0x8C87; + public const int PRIMITIVES_GENERATED_EXT = 0x8C87; + public const int PRIMITIVES_GENERATED_NV = 0x8C87; + public const int PRIMITIVES_SUBMITTED = 0x82EF; + public const int PRIMITIVES_SUBMITTED_ARB = 0x82EF; + public const int PRIMITIVE_BOUNDING_BOX_ARB = 0x92BE; + public const int PRIMITIVE_ID_NV = 0x8C7C; + public const int PRIMITIVE_RESTART = 0x8F9D; + public const int PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69; + public const int PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221; + public const int PRIMITIVE_RESTART_INDEX = 0x8F9E; + public const int PRIMITIVE_RESTART_INDEX_NV = 0x8559; + public const int PRIMITIVE_RESTART_NV = 0x8558; + public const int PROGRAM = 0x82E2; + public const int PROGRAMMABLE_SAMPLE_LOCATION_ARB = 0x9341; + public const int PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9341; + public const int PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB = 0x9340; + public const int PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x9340; + public const int PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0; + public const int PROGRAM_ALU_INSTRUCTIONS_ARB = 0x8805; + public const int PROGRAM_ATTRIBS_ARB = 0x88AC; + public const int PROGRAM_ATTRIB_COMPONENTS_NV = 0x8906; + public const int PROGRAM_BINARY_FORMATS = 0x87FF; + public const int PROGRAM_BINARY_FORMAT_MESA = 0x875F; + public const int PROGRAM_BINARY_LENGTH = 0x8741; + public const int PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257; + public const int PROGRAM_BINDING_ARB = 0x8677; + public const int PROGRAM_ERROR_POSITION_ARB = 0x864B; + public const int PROGRAM_ERROR_POSITION_NV = 0x864B; + public const int PROGRAM_ERROR_STRING_ARB = 0x8874; + public const int PROGRAM_ERROR_STRING_NV = 0x8874; + public const int PROGRAM_FORMAT_ARB = 0x8876; + public const int PROGRAM_FORMAT_ASCII_ARB = 0x8875; + public const int PROGRAM_INPUT = 0x92E3; + public const int PROGRAM_INSTRUCTIONS_ARB = 0x88A0; + public const int PROGRAM_LENGTH_ARB = 0x8627; + public const int PROGRAM_LENGTH_NV = 0x8627; + public const int PROGRAM_MATRIX_EXT = 0x8E2D; + public const int PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x8E2F; + public const int PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2; + public const int PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x8808; + public const int PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE; + public const int PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2; + public const int PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA; + public const int PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6; + public const int PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x880A; + public const int PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x8809; + public const int PROGRAM_OBJECT_ARB = 0x8B40; + public const int PROGRAM_OBJECT_EXT = 0x8B40; + public const int PROGRAM_OUTPUT = 0x92E4; + public const int PROGRAM_PARAMETERS_ARB = 0x88A8; + public const int PROGRAM_PARAMETER_NV = 0x8644; + public const int PROGRAM_PIPELINE = 0x82E4; + public const int PROGRAM_PIPELINE_BINDING = 0x825A; + public const int PROGRAM_PIPELINE_OBJECT_EXT = 0x8A4F; + public const int PROGRAM_POINT_SIZE = 0x8642; + public const int PROGRAM_POINT_SIZE_ARB = 0x8642; + public const int PROGRAM_POINT_SIZE_EXT = 0x8642; + public const int PROGRAM_RESIDENT_NV = 0x8647; + public const int PROGRAM_RESULT_COMPONENTS_NV = 0x8907; + public const int PROGRAM_SEPARABLE = 0x8258; + public const int PROGRAM_STRING_ARB = 0x8628; + public const int PROGRAM_STRING_NV = 0x8628; + public const int PROGRAM_TARGET_NV = 0x8646; + public const int PROGRAM_TEMPORARIES_ARB = 0x88A4; + public const int PROGRAM_TEX_INDIRECTIONS_ARB = 0x8807; + public const int PROGRAM_TEX_INSTRUCTIONS_ARB = 0x8806; + public const int PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6; + public const int PROTECTED_MEMORY_OBJECT_EXT = 0x959B; + public const int PROVOKING_VERTEX = 0x8E4F; + public const int PROVOKING_VERTEX_EXT = 0x8E4F; + public const int PROXY_COLOR_TABLE_SGI = 0x80D3; + public const int PROXY_HISTOGRAM_EXT = 0x8025; + public const int PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D5; + public const int PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D4; + public const int PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8163; + public const int PROXY_TEXTURE_1D = 0x8063; + public const int PROXY_TEXTURE_1D_ARRAY = 0x8C19; + public const int PROXY_TEXTURE_1D_ARRAY_EXT = 0x8C19; + public const int PROXY_TEXTURE_1D_EXT = 0x8063; + public const int PROXY_TEXTURE_1D_STACK_MESAX = 0x875B; + public const int PROXY_TEXTURE_2D = 0x8064; + public const int PROXY_TEXTURE_2D_ARRAY = 0x8C1B; + public const int PROXY_TEXTURE_2D_ARRAY_EXT = 0x8C1B; + public const int PROXY_TEXTURE_2D_EXT = 0x8064; + public const int PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101; + public const int PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103; + public const int PROXY_TEXTURE_2D_STACK_MESAX = 0x875C; + public const int PROXY_TEXTURE_3D = 0x8070; + public const int PROXY_TEXTURE_3D_EXT = 0x8070; + public const int PROXY_TEXTURE_4D_SGIS = 0x8135; + public const int PROXY_TEXTURE_COLOR_TABLE_SGI = 0x80BD; + public const int PROXY_TEXTURE_CUBE_MAP = 0x851B; + public const int PROXY_TEXTURE_CUBE_MAP_ARB = 0x851B; + public const int PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B; + public const int PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x900B; + public const int PROXY_TEXTURE_CUBE_MAP_EXT = 0x851B; + public const int PROXY_TEXTURE_RECTANGLE = 0x84F7; + public const int PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7; + public const int PROXY_TEXTURE_RECTANGLE_NV = 0x84F7; + public const int PURGEABLE_APPLE = 0x8A1D; + public const int PURGED_CONTEXT_RESET_NV = 0x92BB; + public const int QUADRATIC_CURVE_TO_NV = 0x0A; + public const int QUADS = 0x0007; + public const int QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C; + public const int QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x8E4C; + public const int QUAD_ALPHA4_SGIS = 0x811E; + public const int QUAD_ALPHA8_SGIS = 0x811F; + public const int QUAD_INTENSITY4_SGIS = 0x8122; + public const int QUAD_INTENSITY8_SGIS = 0x8123; + public const int QUAD_LUMINANCE4_SGIS = 0x8120; + public const int QUAD_LUMINANCE8_SGIS = 0x8121; + public const int QUAD_MESH_SUN = 0x8614; + public const int QUAD_TEXTURE_SELECT_SGIS = 0x8125; + public const int QUARTER_BIT_ATI = 0x00000010; + public const int QUERY = 0x82E3; + public const uint QUERY_ALL_EVENT_BITS_AMD = 0xFFFFFFFF; + public const int QUERY_BUFFER = 0x9192; + public const int QUERY_BUFFER_AMD = 0x9192; + public const int QUERY_BUFFER_BARRIER_BIT = 0x00008000; + public const int QUERY_BUFFER_BINDING = 0x9193; + public const int QUERY_BUFFER_BINDING_AMD = 0x9193; + public const int QUERY_BY_REGION_NO_WAIT = 0x8E16; + public const int QUERY_BY_REGION_NO_WAIT_INVERTED = 0x8E1A; + public const int QUERY_BY_REGION_NO_WAIT_NV = 0x8E16; + public const int QUERY_BY_REGION_WAIT = 0x8E15; + public const int QUERY_BY_REGION_WAIT_INVERTED = 0x8E19; + public const int QUERY_BY_REGION_WAIT_NV = 0x8E15; + public const int QUERY_COUNTER_BITS = 0x8864; + public const int QUERY_COUNTER_BITS_ARB = 0x8864; + public const int QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD = 0x00000008; + public const int QUERY_DEPTH_FAIL_EVENT_BIT_AMD = 0x00000002; + public const int QUERY_DEPTH_PASS_EVENT_BIT_AMD = 0x00000001; + public const int QUERY_NO_WAIT = 0x8E14; + public const int QUERY_NO_WAIT_INVERTED = 0x8E18; + public const int QUERY_NO_WAIT_NV = 0x8E14; + public const int QUERY_OBJECT_AMD = 0x9153; + public const int QUERY_OBJECT_EXT = 0x9153; + public const int QUERY_RESOURCE_BUFFEROBJECT_NV = 0x9547; + public const int QUERY_RESOURCE_MEMTYPE_VIDMEM_NV = 0x9542; + public const int QUERY_RESOURCE_RENDERBUFFER_NV = 0x9546; + public const int QUERY_RESOURCE_SYS_RESERVED_NV = 0x9544; + public const int QUERY_RESOURCE_TEXTURE_NV = 0x9545; + public const int QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV = 0x9540; + public const int QUERY_RESULT = 0x8866; + public const int QUERY_RESULT_ARB = 0x8866; + public const int QUERY_RESULT_AVAILABLE = 0x8867; + public const int QUERY_RESULT_AVAILABLE_ARB = 0x8867; + public const int QUERY_RESULT_NO_WAIT = 0x9194; + public const int QUERY_RESULT_NO_WAIT_AMD = 0x9194; + public const int QUERY_STENCIL_FAIL_EVENT_BIT_AMD = 0x00000004; + public const int QUERY_TARGET = 0x82EA; + public const int QUERY_WAIT = 0x8E13; + public const int QUERY_WAIT_INVERTED = 0x8E17; + public const int QUERY_WAIT_NV = 0x8E13; + public const int R11F_G11F_B10F = 0x8C3A; + public const int R11F_G11F_B10F_EXT = 0x8C3A; + public const int R16 = 0x822A; + public const int R16F = 0x822D; + public const int R16F_EXT = 0x822D; + public const int R16I = 0x8233; + public const int R16UI = 0x8234; + public const int R16_SNORM = 0x8F98; + public const int R1UI_C3F_V3F_SUN = 0x85C6; + public const int R1UI_C4F_N3F_V3F_SUN = 0x85C8; + public const int R1UI_C4UB_V3F_SUN = 0x85C5; + public const int R1UI_N3F_V3F_SUN = 0x85C7; + public const int R1UI_T2F_C4F_N3F_V3F_SUN = 0x85CB; + public const int R1UI_T2F_N3F_V3F_SUN = 0x85CA; + public const int R1UI_T2F_V3F_SUN = 0x85C9; + public const int R1UI_V3F_SUN = 0x85C4; + public const int R32F = 0x822E; + public const int R32F_EXT = 0x822E; + public const int R32I = 0x8235; + public const int R32UI = 0x8236; + public const int R3_G3_B2 = 0x2A10; + public const int R8 = 0x8229; + public const int R8I = 0x8231; + public const int R8UI = 0x8232; + public const int R8_EXT = 0x8229; + public const int R8_SNORM = 0x8F94; + public const int RASTERIZER_DISCARD = 0x8C89; + public const int RASTERIZER_DISCARD_EXT = 0x8C89; + public const int RASTERIZER_DISCARD_NV = 0x8C89; + public const int RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x932A; + public const int RASTER_MULTISAMPLE_EXT = 0x9327; + public const int RASTER_POSITION_UNCLIPPED_IBM = 0x19262; + public const int RASTER_SAMPLES_EXT = 0x9328; + public const int READ_BUFFER = 0x0C02; + public const int READ_FRAMEBUFFER = 0x8CA8; + public const int READ_FRAMEBUFFER_BINDING = 0x8CAA; + public const int READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA; + public const int READ_FRAMEBUFFER_EXT = 0x8CA8; + public const int READ_ONLY = 0x88B8; + public const int READ_ONLY_ARB = 0x88B8; + public const int READ_PIXELS = 0x828C; + public const int READ_PIXELS_FORMAT = 0x828D; + public const int READ_PIXELS_TYPE = 0x828E; + public const int READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x887B; + public const int READ_PIXEL_DATA_RANGE_NV = 0x8879; + public const int READ_PIXEL_DATA_RANGE_POINTER_NV = 0x887D; + public const int READ_WRITE = 0x88BA; + public const int READ_WRITE_ARB = 0x88BA; + public const int RECLAIM_MEMORY_HINT_PGI = 0x1A1FE; + public const int RECT_NV = 0xF6; + public const int RED = 0x1903; + public const int REDUCE_EXT = 0x8016; + public const int RED_BIT_ATI = 0x00000001; + public const int RED_INTEGER = 0x8D94; + public const int RED_INTEGER_EXT = 0x8D94; + public const int RED_MAX_CLAMP_INGR = 0x8564; + public const int RED_MIN_CLAMP_INGR = 0x8560; + public const int RED_NV = 0x1903; + public const int RED_SNORM = 0x8F90; + public const int REFERENCED_BY_COMPUTE_SHADER = 0x930B; + public const int REFERENCED_BY_FRAGMENT_SHADER = 0x930A; + public const int REFERENCED_BY_GEOMETRY_SHADER = 0x9309; + public const int REFERENCED_BY_MESH_SHADER_NV = 0x95A0; + public const int REFERENCED_BY_TASK_SHADER_NV = 0x95A1; + public const int REFERENCED_BY_TESS_CONTROL_SHADER = 0x9307; + public const int REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308; + public const int REFERENCED_BY_VERTEX_SHADER = 0x9306; + public const int REFERENCE_PLANE_EQUATION_SGIX = 0x817E; + public const int REFERENCE_PLANE_SGIX = 0x817D; + public const int REFLECTION_MAP_ARB = 0x8512; + public const int REFLECTION_MAP_EXT = 0x8512; + public const int REFLECTION_MAP_NV = 0x8512; + public const int REGISTER_COMBINERS_NV = 0x8522; + public const int REG_0_ATI = 0x8921; + public const int REG_10_ATI = 0x892B; + public const int REG_11_ATI = 0x892C; + public const int REG_12_ATI = 0x892D; + public const int REG_13_ATI = 0x892E; + public const int REG_14_ATI = 0x892F; + public const int REG_15_ATI = 0x8930; + public const int REG_16_ATI = 0x8931; + public const int REG_17_ATI = 0x8932; + public const int REG_18_ATI = 0x8933; + public const int REG_19_ATI = 0x8934; + public const int REG_1_ATI = 0x8922; + public const int REG_20_ATI = 0x8935; + public const int REG_21_ATI = 0x8936; + public const int REG_22_ATI = 0x8937; + public const int REG_23_ATI = 0x8938; + public const int REG_24_ATI = 0x8939; + public const int REG_25_ATI = 0x893A; + public const int REG_26_ATI = 0x893B; + public const int REG_27_ATI = 0x893C; + public const int REG_28_ATI = 0x893D; + public const int REG_29_ATI = 0x893E; + public const int REG_2_ATI = 0x8923; + public const int REG_30_ATI = 0x893F; + public const int REG_31_ATI = 0x8940; + public const int REG_3_ATI = 0x8924; + public const int REG_4_ATI = 0x8925; + public const int REG_5_ATI = 0x8926; + public const int REG_6_ATI = 0x8927; + public const int REG_7_ATI = 0x8928; + public const int REG_8_ATI = 0x8929; + public const int REG_9_ATI = 0x892A; + public const int RELATIVE_ARC_TO_NV = 0xFF; + public const int RELATIVE_CONIC_CURVE_TO_NV = 0x1B; + public const int RELATIVE_CUBIC_CURVE_TO_NV = 0x0D; + public const int RELATIVE_HORIZONTAL_LINE_TO_NV = 0x07; + public const int RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17; + public const int RELATIVE_LARGE_CW_ARC_TO_NV = 0x19; + public const int RELATIVE_LINE_TO_NV = 0x05; + public const int RELATIVE_MOVE_TO_NV = 0x03; + public const int RELATIVE_QUADRATIC_CURVE_TO_NV = 0x0B; + public const int RELATIVE_RECT_NV = 0xF7; + public const int RELATIVE_ROUNDED_RECT2_NV = 0xEB; + public const int RELATIVE_ROUNDED_RECT4_NV = 0xED; + public const int RELATIVE_ROUNDED_RECT8_NV = 0xEF; + public const int RELATIVE_ROUNDED_RECT_NV = 0xE9; + public const int RELATIVE_SMALL_CCW_ARC_TO_NV = 0x13; + public const int RELATIVE_SMALL_CW_ARC_TO_NV = 0x15; + public const int RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = 0x11; + public const int RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0F; + public const int RELATIVE_VERTICAL_LINE_TO_NV = 0x09; + public const int RELEASED_APPLE = 0x8A19; + public const int RENDERBUFFER = 0x8D41; + public const int RENDERBUFFER_ALPHA_SIZE = 0x8D53; + public const int RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53; + public const int RENDERBUFFER_BINDING = 0x8CA7; + public const int RENDERBUFFER_BINDING_EXT = 0x8CA7; + public const int RENDERBUFFER_BLUE_SIZE = 0x8D52; + public const int RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52; + public const int RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10; + public const int RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB; + public const int RENDERBUFFER_DEPTH_SIZE = 0x8D54; + public const int RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54; + public const int RENDERBUFFER_EXT = 0x8D41; + public const int RENDERBUFFER_FREE_MEMORY_ATI = 0x87FD; + public const int RENDERBUFFER_GREEN_SIZE = 0x8D51; + public const int RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51; + public const int RENDERBUFFER_HEIGHT = 0x8D43; + public const int RENDERBUFFER_HEIGHT_EXT = 0x8D43; + public const int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + public const int RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44; + public const int RENDERBUFFER_RED_SIZE = 0x8D50; + public const int RENDERBUFFER_RED_SIZE_EXT = 0x8D50; + public const int RENDERBUFFER_SAMPLES = 0x8CAB; + public const int RENDERBUFFER_SAMPLES_EXT = 0x8CAB; + public const int RENDERBUFFER_STENCIL_SIZE = 0x8D55; + public const int RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55; + public const int RENDERBUFFER_STORAGE_SAMPLES_AMD = 0x91B2; + public const int RENDERBUFFER_WIDTH = 0x8D42; + public const int RENDERBUFFER_WIDTH_EXT = 0x8D42; + public const int RENDERER = 0x1F01; + public const int RENDER_GPU_MASK_NV = 0x9558; + public const int REPEAT = 0x2901; + public const int REPLACE = 0x1E01; + public const int REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x85C3; + public const int REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x85C2; + public const int REPLACEMENT_CODE_ARRAY_SUN = 0x85C0; + public const int REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x85C1; + public const int REPLACEMENT_CODE_SUN = 0x81D8; + public const int REPLACE_EXT = 0x8062; + public const int REPLACE_MIDDLE_SUN = 0x0002; + public const int REPLACE_OLDEST_SUN = 0x0003; + public const int REPLACE_VALUE_AMD = 0x874B; + public const int REPLICATE_BORDER_HP = 0x8153; + public const int REPRESENTATIVE_FRAGMENT_TEST_NV = 0x937F; + public const int RESAMPLE_AVERAGE_OML = 0x8988; + public const int RESAMPLE_DECIMATE_OML = 0x8989; + public const int RESAMPLE_DECIMATE_SGIX = 0x8430; + public const int RESAMPLE_REPLICATE_OML = 0x8986; + public const int RESAMPLE_REPLICATE_SGIX = 0x8433; + public const int RESAMPLE_ZERO_FILL_OML = 0x8987; + public const int RESAMPLE_ZERO_FILL_SGIX = 0x8434; + public const int RESCALE_NORMAL_EXT = 0x803A; + public const int RESET_NOTIFICATION_STRATEGY = 0x8256; + public const int RESET_NOTIFICATION_STRATEGY_ARB = 0x8256; + public const int RESTART_PATH_NV = 0xF0; + public const int RESTART_SUN = 0x0001; + public const int RETAINED_APPLE = 0x8A1B; + public const int RG = 0x8227; + public const int RG16 = 0x822C; + public const int RG16F = 0x822F; + public const int RG16F_EXT = 0x822F; + public const int RG16I = 0x8239; + public const int RG16UI = 0x823A; + public const int RG16_SNORM = 0x8F99; + public const int RG32F = 0x8230; + public const int RG32F_EXT = 0x8230; + public const int RG32I = 0x823B; + public const int RG32UI = 0x823C; + public const int RG8 = 0x822B; + public const int RG8I = 0x8237; + public const int RG8UI = 0x8238; + public const int RG8_EXT = 0x822B; + public const int RG8_SNORM = 0x8F95; + public const int RGB = 0x1907; + public const int RGB10 = 0x8052; + public const int RGB10_A2 = 0x8059; + public const int RGB10_A2UI = 0x906F; + public const int RGB10_A2_EXT = 0x8059; + public const int RGB10_EXT = 0x8052; + public const int RGB12 = 0x8053; + public const int RGB12_EXT = 0x8053; + public const int RGB16 = 0x8054; + public const int RGB16F = 0x881B; + public const int RGB16F_ARB = 0x881B; + public const int RGB16F_EXT = 0x881B; + public const int RGB16I = 0x8D89; + public const int RGB16I_EXT = 0x8D89; + public const int RGB16UI = 0x8D77; + public const int RGB16UI_EXT = 0x8D77; + public const int RGB16_EXT = 0x8054; + public const int RGB16_SNORM = 0x8F9A; + public const int RGB2_EXT = 0x804E; + public const int RGB32F = 0x8815; + public const int RGB32F_ARB = 0x8815; + public const int RGB32F_EXT = 0x8815; + public const int RGB32I = 0x8D83; + public const int RGB32I_EXT = 0x8D83; + public const int RGB32UI = 0x8D71; + public const int RGB32UI_EXT = 0x8D71; + public const int RGB4 = 0x804F; + public const int RGB4_EXT = 0x804F; + public const int RGB4_S3TC = 0x83A1; + public const int RGB5 = 0x8050; + public const int RGB565 = 0x8D62; + public const int RGB5_A1 = 0x8057; + public const int RGB5_A1_EXT = 0x8057; + public const int RGB5_EXT = 0x8050; + public const int RGB8 = 0x8051; + public const int RGB8I = 0x8D8F; + public const int RGB8I_EXT = 0x8D8F; + public const int RGB8UI = 0x8D7D; + public const int RGB8UI_EXT = 0x8D7D; + public const int RGB8_EXT = 0x8051; + public const int RGB8_SNORM = 0x8F96; + public const int RGB9_E5 = 0x8C3D; + public const int RGB9_E5_EXT = 0x8C3D; + public const int RGBA = 0x1908; + public const int RGBA12 = 0x805A; + public const int RGBA12_EXT = 0x805A; + public const int RGBA16 = 0x805B; + public const int RGBA16F = 0x881A; + public const int RGBA16F_ARB = 0x881A; + public const int RGBA16F_EXT = 0x881A; + public const int RGBA16I = 0x8D88; + public const int RGBA16I_EXT = 0x8D88; + public const int RGBA16UI = 0x8D76; + public const int RGBA16UI_EXT = 0x8D76; + public const int RGBA16_EXT = 0x805B; + public const int RGBA16_SNORM = 0x8F9B; + public const int RGBA2 = 0x8055; + public const int RGBA2_EXT = 0x8055; + public const int RGBA32F = 0x8814; + public const int RGBA32F_ARB = 0x8814; + public const int RGBA32F_EXT = 0x8814; + public const int RGBA32I = 0x8D82; + public const int RGBA32I_EXT = 0x8D82; + public const int RGBA32UI = 0x8D70; + public const int RGBA32UI_EXT = 0x8D70; + public const int RGBA4 = 0x8056; + public const int RGBA4_DXT5_S3TC = 0x83A5; + public const int RGBA4_EXT = 0x8056; + public const int RGBA4_S3TC = 0x83A3; + public const int RGBA8 = 0x8058; + public const int RGBA8I = 0x8D8E; + public const int RGBA8I_EXT = 0x8D8E; + public const int RGBA8UI = 0x8D7C; + public const int RGBA8UI_EXT = 0x8D7C; + public const int RGBA8_EXT = 0x8058; + public const int RGBA8_SNORM = 0x8F97; + public const int RGBA_DXT5_S3TC = 0x83A4; + public const int RGBA_FLOAT16_APPLE = 0x881A; + public const int RGBA_FLOAT16_ATI = 0x881A; + public const int RGBA_FLOAT32_APPLE = 0x8814; + public const int RGBA_FLOAT32_ATI = 0x8814; + public const int RGBA_FLOAT_MODE_ARB = 0x8820; + public const int RGBA_FLOAT_MODE_ATI = 0x8820; + public const int RGBA_INTEGER = 0x8D99; + public const int RGBA_INTEGER_EXT = 0x8D99; + public const int RGBA_INTEGER_MODE_EXT = 0x8D9E; + public const int RGBA_S3TC = 0x83A2; + public const int RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C; + public const int RGBA_SNORM = 0x8F93; + public const int RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x86D9; + public const int RGB_422_APPLE = 0x8A1F; + public const int RGB_FLOAT16_APPLE = 0x881B; + public const int RGB_FLOAT16_ATI = 0x881B; + public const int RGB_FLOAT32_APPLE = 0x8815; + public const int RGB_FLOAT32_ATI = 0x8815; + public const int RGB_INTEGER = 0x8D98; + public const int RGB_INTEGER_EXT = 0x8D98; + public const int RGB_RAW_422_APPLE = 0x8A51; + public const int RGB_S3TC = 0x83A0; + public const int RGB_SCALE_ARB = 0x8573; + public const int RGB_SCALE_EXT = 0x8573; + public const int RGB_SNORM = 0x8F92; + public const int RG_INTEGER = 0x8228; + public const int RG_SNORM = 0x8F91; + public const int RIGHT = 0x0407; + public const int ROUNDED_RECT2_NV = 0xEA; + public const int ROUNDED_RECT4_NV = 0xEC; + public const int ROUNDED_RECT8_NV = 0xEE; + public const int ROUNDED_RECT_NV = 0xE8; + public const int ROUND_NV = 0x90A4; + public const int SAMPLER = 0x82E6; + public const int SAMPLER_1D = 0x8B5D; + public const int SAMPLER_1D_ARB = 0x8B5D; + public const int SAMPLER_1D_ARRAY = 0x8DC0; + public const int SAMPLER_1D_ARRAY_EXT = 0x8DC0; + public const int SAMPLER_1D_ARRAY_SHADOW = 0x8DC3; + public const int SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3; + public const int SAMPLER_1D_SHADOW = 0x8B61; + public const int SAMPLER_1D_SHADOW_ARB = 0x8B61; + public const int SAMPLER_2D = 0x8B5E; + public const int SAMPLER_2D_ARB = 0x8B5E; + public const int SAMPLER_2D_ARRAY = 0x8DC1; + public const int SAMPLER_2D_ARRAY_EXT = 0x8DC1; + public const int SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + public const int SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4; + public const int SAMPLER_2D_MULTISAMPLE = 0x9108; + public const int SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B; + public const int SAMPLER_2D_RECT = 0x8B63; + public const int SAMPLER_2D_RECT_ARB = 0x8B63; + public const int SAMPLER_2D_RECT_SHADOW = 0x8B64; + public const int SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64; + public const int SAMPLER_2D_SHADOW = 0x8B62; + public const int SAMPLER_2D_SHADOW_ARB = 0x8B62; + public const int SAMPLER_3D = 0x8B5F; + public const int SAMPLER_3D_ARB = 0x8B5F; + public const int SAMPLER_BINDING = 0x8919; + public const int SAMPLER_BUFFER = 0x8DC2; + public const int SAMPLER_BUFFER_AMD = 0x9001; + public const int SAMPLER_BUFFER_EXT = 0x8DC2; + public const int SAMPLER_CUBE = 0x8B60; + public const int SAMPLER_CUBE_ARB = 0x8B60; + public const int SAMPLER_CUBE_MAP_ARRAY = 0x900C; + public const int SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900C; + public const int SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D; + public const int SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = 0x900D; + public const int SAMPLER_CUBE_SHADOW = 0x8DC5; + public const int SAMPLER_CUBE_SHADOW_EXT = 0x8DC5; + public const int SAMPLER_OBJECT_AMD = 0x9155; + public const int SAMPLER_RENDERBUFFER_NV = 0x8E56; + public const int SAMPLES = 0x80A9; + public const int SAMPLES_3DFX = 0x86B4; + public const int SAMPLES_ARB = 0x80A9; + public const int SAMPLES_EXT = 0x80A9; + public const int SAMPLES_PASSED = 0x8914; + public const int SAMPLES_PASSED_ARB = 0x8914; + public const int SAMPLES_SGIS = 0x80A9; + public const int SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + public const int SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E; + public const int SAMPLE_ALPHA_TO_MASK_EXT = 0x809E; + public const int SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E; + public const int SAMPLE_ALPHA_TO_ONE = 0x809F; + public const int SAMPLE_ALPHA_TO_ONE_ARB = 0x809F; + public const int SAMPLE_ALPHA_TO_ONE_EXT = 0x809F; + public const int SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F; + public const int SAMPLE_BUFFERS = 0x80A8; + public const int SAMPLE_BUFFERS_3DFX = 0x86B3; + public const int SAMPLE_BUFFERS_ARB = 0x80A8; + public const int SAMPLE_BUFFERS_EXT = 0x80A8; + public const int SAMPLE_BUFFERS_SGIS = 0x80A8; + public const int SAMPLE_COVERAGE = 0x80A0; + public const int SAMPLE_COVERAGE_ARB = 0x80A0; + public const int SAMPLE_COVERAGE_INVERT = 0x80AB; + public const int SAMPLE_COVERAGE_INVERT_ARB = 0x80AB; + public const int SAMPLE_COVERAGE_VALUE = 0x80AA; + public const int SAMPLE_COVERAGE_VALUE_ARB = 0x80AA; + public const int SAMPLE_LOCATION_ARB = 0x8E50; + public const int SAMPLE_LOCATION_NV = 0x8E50; + public const int SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB = 0x933F; + public const int SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x933F; + public const int SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB = 0x933E; + public const int SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x933E; + public const int SAMPLE_LOCATION_SUBPIXEL_BITS_ARB = 0x933D; + public const int SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x933D; + public const int SAMPLE_MASK = 0x8E51; + public const int SAMPLE_MASK_EXT = 0x80A0; + public const int SAMPLE_MASK_INVERT_EXT = 0x80AB; + public const int SAMPLE_MASK_INVERT_SGIS = 0x80AB; + public const int SAMPLE_MASK_NV = 0x8E51; + public const int SAMPLE_MASK_SGIS = 0x80A0; + public const int SAMPLE_MASK_VALUE = 0x8E52; + public const int SAMPLE_MASK_VALUE_EXT = 0x80AA; + public const int SAMPLE_MASK_VALUE_NV = 0x8E52; + public const int SAMPLE_MASK_VALUE_SGIS = 0x80AA; + public const int SAMPLE_PATTERN_EXT = 0x80AC; + public const int SAMPLE_PATTERN_SGIS = 0x80AC; + public const int SAMPLE_POSITION = 0x8E50; + public const int SAMPLE_POSITION_NV = 0x8E50; + public const int SAMPLE_SHADING = 0x8C36; + public const int SAMPLE_SHADING_ARB = 0x8C36; + public const int SATURATE_BIT_ATI = 0x00000040; + public const int SCALAR_EXT = 0x87BE; + public const int SCALEBIAS_HINT_SGIX = 0x8322; + public const int SCALED_RESOLVE_FASTEST_EXT = 0x90BA; + public const int SCALED_RESOLVE_NICEST_EXT = 0x90BB; + public const int SCALE_BY_FOUR_NV = 0x853F; + public const int SCALE_BY_ONE_HALF_NV = 0x8540; + public const int SCALE_BY_TWO_NV = 0x853E; + public const int SCISSOR_BOX = 0x0C10; + public const int SCISSOR_BOX_EXCLUSIVE_NV = 0x9556; + public const int SCISSOR_COMMAND_NV = 0x0011; + public const int SCISSOR_TEST = 0x0C11; + public const int SCISSOR_TEST_EXCLUSIVE_NV = 0x9555; + public const int SCREEN_COORDINATES_REND = 0x8490; + public const int SCREEN_KHR = 0x9295; + public const int SCREEN_NV = 0x9295; + public const int SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27; + public const int SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C; + public const int SECONDARY_COLOR_ARRAY_EXT = 0x845E; + public const int SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31; + public const int SECONDARY_COLOR_ARRAY_LIST_IBM = 103077; + public const int SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087; + public const int SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x845D; + public const int SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x845A; + public const int SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x845C; + public const int SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x845B; + public const int SECONDARY_COLOR_NV = 0x852D; + public const int SECONDARY_INTERPOLATOR_ATI = 0x896D; + public const int SEMAPHORE_TYPE_BINARY_NV = 0x95B4; + public const int SEMAPHORE_TYPE_NV = 0x95B3; + public const int SEMAPHORE_TYPE_TIMELINE_NV = 0x95B5; + public const int SEPARABLE_2D_EXT = 0x8012; + public const int SEPARATE_ATTRIBS = 0x8C8D; + public const int SEPARATE_ATTRIBS_EXT = 0x8C8D; + public const int SEPARATE_ATTRIBS_NV = 0x8C8D; + public const int SEPARATE_SPECULAR_COLOR_EXT = 0x81FA; + public const int SET = 0x150F; + public const int SET_AMD = 0x874A; + public const int SHADER = 0x82E1; + public const int SHADER_BINARY_FORMATS = 0x8DF8; + public const int SHADER_BINARY_FORMAT_SPIR_V = 0x9551; + public const int SHADER_BINARY_FORMAT_SPIR_V_ARB = 0x9551; + public const int SHADER_COMPILER = 0x8DFA; + public const int SHADER_CONSISTENT_NV = 0x86DD; + public const int SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV = 0x00000010; + public const int SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020; + public const int SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020; + public const int SHADER_IMAGE_ATOMIC = 0x82A6; + public const int SHADER_IMAGE_LOAD = 0x82A4; + public const int SHADER_IMAGE_STORE = 0x82A5; + public const int SHADER_INCLUDE_ARB = 0x8DAE; + public const int SHADER_OBJECT_ARB = 0x8B48; + public const int SHADER_OBJECT_EXT = 0x8B48; + public const int SHADER_OPERATION_NV = 0x86DF; + public const int SHADER_SOURCE_LENGTH = 0x8B88; + public const int SHADER_STORAGE_BARRIER_BIT = 0x00002000; + public const int SHADER_STORAGE_BLOCK = 0x92E6; + public const int SHADER_STORAGE_BUFFER = 0x90D2; + public const int SHADER_STORAGE_BUFFER_BINDING = 0x90D3; + public const int SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF; + public const int SHADER_STORAGE_BUFFER_SIZE = 0x90D5; + public const int SHADER_STORAGE_BUFFER_START = 0x90D4; + public const int SHADER_TYPE = 0x8B4F; + public const int SHADING_LANGUAGE_VERSION = 0x8B8C; + public const int SHADING_LANGUAGE_VERSION_ARB = 0x8B8C; + public const int SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 0x956F; + public const int SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 0x9566; + public const int SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 0x9567; + public const int SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 0x9568; + public const int SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 0x9569; + public const int SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 0x956A; + public const int SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 0x956B; + public const int SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0x9565; + public const int SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 0x956C; + public const int SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 0x956D; + public const int SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 0x956E; + public const int SHADING_RATE_IMAGE_BINDING_NV = 0x955B; + public const int SHADING_RATE_IMAGE_NV = 0x9563; + public const int SHADING_RATE_IMAGE_PALETTE_COUNT_NV = 0x95B2; + public const int SHADING_RATE_IMAGE_PALETTE_SIZE_NV = 0x955E; + public const int SHADING_RATE_IMAGE_PER_PRIMITIVE_NV = 0x95B1; + public const int SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV = 0x955D; + public const int SHADING_RATE_IMAGE_TEXEL_WIDTH_NV = 0x955C; + public const int SHADING_RATE_NO_INVOCATIONS_NV = 0x9564; + public const int SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV = 0x95AE; + public const int SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV = 0x95AF; + public const int SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV = 0x95B0; + public const int SHADOW_AMBIENT_SGIX = 0x80BF; + public const int SHADOW_ATTENUATION_EXT = 0x834E; + public const int SHARED_EDGE_NV = 0xC0; + public const int SHARED_TEXTURE_PALETTE_EXT = 0x81FB; + public const int SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0; + public const int SHORT = 0x1402; + public const int SIGNALED = 0x9119; + public const int SIGNED_ALPHA8_NV = 0x8706; + public const int SIGNED_ALPHA_NV = 0x8705; + public const int SIGNED_HILO16_NV = 0x86FA; + public const int SIGNED_HILO8_NV = 0x885F; + public const int SIGNED_HILO_NV = 0x86F9; + public const int SIGNED_IDENTITY_NV = 0x853C; + public const int SIGNED_INTENSITY8_NV = 0x8708; + public const int SIGNED_INTENSITY_NV = 0x8707; + public const int SIGNED_LUMINANCE8_ALPHA8_NV = 0x8704; + public const int SIGNED_LUMINANCE8_NV = 0x8702; + public const int SIGNED_LUMINANCE_ALPHA_NV = 0x8703; + public const int SIGNED_LUMINANCE_NV = 0x8701; + public const int SIGNED_NEGATE_NV = 0x853D; + public const int SIGNED_NORMALIZED = 0x8F9C; + public const int SIGNED_RGB8_NV = 0x86FF; + public const int SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x870D; + public const int SIGNED_RGBA8_NV = 0x86FC; + public const int SIGNED_RGBA_NV = 0x86FB; + public const int SIGNED_RGB_NV = 0x86FE; + public const int SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x870C; + public const int SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC; + public const int SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE; + public const int SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD; + public const int SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF; + public const int SINGLE_COLOR_EXT = 0x81F9; + public const int SKIP_COMPONENTS1_NV = -6; + public const int SKIP_COMPONENTS2_NV = -5; + public const int SKIP_COMPONENTS3_NV = -4; + public const int SKIP_COMPONENTS4_NV = -3; + public const int SKIP_DECODE_EXT = 0x8A4A; + public const int SKIP_MISSING_GLYPH_NV = 0x90A9; + public const int SLICE_ACCUM_SUN = 0x85CC; + public const int SLUMINANCE8_ALPHA8_EXT = 0x8C45; + public const int SLUMINANCE8_EXT = 0x8C47; + public const int SLUMINANCE_ALPHA_EXT = 0x8C44; + public const int SLUMINANCE_EXT = 0x8C46; + public const int SMALL_CCW_ARC_TO_NV = 0x12; + public const int SMALL_CW_ARC_TO_NV = 0x14; + public const int SMOOTH_CUBIC_CURVE_TO_NV = 0x10; + public const int SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23; + public const int SMOOTH_LINE_WIDTH_RANGE = 0x0B22; + public const int SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13; + public const int SMOOTH_POINT_SIZE_RANGE = 0x0B12; + public const int SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0E; + public const int SM_COUNT_NV = 0x933B; + public const int SOFTLIGHT_KHR = 0x929C; + public const int SOFTLIGHT_NV = 0x929C; + public const int SOURCE0_ALPHA_ARB = 0x8588; + public const int SOURCE0_ALPHA_EXT = 0x8588; + public const int SOURCE0_RGB_ARB = 0x8580; + public const int SOURCE0_RGB_EXT = 0x8580; + public const int SOURCE1_ALPHA = 0x8589; + public const int SOURCE1_ALPHA_ARB = 0x8589; + public const int SOURCE1_ALPHA_EXT = 0x8589; + public const int SOURCE1_RGB_ARB = 0x8581; + public const int SOURCE1_RGB_EXT = 0x8581; + public const int SOURCE2_ALPHA_ARB = 0x858A; + public const int SOURCE2_ALPHA_EXT = 0x858A; + public const int SOURCE2_RGB_ARB = 0x8582; + public const int SOURCE2_RGB_EXT = 0x8582; + public const int SOURCE3_ALPHA_NV = 0x858B; + public const int SOURCE3_RGB_NV = 0x8583; + public const int SPARE0_NV = 0x852E; + public const int SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532; + public const int SPARE1_NV = 0x852F; + public const int SPARSE_BUFFER_PAGE_SIZE_ARB = 0x82F8; + public const int SPARSE_STORAGE_BIT_ARB = 0x0400; + public const int SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = 0x91A9; + public const int SPIR_V_BINARY = 0x9552; + public const int SPIR_V_BINARY_ARB = 0x9552; + public const int SPIR_V_EXTENSIONS = 0x9553; + public const int SPRITE_AXIAL_SGIX = 0x814C; + public const int SPRITE_AXIS_SGIX = 0x814A; + public const int SPRITE_EYE_ALIGNED_SGIX = 0x814E; + public const int SPRITE_MODE_SGIX = 0x8149; + public const int SPRITE_OBJECT_ALIGNED_SGIX = 0x814D; + public const int SPRITE_SGIX = 0x8148; + public const int SPRITE_TRANSLATION_SGIX = 0x814B; + public const int SQUARE_NV = 0x90A3; + public const int SR8_EXT = 0x8FBD; + public const int SRC1_ALPHA = 0x8589; + public const int SRC1_COLOR = 0x88F9; + public const int SRC_ALPHA = 0x0302; + public const int SRC_ALPHA_SATURATE = 0x0308; + public const int SRC_ATOP_NV = 0x928E; + public const int SRC_COLOR = 0x0300; + public const int SRC_IN_NV = 0x928A; + public const int SRC_NV = 0x9286; + public const int SRC_OUT_NV = 0x928C; + public const int SRC_OVER_NV = 0x9288; + public const int SRG8_EXT = 0x8FBE; + public const int SRGB = 0x8C40; + public const int SRGB8 = 0x8C41; + public const int SRGB8_ALPHA8 = 0x8C43; + public const int SRGB8_ALPHA8_EXT = 0x8C43; + public const int SRGB8_EXT = 0x8C41; + public const int SRGB_ALPHA = 0x8C42; + public const int SRGB_ALPHA_EXT = 0x8C42; + public const int SRGB_DECODE_ARB = 0x8299; + public const int SRGB_EXT = 0x8C40; + public const int SRGB_READ = 0x8297; + public const int SRGB_WRITE = 0x8298; + public const int STACK_OVERFLOW = 0x0503; + public const int STACK_UNDERFLOW = 0x0504; + public const int STANDARD_FONT_FORMAT_NV = 0x936C; + public const int STANDARD_FONT_NAME_NV = 0x9072; + public const int STATIC_ATI = 0x8760; + public const int STATIC_COPY = 0x88E6; + public const int STATIC_COPY_ARB = 0x88E6; + public const int STATIC_DRAW = 0x88E4; + public const int STATIC_DRAW_ARB = 0x88E4; + public const int STATIC_READ = 0x88E5; + public const int STATIC_READ_ARB = 0x88E5; + public const int STATIC_VERTEX_ARRAY_IBM = 103061; + public const int STENCIL = 0x1802; + public const int STENCIL_ATTACHMENT = 0x8D20; + public const int STENCIL_ATTACHMENT_EXT = 0x8D20; + public const int STENCIL_BACK_FAIL = 0x8801; + public const int STENCIL_BACK_FAIL_ATI = 0x8801; + public const int STENCIL_BACK_FUNC = 0x8800; + public const int STENCIL_BACK_FUNC_ATI = 0x8800; + public const int STENCIL_BACK_OP_VALUE_AMD = 0x874D; + public const int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + public const int STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x8802; + public const int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + public const int STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x8803; + public const int STENCIL_BACK_REF = 0x8CA3; + public const int STENCIL_BACK_VALUE_MASK = 0x8CA4; + public const int STENCIL_BACK_WRITEMASK = 0x8CA5; + public const int STENCIL_BUFFER_BIT = 0x00000400; + public const int STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3; + public const int STENCIL_CLEAR_VALUE = 0x0B91; + public const int STENCIL_COMPONENTS = 0x8285; + public const int STENCIL_FAIL = 0x0B94; + public const int STENCIL_FUNC = 0x0B92; + public const int STENCIL_INDEX = 0x1901; + public const int STENCIL_INDEX1 = 0x8D46; + public const int STENCIL_INDEX16 = 0x8D49; + public const int STENCIL_INDEX16_EXT = 0x8D49; + public const int STENCIL_INDEX1_EXT = 0x8D46; + public const int STENCIL_INDEX4 = 0x8D47; + public const int STENCIL_INDEX4_EXT = 0x8D47; + public const int STENCIL_INDEX8 = 0x8D48; + public const int STENCIL_INDEX8_EXT = 0x8D48; + public const int STENCIL_OP_VALUE_AMD = 0x874C; + public const int STENCIL_PASS_DEPTH_FAIL = 0x0B95; + public const int STENCIL_PASS_DEPTH_PASS = 0x0B96; + public const int STENCIL_REF = 0x0B97; + public const int STENCIL_REF_COMMAND_NV = 0x000C; + public const int STENCIL_RENDERABLE = 0x8288; + public const int STENCIL_SAMPLES_NV = 0x932E; + public const int STENCIL_TAG_BITS_EXT = 0x88F2; + public const int STENCIL_TEST = 0x0B90; + public const int STENCIL_TEST_TWO_SIDE_EXT = 0x8910; + public const int STENCIL_VALUE_MASK = 0x0B93; + public const int STENCIL_WRITEMASK = 0x0B98; + public const int STEREO = 0x0C33; + public const int STORAGE_CACHED_APPLE = 0x85BE; + public const int STORAGE_CLIENT_APPLE = 0x85B4; + public const int STORAGE_PRIVATE_APPLE = 0x85BD; + public const int STORAGE_SHARED_APPLE = 0x85BF; + public const int STREAM_COPY = 0x88E2; + public const int STREAM_COPY_ARB = 0x88E2; + public const int STREAM_DRAW = 0x88E0; + public const int STREAM_DRAW_ARB = 0x88E0; + public const int STREAM_RASTERIZATION_AMD = 0x91A0; + public const int STREAM_READ = 0x88E1; + public const int STREAM_READ_ARB = 0x88E1; + public const int STRICT_DEPTHFUNC_HINT_PGI = 0x1A216; + public const int STRICT_LIGHTING_HINT_PGI = 0x1A217; + public const int STRICT_SCISSOR_HINT_PGI = 0x1A218; + public const int SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR = 0x00000004; + public const int SUBGROUP_FEATURE_BALLOT_BIT_KHR = 0x00000008; + public const int SUBGROUP_FEATURE_BASIC_BIT_KHR = 0x00000001; + public const int SUBGROUP_FEATURE_CLUSTERED_BIT_KHR = 0x00000040; + public const int SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100; + public const int SUBGROUP_FEATURE_QUAD_BIT_KHR = 0x00000080; + public const int SUBGROUP_FEATURE_SHUFFLE_BIT_KHR = 0x00000010; + public const int SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR = 0x00000020; + public const int SUBGROUP_FEATURE_VOTE_BIT_KHR = 0x00000002; + public const int SUBGROUP_QUAD_ALL_STAGES_KHR = 0x9535; + public const int SUBGROUP_SIZE_KHR = 0x9532; + public const int SUBGROUP_SUPPORTED_FEATURES_KHR = 0x9534; + public const int SUBGROUP_SUPPORTED_STAGES_KHR = 0x9533; + public const int SUBPIXEL_BITS = 0x0D50; + public const int SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x9347; + public const int SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x9348; + public const int SUBSAMPLE_DISTANCE_AMD = 0x883F; + public const int SUBTRACT_ARB = 0x84E7; + public const int SUB_ATI = 0x8965; + public const int SUCCESS_NV = 0x902F; + public const int SUPERSAMPLE_SCALE_X_NV = 0x9372; + public const int SUPERSAMPLE_SCALE_Y_NV = 0x9373; + public const int SUPPORTED_MULTISAMPLE_MODES_AMD = 0x91B7; + public const int SURFACE_MAPPED_NV = 0x8700; + public const int SURFACE_REGISTERED_NV = 0x86FD; + public const int SURFACE_STATE_NV = 0x86EB; + public const int SWIZZLE_STQ_ATI = 0x8977; + public const int SWIZZLE_STQ_DQ_ATI = 0x8979; + public const int SWIZZLE_STRQ_ATI = 0x897A; + public const int SWIZZLE_STRQ_DQ_ATI = 0x897B; + public const int SWIZZLE_STR_ATI = 0x8976; + public const int SWIZZLE_STR_DR_ATI = 0x8978; + public const int SYNC_CL_EVENT_ARB = 0x8240; + public const int SYNC_CL_EVENT_COMPLETE_ARB = 0x8241; + public const int SYNC_CONDITION = 0x9113; + public const int SYNC_FENCE = 0x9116; + public const int SYNC_FLAGS = 0x9115; + public const int SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + public const int SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + public const int SYNC_STATUS = 0x9114; + public const int SYNC_X11_FENCE_EXT = 0x90E1; + public const int SYSTEM_FONT_NAME_NV = 0x9073; + public const int T2F_IUI_N3F_V2F_EXT = 0x81B3; + public const int T2F_IUI_N3F_V3F_EXT = 0x81B4; + public const int T2F_IUI_V2F_EXT = 0x81B1; + public const int T2F_IUI_V3F_EXT = 0x81B2; + public const int TABLE_TOO_LARGE_EXT = 0x8031; + public const int TANGENT_ARRAY_EXT = 0x8439; + public const int TANGENT_ARRAY_POINTER_EXT = 0x8442; + public const int TANGENT_ARRAY_STRIDE_EXT = 0x843F; + public const int TANGENT_ARRAY_TYPE_EXT = 0x843E; + public const int TASK_SHADER_BIT_NV = 0x00000080; + public const int TASK_SHADER_NV = 0x955A; + public const int TASK_SUBROUTINE_NV = 0x957D; + public const int TASK_SUBROUTINE_UNIFORM_NV = 0x957F; + public const int TASK_WORK_GROUP_SIZE_NV = 0x953F; + public const int TERMINATE_SEQUENCE_COMMAND_NV = 0x0000; + public const int TESSELLATION_FACTOR_AMD = 0x9005; + public const int TESSELLATION_MODE_AMD = 0x9004; + public const int TESS_CONTROL_OUTPUT_VERTICES = 0x8E75; + public const int TESS_CONTROL_PROGRAM_NV = 0x891E; + public const int TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = 0x8C74; + public const int TESS_CONTROL_SHADER = 0x8E88; + public const int TESS_CONTROL_SHADER_BIT = 0x00000008; + public const int TESS_CONTROL_SHADER_PATCHES = 0x82F1; + public const int TESS_CONTROL_SHADER_PATCHES_ARB = 0x82F1; + public const int TESS_CONTROL_SUBROUTINE = 0x92E9; + public const int TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF; + public const int TESS_CONTROL_TEXTURE = 0x829C; + public const int TESS_EVALUATION_PROGRAM_NV = 0x891F; + public const int TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = 0x8C75; + public const int TESS_EVALUATION_SHADER = 0x8E87; + public const int TESS_EVALUATION_SHADER_BIT = 0x00000010; + public const int TESS_EVALUATION_SHADER_INVOCATIONS = 0x82F2; + public const int TESS_EVALUATION_SHADER_INVOCATIONS_ARB = 0x82F2; + public const int TESS_EVALUATION_SUBROUTINE = 0x92EA; + public const int TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0; + public const int TESS_EVALUATION_TEXTURE = 0x829D; + public const int TESS_GEN_MODE = 0x8E76; + public const int TESS_GEN_POINT_MODE = 0x8E79; + public const int TESS_GEN_SPACING = 0x8E77; + public const int TESS_GEN_VERTEX_ORDER = 0x8E78; + public const int TEXCOORD1_BIT_PGI = 0x10000000; + public const int TEXCOORD2_BIT_PGI = 0x20000000; + public const int TEXCOORD3_BIT_PGI = 0x40000000; + public const uint TEXCOORD4_BIT_PGI = 0x80000000; + public const int TEXTURE = 0x1702; + public const int TEXTURE0 = 0x84C0; + public const int TEXTURE0_ARB = 0x84C0; + public const int TEXTURE1 = 0x84C1; + public const int TEXTURE10 = 0x84CA; + public const int TEXTURE10_ARB = 0x84CA; + public const int TEXTURE11 = 0x84CB; + public const int TEXTURE11_ARB = 0x84CB; + public const int TEXTURE12 = 0x84CC; + public const int TEXTURE12_ARB = 0x84CC; + public const int TEXTURE13 = 0x84CD; + public const int TEXTURE13_ARB = 0x84CD; + public const int TEXTURE14 = 0x84CE; + public const int TEXTURE14_ARB = 0x84CE; + public const int TEXTURE15 = 0x84CF; + public const int TEXTURE15_ARB = 0x84CF; + public const int TEXTURE16 = 0x84D0; + public const int TEXTURE16_ARB = 0x84D0; + public const int TEXTURE17 = 0x84D1; + public const int TEXTURE17_ARB = 0x84D1; + public const int TEXTURE18 = 0x84D2; + public const int TEXTURE18_ARB = 0x84D2; + public const int TEXTURE19 = 0x84D3; + public const int TEXTURE19_ARB = 0x84D3; + public const int TEXTURE1_ARB = 0x84C1; + public const int TEXTURE2 = 0x84C2; + public const int TEXTURE20 = 0x84D4; + public const int TEXTURE20_ARB = 0x84D4; + public const int TEXTURE21 = 0x84D5; + public const int TEXTURE21_ARB = 0x84D5; + public const int TEXTURE22 = 0x84D6; + public const int TEXTURE22_ARB = 0x84D6; + public const int TEXTURE23 = 0x84D7; + public const int TEXTURE23_ARB = 0x84D7; + public const int TEXTURE24 = 0x84D8; + public const int TEXTURE24_ARB = 0x84D8; + public const int TEXTURE25 = 0x84D9; + public const int TEXTURE25_ARB = 0x84D9; + public const int TEXTURE26 = 0x84DA; + public const int TEXTURE26_ARB = 0x84DA; + public const int TEXTURE27 = 0x84DB; + public const int TEXTURE27_ARB = 0x84DB; + public const int TEXTURE28 = 0x84DC; + public const int TEXTURE28_ARB = 0x84DC; + public const int TEXTURE29 = 0x84DD; + public const int TEXTURE29_ARB = 0x84DD; + public const int TEXTURE2_ARB = 0x84C2; + public const int TEXTURE3 = 0x84C3; + public const int TEXTURE30 = 0x84DE; + public const int TEXTURE30_ARB = 0x84DE; + public const int TEXTURE31 = 0x84DF; + public const int TEXTURE31_ARB = 0x84DF; + public const int TEXTURE3_ARB = 0x84C3; + public const int TEXTURE4 = 0x84C4; + public const int TEXTURE4_ARB = 0x84C4; + public const int TEXTURE5 = 0x84C5; + public const int TEXTURE5_ARB = 0x84C5; + public const int TEXTURE6 = 0x84C6; + public const int TEXTURE6_ARB = 0x84C6; + public const int TEXTURE7 = 0x84C7; + public const int TEXTURE7_ARB = 0x84C7; + public const int TEXTURE8 = 0x84C8; + public const int TEXTURE8_ARB = 0x84C8; + public const int TEXTURE9 = 0x84C9; + public const int TEXTURE9_ARB = 0x84C9; + public const int TEXTURE_1D = 0x0DE0; + public const int TEXTURE_1D_ARRAY = 0x8C18; + public const int TEXTURE_1D_ARRAY_EXT = 0x8C18; + public const int TEXTURE_1D_BINDING_EXT = 0x8068; + public const int TEXTURE_1D_STACK_BINDING_MESAX = 0x875D; + public const int TEXTURE_1D_STACK_MESAX = 0x8759; + public const int TEXTURE_2D = 0x0DE1; + public const int TEXTURE_2D_ARRAY = 0x8C1A; + public const int TEXTURE_2D_ARRAY_EXT = 0x8C1A; + public const int TEXTURE_2D_BINDING_EXT = 0x8069; + public const int TEXTURE_2D_MULTISAMPLE = 0x9100; + public const int TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102; + public const int TEXTURE_2D_STACK_BINDING_MESAX = 0x875E; + public const int TEXTURE_2D_STACK_MESAX = 0x875A; + public const int TEXTURE_3D = 0x806F; + public const int TEXTURE_3D_BINDING_EXT = 0x806A; + public const int TEXTURE_3D_EXT = 0x806F; + public const int TEXTURE_4DSIZE_SGIS = 0x8136; + public const int TEXTURE_4D_BINDING_SGIS = 0x814F; + public const int TEXTURE_4D_SGIS = 0x8134; + public const int TEXTURE_ALPHA_SIZE = 0x805F; + public const int TEXTURE_ALPHA_SIZE_EXT = 0x805F; + public const int TEXTURE_ALPHA_TYPE = 0x8C13; + public const int TEXTURE_ALPHA_TYPE_ARB = 0x8C13; + public const int TEXTURE_APPLICATION_MODE_EXT = 0x834F; + public const int TEXTURE_BASE_LEVEL = 0x813C; + public const int TEXTURE_BASE_LEVEL_SGIS = 0x813C; + public const int TEXTURE_BINDING_1D = 0x8068; + public const int TEXTURE_BINDING_1D_ARRAY = 0x8C1C; + public const int TEXTURE_BINDING_1D_ARRAY_EXT = 0x8C1C; + public const int TEXTURE_BINDING_2D = 0x8069; + public const int TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + public const int TEXTURE_BINDING_2D_ARRAY_EXT = 0x8C1D; + public const int TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104; + public const int TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105; + public const int TEXTURE_BINDING_3D = 0x806A; + public const int TEXTURE_BINDING_BUFFER = 0x8C2C; + public const int TEXTURE_BINDING_BUFFER_ARB = 0x8C2C; + public const int TEXTURE_BINDING_BUFFER_EXT = 0x8C2C; + public const int TEXTURE_BINDING_CUBE_MAP = 0x8514; + public const int TEXTURE_BINDING_CUBE_MAP_ARB = 0x8514; + public const int TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A; + public const int TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = 0x900A; + public const int TEXTURE_BINDING_CUBE_MAP_EXT = 0x8514; + public const int TEXTURE_BINDING_RECTANGLE = 0x84F6; + public const int TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6; + public const int TEXTURE_BINDING_RECTANGLE_NV = 0x84F6; + public const int TEXTURE_BINDING_RENDERBUFFER_NV = 0x8E53; + public const int TEXTURE_BLUE_SIZE = 0x805E; + public const int TEXTURE_BLUE_SIZE_EXT = 0x805E; + public const int TEXTURE_BLUE_TYPE = 0x8C12; + public const int TEXTURE_BLUE_TYPE_ARB = 0x8C12; + public const int TEXTURE_BORDER_COLOR = 0x1004; + public const int TEXTURE_BORDER_VALUES_NV = 0x871A; + public const int TEXTURE_BUFFER = 0x8C2A; + public const int TEXTURE_BUFFER_ARB = 0x8C2A; + public const int TEXTURE_BUFFER_BINDING = 0x8C2A; + public const int TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D; + public const int TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D; + public const int TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x8C2D; + public const int TEXTURE_BUFFER_EXT = 0x8C2A; + public const int TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E; + public const int TEXTURE_BUFFER_FORMAT_EXT = 0x8C2E; + public const int TEXTURE_BUFFER_OFFSET = 0x919D; + public const int TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F; + public const int TEXTURE_BUFFER_SIZE = 0x919E; + public const int TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171; + public const int TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176; + public const int TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172; + public const int TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175; + public const int TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173; + public const int TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174; + public const int TEXTURE_COLOR_SAMPLES_NV = 0x9046; + public const int TEXTURE_COLOR_TABLE_SGI = 0x80BC; + public const int TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF; + public const int TEXTURE_COMPARE_FAIL_VALUE_ARB = 0x80BF; + public const int TEXTURE_COMPARE_FUNC = 0x884D; + public const int TEXTURE_COMPARE_FUNC_ARB = 0x884D; + public const int TEXTURE_COMPARE_MODE = 0x884C; + public const int TEXTURE_COMPARE_MODE_ARB = 0x884C; + public const int TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B; + public const int TEXTURE_COMPARE_SGIX = 0x819A; + public const int TEXTURE_COMPRESSED = 0x86A1; + public const int TEXTURE_COMPRESSED_ARB = 0x86A1; + public const int TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2; + public const int TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3; + public const int TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1; + public const int TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0; + public const int TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x86A0; + public const int TEXTURE_COMPRESSION_HINT = 0x84EF; + public const int TEXTURE_COMPRESSION_HINT_ARB = 0x84EF; + public const int TEXTURE_CONSTANT_DATA_SUNX = 0x81D6; + public const int TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25; + public const int TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A; + public const int TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B; + public const int TEXTURE_COORD_ARRAY_EXT = 0x8078; + public const int TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F; + public const int TEXTURE_COORD_ARRAY_LIST_IBM = 103074; + public const int TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084; + public const int TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F8; + public const int TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092; + public const int TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088; + public const int TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A; + public const int TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089; + public const int TEXTURE_COORD_NV = 0x8C79; + public const int TEXTURE_COVERAGE_SAMPLES_NV = 0x9045; + public const int TEXTURE_CUBE_MAP = 0x8513; + public const int TEXTURE_CUBE_MAP_ARB = 0x8513; + public const int TEXTURE_CUBE_MAP_ARRAY = 0x9009; + public const int TEXTURE_CUBE_MAP_ARRAY_ARB = 0x9009; + public const int TEXTURE_CUBE_MAP_EXT = 0x8513; + public const int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + public const int TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x8516; + public const int TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x8516; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x8518; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x8518; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x851A; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x851A; + public const int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + public const int TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x8515; + public const int TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x8515; + public const int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + public const int TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x8517; + public const int TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x8517; + public const int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + public const int TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x8519; + public const int TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x8519; + public const int TEXTURE_CUBE_MAP_SEAMLESS = 0x884F; + public const int TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001; + public const int TEXTURE_DEFORMATION_SGIX = 0x8195; + public const int TEXTURE_DEPTH = 0x8071; + public const int TEXTURE_DEPTH_EXT = 0x8071; + public const int TEXTURE_DEPTH_SIZE = 0x884A; + public const int TEXTURE_DEPTH_SIZE_ARB = 0x884A; + public const int TEXTURE_DEPTH_TYPE = 0x8C16; + public const int TEXTURE_DEPTH_TYPE_ARB = 0x8C16; + public const int TEXTURE_DS_SIZE_NV = 0x871D; + public const int TEXTURE_DT_SIZE_NV = 0x871E; + public const int TEXTURE_ENV_BIAS_SGIX = 0x80BE; + public const int TEXTURE_FETCH_BARRIER_BIT = 0x00000008; + public const int TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008; + public const int TEXTURE_FILTER4_SIZE_SGIS = 0x8147; + public const int TEXTURE_FILTER_CONTROL_EXT = 0x8500; + public const int TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107; + public const int TEXTURE_FLOAT_COMPONENTS_NV = 0x888C; + public const int TEXTURE_FREE_MEMORY_ATI = 0x87FC; + public const int TEXTURE_GATHER = 0x82A2; + public const int TEXTURE_GATHER_SHADOW = 0x82A3; + public const int TEXTURE_GEQUAL_R_SGIX = 0x819D; + public const int TEXTURE_GREEN_SIZE = 0x805D; + public const int TEXTURE_GREEN_SIZE_EXT = 0x805D; + public const int TEXTURE_GREEN_TYPE = 0x8C11; + public const int TEXTURE_GREEN_TYPE_ARB = 0x8C11; + public const int TEXTURE_HEIGHT = 0x1001; + public const int TEXTURE_HI_SIZE_NV = 0x871B; + public const int TEXTURE_IMAGE_FORMAT = 0x828F; + public const int TEXTURE_IMAGE_TYPE = 0x8290; + public const int TEXTURE_IMMUTABLE_FORMAT = 0x912F; + public const int TEXTURE_IMMUTABLE_FORMAT_EXT = 0x912F; + public const int TEXTURE_IMMUTABLE_LEVELS = 0x82DF; + public const int TEXTURE_INDEX_SIZE_EXT = 0x80ED; + public const int TEXTURE_INTENSITY_SIZE_EXT = 0x8061; + public const int TEXTURE_INTENSITY_TYPE_ARB = 0x8C15; + public const int TEXTURE_INTERNAL_FORMAT = 0x1003; + public const int TEXTURE_LEQUAL_R_SGIX = 0x819C; + public const int TEXTURE_LIGHTING_MODE_HP = 0x8167; + public const int TEXTURE_LIGHT_EXT = 0x8350; + public const int TEXTURE_LOD_BIAS = 0x8501; + public const int TEXTURE_LOD_BIAS_EXT = 0x8501; + public const int TEXTURE_LOD_BIAS_R_SGIX = 0x8190; + public const int TEXTURE_LOD_BIAS_S_SGIX = 0x818E; + public const int TEXTURE_LOD_BIAS_T_SGIX = 0x818F; + public const int TEXTURE_LO_SIZE_NV = 0x871C; + public const int TEXTURE_LUMINANCE_SIZE_EXT = 0x8060; + public const int TEXTURE_LUMINANCE_TYPE_ARB = 0x8C14; + public const int TEXTURE_MAG_FILTER = 0x2800; + public const int TEXTURE_MAG_SIZE_NV = 0x871F; + public const int TEXTURE_MATERIAL_FACE_EXT = 0x8351; + public const int TEXTURE_MATERIAL_PARAMETER_EXT = 0x8352; + public const int TEXTURE_MAX_ANISOTROPY = 0x84FE; + public const int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE; + public const int TEXTURE_MAX_CLAMP_R_SGIX = 0x836B; + public const int TEXTURE_MAX_CLAMP_S_SGIX = 0x8369; + public const int TEXTURE_MAX_CLAMP_T_SGIX = 0x836A; + public const int TEXTURE_MAX_LEVEL = 0x813D; + public const int TEXTURE_MAX_LEVEL_SGIS = 0x813D; + public const int TEXTURE_MAX_LOD = 0x813B; + public const int TEXTURE_MAX_LOD_SGIS = 0x813B; + public const int TEXTURE_MEMORY_LAYOUT_INTEL = 0x83FF; + public const int TEXTURE_MIN_FILTER = 0x2801; + public const int TEXTURE_MIN_LOD = 0x813A; + public const int TEXTURE_MIN_LOD_SGIS = 0x813A; + public const int TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E; + public const int TEXTURE_NORMAL_EXT = 0x85AF; + public const int TEXTURE_POST_SPECULAR_HP = 0x8168; + public const int TEXTURE_PRE_SPECULAR_HP = 0x8169; + public const int TEXTURE_PRIORITY_EXT = 0x8066; + public const int TEXTURE_RANGE_LENGTH_APPLE = 0x85B7; + public const int TEXTURE_RANGE_POINTER_APPLE = 0x85B8; + public const int TEXTURE_RECTANGLE = 0x84F5; + public const int TEXTURE_RECTANGLE_ARB = 0x84F5; + public const int TEXTURE_RECTANGLE_NV = 0x84F5; + public const int TEXTURE_REDUCTION_MODE_ARB = 0x9366; + public const int TEXTURE_REDUCTION_MODE_EXT = 0x9366; + public const int TEXTURE_RED_SIZE = 0x805C; + public const int TEXTURE_RED_SIZE_EXT = 0x805C; + public const int TEXTURE_RED_TYPE = 0x8C10; + public const int TEXTURE_RED_TYPE_ARB = 0x8C10; + public const int TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x8E54; + public const int TEXTURE_RENDERBUFFER_NV = 0x8E55; + public const int TEXTURE_RESIDENT_EXT = 0x8067; + public const int TEXTURE_SAMPLES = 0x9106; + public const int TEXTURE_SHADER_NV = 0x86DE; + public const int TEXTURE_SHADOW = 0x82A1; + public const int TEXTURE_SHARED_SIZE = 0x8C3F; + public const int TEXTURE_SHARED_SIZE_EXT = 0x8C3F; + public const int TEXTURE_SPARSE_ARB = 0x91A6; + public const int TEXTURE_SRGB_DECODE_EXT = 0x8A48; + public const int TEXTURE_STENCIL_SIZE = 0x88F1; + public const int TEXTURE_STENCIL_SIZE_EXT = 0x88F1; + public const int TEXTURE_STORAGE_HINT_APPLE = 0x85BC; + public const int TEXTURE_STORAGE_SPARSE_BIT_AMD = 0x00000001; + public const int TEXTURE_SWIZZLE_A = 0x8E45; + public const int TEXTURE_SWIZZLE_A_EXT = 0x8E45; + public const int TEXTURE_SWIZZLE_B = 0x8E44; + public const int TEXTURE_SWIZZLE_B_EXT = 0x8E44; + public const int TEXTURE_SWIZZLE_G = 0x8E43; + public const int TEXTURE_SWIZZLE_G_EXT = 0x8E43; + public const int TEXTURE_SWIZZLE_R = 0x8E42; + public const int TEXTURE_SWIZZLE_RGBA = 0x8E46; + public const int TEXTURE_SWIZZLE_RGBA_EXT = 0x8E46; + public const int TEXTURE_SWIZZLE_R_EXT = 0x8E42; + public const int TEXTURE_TARGET = 0x1006; + public const int TEXTURE_TILING_EXT = 0x9580; + public const int TEXTURE_TOO_LARGE_EXT = 0x8065; + public const int TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x888F; + public const int TEXTURE_UPDATE_BARRIER_BIT = 0x00000100; + public const int TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100; + public const int TEXTURE_VIEW = 0x82B5; + public const int TEXTURE_VIEW_MIN_LAYER = 0x82DD; + public const int TEXTURE_VIEW_MIN_LEVEL = 0x82DB; + public const int TEXTURE_VIEW_NUM_LAYERS = 0x82DE; + public const int TEXTURE_VIEW_NUM_LEVELS = 0x82DC; + public const int TEXTURE_WIDTH = 0x1000; + public const int TEXTURE_WRAP_Q_SGIS = 0x8137; + public const int TEXTURE_WRAP_R = 0x8072; + public const int TEXTURE_WRAP_R_EXT = 0x8072; + public const int TEXTURE_WRAP_S = 0x2802; + public const int TEXTURE_WRAP_T = 0x2803; + public const int TEXT_FRAGMENT_SHADER_ATI = 0x8200; + public const int TILE_RASTER_ORDER_FIXED_MESA = 0x8BB8; + public const int TILE_RASTER_ORDER_INCREASING_X_MESA = 0x8BB9; + public const int TILE_RASTER_ORDER_INCREASING_Y_MESA = 0x8BBA; + public const int TILING_TYPES_EXT = 0x9583; + public const int TIMELINE_SEMAPHORE_VALUE_NV = 0x9595; + public const int TIMEOUT_EXPIRED = 0x911B; + public const ulong TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF; + public const int TIMESTAMP = 0x8E28; + public const int TIME_ELAPSED = 0x88BF; + public const int TIME_ELAPSED_EXT = 0x88BF; + public const int TOP_LEVEL_ARRAY_SIZE = 0x930C; + public const int TOP_LEVEL_ARRAY_STRIDE = 0x930D; + public const int TRACK_MATRIX_NV = 0x8648; + public const int TRACK_MATRIX_TRANSFORM_NV = 0x8649; + public const int TRANSFORM_FEEDBACK = 0x8E22; + public const int TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; + public const int TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E; + public const int TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800; + public const int TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800; + public const int TRANSFORM_FEEDBACK_BINDING = 0x8E25; + public const int TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25; + public const int TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + public const int TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24; + public const int TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24; + public const int TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + public const int TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x8C8F; + public const int TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F; + public const int TRANSFORM_FEEDBACK_BUFFER_EXT = 0x8C8E; + public const int TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B; + public const int TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + public const int TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x8C7F; + public const int TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F; + public const int TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E; + public const int TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23; + public const int TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23; + public const int TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + public const int TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x8C85; + public const int TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85; + public const int TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + public const int TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x8C84; + public const int TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84; + public const int TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C; + public const int TRANSFORM_FEEDBACK_NV = 0x8E22; + public const int TRANSFORM_FEEDBACK_OVERFLOW = 0x82EC; + public const int TRANSFORM_FEEDBACK_OVERFLOW_ARB = 0x82EC; + public const int TRANSFORM_FEEDBACK_PAUSED = 0x8E23; + public const int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + public const int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x8C88; + public const int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88; + public const int TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86; + public const int TRANSFORM_FEEDBACK_STREAM_OVERFLOW = 0x82ED; + public const int TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = 0x82ED; + public const int TRANSFORM_FEEDBACK_VARYING = 0x92F4; + public const int TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + public const int TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x8C83; + public const int TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83; + public const int TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76; + public const int TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x8C76; + public const int TRANSFORM_HINT_APPLE = 0x85B1; + public const int TRANSLATE_2D_NV = 0x9090; + public const int TRANSLATE_3D_NV = 0x9091; + public const int TRANSLATE_X_NV = 0x908E; + public const int TRANSLATE_Y_NV = 0x908F; + public const int TRANSPOSE_AFFINE_2D_NV = 0x9096; + public const int TRANSPOSE_AFFINE_3D_NV = 0x9098; + public const int TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6; + public const int TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7; + public const int TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3; + public const int TRANSPOSE_NV = 0x862C; + public const int TRANSPOSE_PROGRAM_MATRIX_EXT = 0x8E2E; + public const int TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4; + public const int TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5; + public const int TRIANGLES = 0x0004; + public const int TRIANGLES_ADJACENCY = 0x000C; + public const int TRIANGLES_ADJACENCY_ARB = 0x000C; + public const int TRIANGLES_ADJACENCY_EXT = 0x000C; + public const int TRIANGLE_FAN = 0x0006; + public const int TRIANGLE_LIST_SUN = 0x81D7; + public const int TRIANGLE_MESH_SUN = 0x8615; + public const int TRIANGLE_STRIP = 0x0005; + public const int TRIANGLE_STRIP_ADJACENCY = 0x000D; + public const int TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D; + public const int TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D; + public const int TRIANGULAR_NV = 0x90A5; + public const int TRUE = 1; + public const int TYPE = 0x92FA; + public const int UNCORRELATED_NV = 0x9282; + public const int UNDEFINED_APPLE = 0x8A1C; + public const int UNDEFINED_VERTEX = 0x8260; + public const int UNIFORM = 0x92E1; + public const int UNIFORM_ADDRESS_COMMAND_NV = 0x000A; + public const int UNIFORM_ARRAY_STRIDE = 0x8A3C; + public const int UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA; + public const int UNIFORM_BARRIER_BIT = 0x00000004; + public const int UNIFORM_BARRIER_BIT_EXT = 0x00000004; + public const int UNIFORM_BLOCK = 0x92E2; + public const int UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + public const int UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + public const int UNIFORM_BLOCK_BINDING = 0x8A3F; + public const int UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + public const int UNIFORM_BLOCK_INDEX = 0x8A3A; + public const int UNIFORM_BLOCK_NAME_LENGTH = 0x8A41; + public const int UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC; + public const int UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + public const int UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45; + public const int UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV = 0x959C; + public const int UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV = 0x959D; + public const int UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0; + public const int UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1; + public const int UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + public const int UNIFORM_BUFFER = 0x8A11; + public const int UNIFORM_BUFFER_ADDRESS_NV = 0x936F; + public const int UNIFORM_BUFFER_BINDING = 0x8A28; + public const int UNIFORM_BUFFER_BINDING_EXT = 0x8DEF; + public const int UNIFORM_BUFFER_EXT = 0x8DEE; + public const int UNIFORM_BUFFER_LENGTH_NV = 0x9370; + public const int UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + public const int UNIFORM_BUFFER_SIZE = 0x8A2A; + public const int UNIFORM_BUFFER_START = 0x8A29; + public const int UNIFORM_BUFFER_UNIFIED_NV = 0x936E; + public const int UNIFORM_IS_ROW_MAJOR = 0x8A3E; + public const int UNIFORM_MATRIX_STRIDE = 0x8A3D; + public const int UNIFORM_NAME_LENGTH = 0x8A39; + public const int UNIFORM_OFFSET = 0x8A3B; + public const int UNIFORM_SIZE = 0x8A38; + public const int UNIFORM_TYPE = 0x8A37; + public const int UNKNOWN_CONTEXT_RESET = 0x8255; + public const int UNKNOWN_CONTEXT_RESET_ARB = 0x8255; + public const int UNPACK_ALIGNMENT = 0x0CF5; + public const int UNPACK_CLIENT_STORAGE_APPLE = 0x85B2; + public const int UNPACK_CMYK_HINT_EXT = 0x800F; + public const int UNPACK_COMPRESSED_BLOCK_DEPTH = 0x9129; + public const int UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x9128; + public const int UNPACK_COMPRESSED_BLOCK_SIZE = 0x912A; + public const int UNPACK_COMPRESSED_BLOCK_WIDTH = 0x9127; + public const int UNPACK_CONSTANT_DATA_SUNX = 0x81D5; + public const int UNPACK_IMAGE_DEPTH_SGIS = 0x8133; + public const int UNPACK_IMAGE_HEIGHT = 0x806E; + public const int UNPACK_IMAGE_HEIGHT_EXT = 0x806E; + public const int UNPACK_LSB_FIRST = 0x0CF1; + public const int UNPACK_RESAMPLE_OML = 0x8985; + public const int UNPACK_RESAMPLE_SGIX = 0x842F; + public const int UNPACK_ROW_BYTES_APPLE = 0x8A16; + public const int UNPACK_ROW_LENGTH = 0x0CF2; + public const int UNPACK_SKIP_IMAGES = 0x806D; + public const int UNPACK_SKIP_IMAGES_EXT = 0x806D; + public const int UNPACK_SKIP_PIXELS = 0x0CF4; + public const int UNPACK_SKIP_ROWS = 0x0CF3; + public const int UNPACK_SKIP_VOLUMES_SGIS = 0x8132; + public const int UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1; + public const int UNPACK_SWAP_BYTES = 0x0CF0; + public const int UNSIGNALED = 0x9118; + public const int UNSIGNED_BYTE = 0x1401; + public const int UNSIGNED_BYTE_2_3_3_REV = 0x8362; + public const int UNSIGNED_BYTE_3_3_2 = 0x8032; + public const int UNSIGNED_BYTE_3_3_2_EXT = 0x8032; + public const int UNSIGNED_IDENTITY_NV = 0x8536; + public const int UNSIGNED_INT = 0x1405; + public const int UNSIGNED_INT16_NV = 0x8FF0; + public const int UNSIGNED_INT16_VEC2_NV = 0x8FF1; + public const int UNSIGNED_INT16_VEC3_NV = 0x8FF2; + public const int UNSIGNED_INT16_VEC4_NV = 0x8FF3; + public const int UNSIGNED_INT64_AMD = 0x8BC2; + public const int UNSIGNED_INT64_ARB = 0x140F; + public const int UNSIGNED_INT64_NV = 0x140F; + public const int UNSIGNED_INT64_VEC2_ARB = 0x8FF5; + public const int UNSIGNED_INT64_VEC2_NV = 0x8FF5; + public const int UNSIGNED_INT64_VEC3_ARB = 0x8FF6; + public const int UNSIGNED_INT64_VEC3_NV = 0x8FF6; + public const int UNSIGNED_INT64_VEC4_ARB = 0x8FF7; + public const int UNSIGNED_INT64_VEC4_NV = 0x8FF7; + public const int UNSIGNED_INT8_NV = 0x8FEC; + public const int UNSIGNED_INT8_VEC2_NV = 0x8FED; + public const int UNSIGNED_INT8_VEC3_NV = 0x8FEE; + public const int UNSIGNED_INT8_VEC4_NV = 0x8FEF; + public const int UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + public const int UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x8C3B; + public const int UNSIGNED_INT_10_10_10_2 = 0x8036; + public const int UNSIGNED_INT_10_10_10_2_EXT = 0x8036; + public const int UNSIGNED_INT_24_8 = 0x84FA; + public const int UNSIGNED_INT_24_8_EXT = 0x84FA; + public const int UNSIGNED_INT_24_8_NV = 0x84FA; + public const int UNSIGNED_INT_2_10_10_10_REV = 0x8368; + public const int UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + public const int UNSIGNED_INT_5_9_9_9_REV_EXT = 0x8C3E; + public const int UNSIGNED_INT_8_8_8_8 = 0x8035; + public const int UNSIGNED_INT_8_8_8_8_EXT = 0x8035; + public const int UNSIGNED_INT_8_8_8_8_REV = 0x8367; + public const int UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x86DB; + public const int UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB; + public const int UNSIGNED_INT_IMAGE_1D = 0x9062; + public const int UNSIGNED_INT_IMAGE_1D_ARRAY = 0x9068; + public const int UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x9068; + public const int UNSIGNED_INT_IMAGE_1D_EXT = 0x9062; + public const int UNSIGNED_INT_IMAGE_2D = 0x9063; + public const int UNSIGNED_INT_IMAGE_2D_ARRAY = 0x9069; + public const int UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x9069; + public const int UNSIGNED_INT_IMAGE_2D_EXT = 0x9063; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x906B; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x906C; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x906C; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x906B; + public const int UNSIGNED_INT_IMAGE_2D_RECT = 0x9065; + public const int UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x9065; + public const int UNSIGNED_INT_IMAGE_3D = 0x9064; + public const int UNSIGNED_INT_IMAGE_3D_EXT = 0x9064; + public const int UNSIGNED_INT_IMAGE_BUFFER = 0x9067; + public const int UNSIGNED_INT_IMAGE_BUFFER_EXT = 0x9067; + public const int UNSIGNED_INT_IMAGE_CUBE = 0x9066; + public const int UNSIGNED_INT_IMAGE_CUBE_EXT = 0x9066; + public const int UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x906A; + public const int UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x906A; + public const int UNSIGNED_INT_S8_S8_8_8_NV = 0x86DA; + public const int UNSIGNED_INT_SAMPLER_1D = 0x8DD1; + public const int UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6; + public const int UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6; + public const int UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1; + public const int UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + public const int UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + public const int UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7; + public const int UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2; + public const int UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A; + public const int UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D; + public const int UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5; + public const int UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5; + public const int UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + public const int UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3; + public const int UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8; + public const int UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x9003; + public const int UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8; + public const int UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + public const int UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4; + public const int UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F; + public const int UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900F; + public const int UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58; + public const int UNSIGNED_INT_VEC2 = 0x8DC6; + public const int UNSIGNED_INT_VEC2_EXT = 0x8DC6; + public const int UNSIGNED_INT_VEC3 = 0x8DC7; + public const int UNSIGNED_INT_VEC3_EXT = 0x8DC7; + public const int UNSIGNED_INT_VEC4 = 0x8DC8; + public const int UNSIGNED_INT_VEC4_EXT = 0x8DC8; + public const int UNSIGNED_INVERT_NV = 0x8537; + public const int UNSIGNED_NORMALIZED = 0x8C17; + public const int UNSIGNED_NORMALIZED_ARB = 0x8C17; + public const int UNSIGNED_SHORT = 0x1403; + public const int UNSIGNED_SHORT_1_5_5_5_REV = 0x8366; + public const int UNSIGNED_SHORT_4_4_4_4 = 0x8033; + public const int UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033; + public const int UNSIGNED_SHORT_4_4_4_4_REV = 0x8365; + public const int UNSIGNED_SHORT_5_5_5_1 = 0x8034; + public const int UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034; + public const int UNSIGNED_SHORT_5_6_5 = 0x8363; + public const int UNSIGNED_SHORT_5_6_5_REV = 0x8364; + public const int UNSIGNED_SHORT_8_8_APPLE = 0x85BA; + public const int UNSIGNED_SHORT_8_8_MESA = 0x85BA; + public const int UNSIGNED_SHORT_8_8_REV_APPLE = 0x85BB; + public const int UNSIGNED_SHORT_8_8_REV_MESA = 0x85BB; + public const int UPLOAD_GPU_MASK_NVX = 0x954A; + public const int UPPER_LEFT = 0x8CA2; + public const int USE_MISSING_GLYPH_NV = 0x90AA; + public const int UTF16_NV = 0x909B; + public const int UTF8_NV = 0x909A; + public const int UUID_SIZE_EXT = 16; + public const int VALIDATE_STATUS = 0x8B83; + public const int VARIABLE_A_NV = 0x8523; + public const int VARIABLE_B_NV = 0x8524; + public const int VARIABLE_C_NV = 0x8525; + public const int VARIABLE_D_NV = 0x8526; + public const int VARIABLE_E_NV = 0x8527; + public const int VARIABLE_F_NV = 0x8528; + public const int VARIABLE_G_NV = 0x8529; + public const int VARIANT_ARRAY_EXT = 0x87E8; + public const int VARIANT_ARRAY_POINTER_EXT = 0x87E9; + public const int VARIANT_ARRAY_STRIDE_EXT = 0x87E6; + public const int VARIANT_ARRAY_TYPE_EXT = 0x87E7; + public const int VARIANT_DATATYPE_EXT = 0x87E5; + public const int VARIANT_EXT = 0x87C1; + public const int VARIANT_VALUE_EXT = 0x87E4; + public const int VBO_FREE_MEMORY_ATI = 0x87FB; + public const int VECTOR_EXT = 0x87BF; + public const int VENDOR = 0x1F00; + public const int VERSION = 0x1F02; + public const int VERTEX23_BIT_PGI = 0x00000004; + public const int VERTEX4_BIT_PGI = 0x00000008; + public const int VERTEX_ARRAY = 0x8074; + public const int VERTEX_ARRAY_ADDRESS_NV = 0x8F21; + public const int VERTEX_ARRAY_BINDING = 0x85B5; + public const int VERTEX_ARRAY_BINDING_APPLE = 0x85B5; + public const int VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896; + public const int VERTEX_ARRAY_COUNT_EXT = 0x807D; + public const int VERTEX_ARRAY_EXT = 0x8074; + public const int VERTEX_ARRAY_LENGTH_NV = 0x8F2B; + public const int VERTEX_ARRAY_LIST_IBM = 103070; + public const int VERTEX_ARRAY_LIST_STRIDE_IBM = 103080; + public const int VERTEX_ARRAY_OBJECT_AMD = 0x9154; + public const int VERTEX_ARRAY_OBJECT_EXT = 0x9154; + public const int VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F5; + public const int VERTEX_ARRAY_POINTER_EXT = 0x808E; + public const int VERTEX_ARRAY_RANGE_APPLE = 0x851D; + public const int VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E; + public const int VERTEX_ARRAY_RANGE_LENGTH_NV = 0x851E; + public const int VERTEX_ARRAY_RANGE_NV = 0x851D; + public const int VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521; + public const int VERTEX_ARRAY_RANGE_POINTER_NV = 0x8521; + public const int VERTEX_ARRAY_RANGE_VALID_NV = 0x851F; + public const int VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x8533; + public const int VERTEX_ARRAY_SIZE_EXT = 0x807A; + public const int VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F; + public const int VERTEX_ARRAY_STRIDE_EXT = 0x807C; + public const int VERTEX_ARRAY_TYPE_EXT = 0x807B; + public const int VERTEX_ATTRIB_ARRAY0_NV = 0x8650; + public const int VERTEX_ATTRIB_ARRAY10_NV = 0x865A; + public const int VERTEX_ATTRIB_ARRAY11_NV = 0x865B; + public const int VERTEX_ATTRIB_ARRAY12_NV = 0x865C; + public const int VERTEX_ATTRIB_ARRAY13_NV = 0x865D; + public const int VERTEX_ATTRIB_ARRAY14_NV = 0x865E; + public const int VERTEX_ATTRIB_ARRAY15_NV = 0x865F; + public const int VERTEX_ATTRIB_ARRAY1_NV = 0x8651; + public const int VERTEX_ATTRIB_ARRAY2_NV = 0x8652; + public const int VERTEX_ATTRIB_ARRAY3_NV = 0x8653; + public const int VERTEX_ATTRIB_ARRAY4_NV = 0x8654; + public const int VERTEX_ATTRIB_ARRAY5_NV = 0x8655; + public const int VERTEX_ATTRIB_ARRAY6_NV = 0x8656; + public const int VERTEX_ATTRIB_ARRAY7_NV = 0x8657; + public const int VERTEX_ATTRIB_ARRAY8_NV = 0x8658; + public const int VERTEX_ATTRIB_ARRAY9_NV = 0x8659; + public const int VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20; + public const int VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001; + public const int VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001; + public const int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + public const int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F; + public const int VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + public const int VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE; + public const int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + public const int VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x8622; + public const int VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + public const int VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD; + public const int VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD; + public const int VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A; + public const int VERTEX_ATTRIB_ARRAY_LONG = 0x874E; + public const int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + public const int VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x886A; + public const int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + public const int VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x8645; + public const int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + public const int VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x8623; + public const int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + public const int VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x8624; + public const int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + public const int VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x8625; + public const int VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E; + public const int VERTEX_ATTRIB_BINDING = 0x82D4; + public const int VERTEX_ATTRIB_MAP1_APPLE = 0x8A00; + public const int VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03; + public const int VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05; + public const int VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04; + public const int VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02; + public const int VERTEX_ATTRIB_MAP2_APPLE = 0x8A01; + public const int VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07; + public const int VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09; + public const int VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08; + public const int VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06; + public const int VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5; + public const int VERTEX_BINDING_BUFFER = 0x8F4F; + public const int VERTEX_BINDING_DIVISOR = 0x82D6; + public const int VERTEX_BINDING_OFFSET = 0x82D7; + public const int VERTEX_BINDING_STRIDE = 0x82D8; + public const int VERTEX_BLEND_ARB = 0x86A7; + public const int VERTEX_CONSISTENT_HINT_PGI = 0x1A22B; + public const int VERTEX_DATA_HINT_PGI = 0x1A22A; + public const int VERTEX_ELEMENT_SWIZZLE_AMD = 0x91A4; + public const int VERTEX_ID_NV = 0x8C7B; + public const int VERTEX_ID_SWIZZLE_AMD = 0x91A5; + public const int VERTEX_PRECLIP_HINT_SGIX = 0x83EF; + public const int VERTEX_PRECLIP_SGIX = 0x83EE; + public const int VERTEX_PROGRAM_ARB = 0x8620; + public const int VERTEX_PROGRAM_BINDING_NV = 0x864A; + public const int VERTEX_PROGRAM_NV = 0x8620; + public const int VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA2; + public const int VERTEX_PROGRAM_POINT_SIZE = 0x8642; + public const int VERTEX_PROGRAM_POINT_SIZE_ARB = 0x8642; + public const int VERTEX_PROGRAM_POINT_SIZE_NV = 0x8642; + public const int VERTEX_PROGRAM_TWO_SIDE_ARB = 0x8643; + public const int VERTEX_PROGRAM_TWO_SIDE_NV = 0x8643; + public const int VERTEX_SHADER = 0x8B31; + public const int VERTEX_SHADER_ARB = 0x8B31; + public const int VERTEX_SHADER_BINDING_EXT = 0x8781; + public const int VERTEX_SHADER_BIT = 0x00000001; + public const int VERTEX_SHADER_EXT = 0x8780; + public const int VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CF; + public const int VERTEX_SHADER_INVARIANTS_EXT = 0x87D1; + public const int VERTEX_SHADER_INVOCATIONS = 0x82F0; + public const int VERTEX_SHADER_INVOCATIONS_ARB = 0x82F0; + public const int VERTEX_SHADER_LOCALS_EXT = 0x87D3; + public const int VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87D2; + public const int VERTEX_SHADER_OPTIMIZED_EXT = 0x87D4; + public const int VERTEX_SHADER_VARIANTS_EXT = 0x87D0; + public const int VERTEX_SOURCE_ATI = 0x8774; + public const int VERTEX_STATE_PROGRAM_NV = 0x8621; + public const int VERTEX_STREAM0_ATI = 0x876C; + public const int VERTEX_STREAM1_ATI = 0x876D; + public const int VERTEX_STREAM2_ATI = 0x876E; + public const int VERTEX_STREAM3_ATI = 0x876F; + public const int VERTEX_STREAM4_ATI = 0x8770; + public const int VERTEX_STREAM5_ATI = 0x8771; + public const int VERTEX_STREAM6_ATI = 0x8772; + public const int VERTEX_STREAM7_ATI = 0x8773; + public const int VERTEX_SUBROUTINE = 0x92E8; + public const int VERTEX_SUBROUTINE_UNIFORM = 0x92EE; + public const int VERTEX_TEXTURE = 0x829B; + public const int VERTEX_WEIGHTING_EXT = 0x8509; + public const int VERTEX_WEIGHT_ARRAY_EXT = 0x850C; + public const int VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x8510; + public const int VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x850D; + public const int VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x850F; + public const int VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x850E; + public const int VERTICAL_LINE_TO_NV = 0x08; + public const int VERTICES_SUBMITTED = 0x82EE; + public const int VERTICES_SUBMITTED_ARB = 0x82EE; + public const int VIBRANCE_BIAS_NV = 0x8719; + public const int VIBRANCE_SCALE_NV = 0x8713; + public const int VIDEO_BUFFER_BINDING_NV = 0x9021; + public const int VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D; + public const int VIDEO_BUFFER_NV = 0x9020; + public const int VIDEO_BUFFER_PITCH_NV = 0x9028; + public const int VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B; + public const int VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A; + public const int VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039; + public const int VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038; + public const int VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C; + public const int VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026; + public const int VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029; + public const int VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A; + public const int VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B; + public const int VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C; + public const int VIEWPORT = 0x0BA2; + public const int VIEWPORT_BOUNDS_RANGE = 0x825D; + public const int VIEWPORT_COMMAND_NV = 0x0010; + public const int VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F; + public const int VIEWPORT_POSITION_W_SCALE_NV = 0x937C; + public const int VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = 0x937D; + public const int VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = 0x937E; + public const int VIEWPORT_SUBPIXEL_BITS = 0x825C; + public const int VIEWPORT_SWIZZLE_NEGATIVE_W_NV = 0x9357; + public const int VIEWPORT_SWIZZLE_NEGATIVE_X_NV = 0x9351; + public const int VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = 0x9353; + public const int VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = 0x9355; + public const int VIEWPORT_SWIZZLE_POSITIVE_W_NV = 0x9356; + public const int VIEWPORT_SWIZZLE_POSITIVE_X_NV = 0x9350; + public const int VIEWPORT_SWIZZLE_POSITIVE_Y_NV = 0x9352; + public const int VIEWPORT_SWIZZLE_POSITIVE_Z_NV = 0x9354; + public const int VIEWPORT_SWIZZLE_W_NV = 0x935B; + public const int VIEWPORT_SWIZZLE_X_NV = 0x9358; + public const int VIEWPORT_SWIZZLE_Y_NV = 0x9359; + public const int VIEWPORT_SWIZZLE_Z_NV = 0x935A; + public const int VIEW_CLASS_128_BITS = 0x82C4; + public const int VIEW_CLASS_16_BITS = 0x82CA; + public const int VIEW_CLASS_24_BITS = 0x82C9; + public const int VIEW_CLASS_32_BITS = 0x82C8; + public const int VIEW_CLASS_48_BITS = 0x82C7; + public const int VIEW_CLASS_64_BITS = 0x82C6; + public const int VIEW_CLASS_8_BITS = 0x82CB; + public const int VIEW_CLASS_96_BITS = 0x82C5; + public const int VIEW_CLASS_ASTC_10x10_RGBA = 0x9393; + public const int VIEW_CLASS_ASTC_10x5_RGBA = 0x9390; + public const int VIEW_CLASS_ASTC_10x6_RGBA = 0x9391; + public const int VIEW_CLASS_ASTC_10x8_RGBA = 0x9392; + public const int VIEW_CLASS_ASTC_12x10_RGBA = 0x9394; + public const int VIEW_CLASS_ASTC_12x12_RGBA = 0x9395; + public const int VIEW_CLASS_ASTC_4x4_RGBA = 0x9388; + public const int VIEW_CLASS_ASTC_5x4_RGBA = 0x9389; + public const int VIEW_CLASS_ASTC_5x5_RGBA = 0x938A; + public const int VIEW_CLASS_ASTC_6x5_RGBA = 0x938B; + public const int VIEW_CLASS_ASTC_6x6_RGBA = 0x938C; + public const int VIEW_CLASS_ASTC_8x5_RGBA = 0x938D; + public const int VIEW_CLASS_ASTC_8x6_RGBA = 0x938E; + public const int VIEW_CLASS_ASTC_8x8_RGBA = 0x938F; + public const int VIEW_CLASS_BPTC_FLOAT = 0x82D3; + public const int VIEW_CLASS_BPTC_UNORM = 0x82D2; + public const int VIEW_CLASS_EAC_R11 = 0x9383; + public const int VIEW_CLASS_EAC_RG11 = 0x9384; + public const int VIEW_CLASS_ETC2_EAC_RGBA = 0x9387; + public const int VIEW_CLASS_ETC2_RGB = 0x9385; + public const int VIEW_CLASS_ETC2_RGBA = 0x9386; + public const int VIEW_CLASS_RGTC1_RED = 0x82D0; + public const int VIEW_CLASS_RGTC2_RG = 0x82D1; + public const int VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC; + public const int VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD; + public const int VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE; + public const int VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF; + public const int VIEW_COMPATIBILITY_CLASS = 0x82B6; + public const int VIRTUAL_PAGE_SIZE_INDEX_ARB = 0x91A7; + public const int VIRTUAL_PAGE_SIZE_X_AMD = 0x9195; + public const int VIRTUAL_PAGE_SIZE_X_ARB = 0x9195; + public const int VIRTUAL_PAGE_SIZE_Y_AMD = 0x9196; + public const int VIRTUAL_PAGE_SIZE_Y_ARB = 0x9196; + public const int VIRTUAL_PAGE_SIZE_Z_AMD = 0x9197; + public const int VIRTUAL_PAGE_SIZE_Z_ARB = 0x9197; + public const int VIVIDLIGHT_NV = 0x92A6; + public const int VOLATILE_APPLE = 0x8A1A; + public const int WAIT_FAILED = 0x911D; + public const int WARPS_PER_SM_NV = 0x933A; + public const int WARP_SIZE_NV = 0x9339; + public const int WEIGHTED_AVERAGE_ARB = 0x9367; + public const int WEIGHTED_AVERAGE_EXT = 0x9367; + public const int WEIGHT_ARRAY_ARB = 0x86AD; + public const int WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E; + public const int WEIGHT_ARRAY_POINTER_ARB = 0x86AC; + public const int WEIGHT_ARRAY_SIZE_ARB = 0x86AB; + public const int WEIGHT_ARRAY_STRIDE_ARB = 0x86AA; + public const int WEIGHT_ARRAY_TYPE_ARB = 0x86A9; + public const int WEIGHT_SUM_UNITY_ARB = 0x86A6; + public const int WIDE_LINE_HINT_PGI = 0x1A222; + public const int WINDOW_RECTANGLE_EXT = 0x8F12; + public const int WINDOW_RECTANGLE_MODE_EXT = 0x8F13; + public const int WRAP_BORDER_SUN = 0x81D4; + public const int WRITE_DISCARD_NV = 0x88BE; + public const int WRITE_ONLY = 0x88B9; + public const int WRITE_ONLY_ARB = 0x88B9; + public const int WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A; + public const int WRITE_PIXEL_DATA_RANGE_NV = 0x8878; + public const int WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x887C; + public const int W_EXT = 0x87D8; + public const int XOR = 0x1506; + public const int XOR_NV = 0x1506; + public const int X_EXT = 0x87D5; + public const int YCBAYCR8A_4224_NV = 0x9032; + public const int YCBCR_422_APPLE = 0x85B9; + public const int YCBCR_MESA = 0x8757; + public const int YCBYCR8_422_NV = 0x9031; + public const int YCRCBA_SGIX = 0x8319; + public const int YCRCB_422_SGIX = 0x81BB; + public const int YCRCB_444_SGIX = 0x81BC; + public const int YCRCB_SGIX = 0x8318; + public const int Y_EXT = 0x87D6; + public const int Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036; + public const int Z4Y12Z4CB12Z4CR12_444_NV = 0x9037; + public const int Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035; + public const int Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034; + public const int Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033; + public const int ZERO = 0; + public const int ZERO_EXT = 0x87DD; + public const int ZERO_TO_ONE = 0x935F; + public const int Z_EXT = 0x87D7; + + #endregion + } + + public static class glAttachment + { + + public const uint Depth = glConst.DEPTH_ATTACHMENT; + public const uint DepthAndStencil = glConst.DEPTH_STENCIL_ATTACHMENT; + public const uint Stencil = glConst.STENCIL_ATTACHMENT; + + public static uint Color( int i ) + { + #if DEBUG + if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) { + throw new ArgumentOutOfRangeException(); + } + #endif + return ( uint )( glConst.COLOR_ATTACHMENT0 + i ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glContext.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glContext.cs new file mode 100644 index 00000000..0b60a869 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glContext.cs @@ -0,0 +1,2611 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glContext.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.Common.Internal.Intrinsic; +using StgSharp.Internal; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Collections.Generic; + +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + [StructLayout( LayoutKind.Sequential )] + public struct OpenglContext + { + + public override bool Equals( object obj ) + { + return false; + } + + public override unsafe int GetHashCode() + { + fixed( OpenglContext* sptr = &this ) { + return sptr->GetHashCode(); + } + } + + public static bool operator !=( + OpenglContext left, + OpenglContext right ) + { + return !( left == right ); + } + + public static bool operator ==( + OpenglContext left, + OpenglContext right ) + { + return left.Equals( right ); + } + + #region glapi + + internal unsafe delegate* glAccumxOES; + internal unsafe delegate* glAcquireKeyedMutexWin32EXT; + internal unsafe delegate* glActiveProgramEXT; + internal unsafe delegate* glActiveShaderProgram; + internal unsafe delegate* glActiveStencilFaceEXT; + internal unsafe delegate* glActiveTexture; + internal unsafe delegate* glActiveTextureARB; + internal unsafe delegate* glActiveVaryingNV; + internal unsafe delegate* glAlphaFragmentOp1ATI; + internal unsafe delegate* glAlphaFragmentOp2ATI; + internal unsafe delegate* glAlphaFragmentOp3ATI; + internal unsafe delegate* glAlphaFuncxOES; + internal unsafe delegate* glAlphaToCoverageDitherControlNV; + internal unsafe delegate* glApplyFramebufferAttachmentCMAAINTEL; + internal unsafe delegate* glApplyTextureEXT; + internal unsafe delegate* glAreProgramsResidentNV; + internal unsafe delegate* glAreTexturesResidentEXT; + internal unsafe delegate* glArrayElementEXT; + internal unsafe delegate* glArrayObjectATI; + internal unsafe delegate* glAsyncCopyBufferSubDataNVX; + internal unsafe delegate* glAsyncCopyImageSubDataNVX; + internal unsafe delegate* glAsyncMarkerSGIX; + internal unsafe delegate* glAttachObjectARB; + internal unsafe delegate* glAttachShader; + internal unsafe delegate* glBeginConditionalRender; + internal unsafe delegate* glBeginConditionalRenderNV; + internal unsafe delegate* glBeginConditionalRenderNVX; + internal unsafe delegate* glBeginFragmentShaderATI; + internal unsafe delegate* glBeginOcclusionQueryNV; + internal unsafe delegate* glBeginPerfMonitorAMD; + internal unsafe delegate* glBeginPerfQueryINTEL; + internal unsafe delegate* glBeginQuery; + internal unsafe delegate* glBeginQueryARB; + internal unsafe delegate* glBeginQueryIndexed; + internal unsafe delegate* glBeginTransformFeedback; + internal unsafe delegate* glBeginTransformFeedbackEXT; + internal unsafe delegate* glBeginTransformFeedbackNV; + internal unsafe delegate* glBeginVertexShaderEXT; + internal unsafe delegate* glBeginVideoCaptureNV; + internal unsafe delegate* glBindAttribLocation; + internal unsafe delegate* glBindAttribLocationARB; + internal unsafe delegate* glBindBuffer; + internal unsafe delegate* glBindBufferARB; + internal unsafe delegate* glBindBufferBase; + internal unsafe delegate* glBindBufferBaseEXT; + internal unsafe delegate* glBindBufferBaseNV; + internal unsafe delegate* glBindBufferOffsetEXT; + internal unsafe delegate* glBindBufferOffsetNV; + internal unsafe delegate* glBindBufferRange; + internal unsafe delegate* glBindBufferRangeEXT; + internal unsafe delegate* glBindBufferRangeNV; + internal unsafe delegate* glBindBuffersBase; + internal unsafe delegate* glBindBuffersRange; + internal unsafe delegate* glBindFragDataLocation; + internal unsafe delegate* glBindFragDataLocationEXT; + internal unsafe delegate* glBindFragDataLocationIndexed; + internal unsafe delegate* glBindFragmentShaderATI; + internal unsafe delegate* glBindFramebuffer; + internal unsafe delegate* glBindFramebufferEXT; + internal unsafe delegate* glBindImageTexture; + internal unsafe delegate* glBindImageTextureEXT; + internal unsafe delegate* glBindImageTextures; + internal unsafe delegate* glBindLightParameterEXT; + internal unsafe delegate* glBindMaterialParameterEXT; + internal unsafe delegate* glBindMultiTextureEXT; + internal unsafe delegate* glBindParameterEXT; + internal unsafe delegate* glBindProgramARB; + internal unsafe delegate* glBindProgramNV; + internal unsafe delegate* glBindProgramPipeline; + internal unsafe delegate* glBindRenderbuffer; + internal unsafe delegate* glBindRenderbufferEXT; + internal unsafe delegate* glBindSampler; + internal unsafe delegate* glBindSamplers; + internal unsafe delegate* glBindShadingRateImageNV; + internal unsafe delegate* glBindTexGenParameterEXT; + internal unsafe delegate* glBindTexture; + internal unsafe delegate* glBindTextureEXT; + internal unsafe delegate* glBindTextureUnit; + internal unsafe delegate* glBindTextureUnitParameterEXT; + internal unsafe delegate* glBindTextures; + internal unsafe delegate* glBindTransformFeedback; + internal unsafe delegate* glBindTransformFeedbackNV; + internal unsafe delegate* glBindVertexArray; + internal unsafe delegate* glBindVertexArrayAPPLE; + internal unsafe delegate* glBindVertexBuffer; + internal unsafe delegate* glBindVertexBuffers; + internal unsafe delegate* glBindVertexShaderEXT; + internal unsafe delegate* glBindVideoCaptureStreamBufferNV; + internal unsafe delegate* glBindVideoCaptureStreamTextureNV; + internal unsafe delegate* glBinormal3bEXT; + internal unsafe delegate* glBinormal3bvEXT; + internal unsafe delegate* glBinormal3dEXT; + internal unsafe delegate* glBinormal3dvEXT; + internal unsafe delegate* glBinormal3fEXT; + internal unsafe delegate* glBinormal3fvEXT; + internal unsafe delegate* glBinormal3iEXT; + internal unsafe delegate* glBinormal3ivEXT; + internal unsafe delegate* glBinormal3sEXT; + internal unsafe delegate* glBinormal3svEXT; + internal unsafe delegate* glBinormalPointerEXT; + internal unsafe delegate* glBitmapxOES; + internal unsafe delegate* glBlendBarrierKHR; + internal unsafe delegate* glBlendBarrierNV; + internal unsafe delegate* glBlendColor; + internal unsafe delegate* glBlendColorEXT; + internal unsafe delegate* glBlendColorxOES; + internal unsafe delegate* glBlendEquation; + internal unsafe delegate* glBlendEquationEXT; + internal unsafe delegate* glBlendEquationIndexedAMD; + internal unsafe delegate* glBlendEquationSeparate; + internal unsafe delegate* glBlendEquationSeparateEXT; + internal unsafe delegate* glBlendEquationSeparateIndexedAMD; + internal unsafe delegate* glBlendEquationSeparatei; + internal unsafe delegate* glBlendEquationSeparateiARB; + internal unsafe delegate* glBlendEquationi; + internal unsafe delegate* glBlendEquationiARB; + internal unsafe delegate* glBlendFunc; + internal unsafe delegate* glBlendFuncIndexedAMD; + internal unsafe delegate* glBlendFuncSeparate; + internal unsafe delegate* glBlendFuncSeparateEXT; + internal unsafe delegate* glBlendFuncSeparateINGR; + internal unsafe delegate* glBlendFuncSeparateIndexedAMD; + internal unsafe delegate* glBlendFuncSeparatei; + internal unsafe delegate* glBlendFuncSeparateiARB; + internal unsafe delegate* glBlendFunci; + internal unsafe delegate* glBlendFunciARB; + internal unsafe delegate* glBlendParameteriNV; + internal unsafe delegate* glBlitFramebuffer; + internal unsafe delegate* glBlitFramebufferEXT; + internal unsafe delegate* glBlitFramebufferLayerEXT; + internal unsafe delegate* glBlitFramebufferLayersEXT; + internal unsafe delegate* glBlitNamedFramebuffer; + internal unsafe delegate* glBufferAddressRangeNV; + internal unsafe delegate* glBufferAttachMemoryNV; + internal unsafe delegate* glBufferData; + internal unsafe delegate* glBufferDataARB; + internal unsafe delegate* glBufferPageCommitmentARB; + internal unsafe delegate* glBufferPageCommitmentMemNV; + internal unsafe delegate* glBufferParameteriAPPLE; + internal unsafe delegate* glBufferStorage; + [Obsolete( "Param type uncertain", true )] internal unsafe delegate* glBufferStorageExternalEXT; + internal unsafe delegate* glBufferStorageMemEXT; + internal unsafe delegate* glBufferSubData; + internal unsafe delegate* glBufferSubDataARB; + internal unsafe delegate* glCallCommandListNV; + internal unsafe delegate* glCheckFramebufferStatus; + internal unsafe delegate* glCheckFramebufferStatusEXT; + internal unsafe delegate* glCheckNamedFramebufferStatus; + internal unsafe delegate* glCheckNamedFramebufferStatusEXT; + internal unsafe delegate* glClampColor; + internal unsafe delegate* glClampColorARB; + internal unsafe delegate* glClear; + internal unsafe delegate* glClearAccumxOES; + internal unsafe delegate* glClearBufferData; + internal unsafe delegate* glClearBufferSubData; + internal unsafe delegate* glClearBufferfi; + internal unsafe delegate* glClearBufferfv; + internal unsafe delegate* glClearBufferiv; + internal unsafe delegate* glClearBufferuiv; + internal unsafe delegate* glClearColor; + internal unsafe delegate* glClearColorIiEXT; + internal unsafe delegate* glClearColorIuiEXT; + internal unsafe delegate* glClearColorxOES; + internal unsafe delegate* glClearDepth; + internal unsafe delegate* glClearDepthdNV; + internal unsafe delegate* glClearDepthf; + internal unsafe delegate* glClearDepthfOES; + internal unsafe delegate* glClearDepthxOES; + internal unsafe delegate* glClearNamedBufferData; + internal unsafe delegate* glClearNamedBufferDataEXT; + internal unsafe delegate* glClearNamedBufferSubData; + internal unsafe delegate* glClearNamedBufferSubDataEXT; + internal unsafe delegate* glClearNamedFramebufferfi; + internal unsafe delegate* glClearNamedFramebufferfv; + internal unsafe delegate* glClearNamedFramebufferiv; + internal unsafe delegate* glClearNamedFramebufferuiv; + internal unsafe delegate* glClearStencil; + internal unsafe delegate* glClearTexImage; + internal unsafe delegate* glClearTexSubImage; + internal unsafe delegate* glClientActiveTextureARB; + internal unsafe delegate* glClientActiveVertexStreamATI; + internal unsafe delegate* glClientAttribDefaultEXT; + internal unsafe delegate* glClientWaitSemaphoreui64NVX; + internal unsafe delegate* glClientWaitSync; + internal unsafe delegate* glClipControl; + internal unsafe delegate* glClipPlanefOES; + internal unsafe delegate* glClipPlanexOES; + internal unsafe delegate* glColor3fVertex3fSUN; + internal unsafe delegate* glColor3fVertex3fvSUN; + internal unsafe delegate* glColor3hNV; + internal unsafe delegate* glColor3hvNV; + internal unsafe delegate* glColor3xOES; + internal unsafe delegate* glColor3xvOES; + internal unsafe delegate* glColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glColor4hNV; + internal unsafe delegate* glColor4hvNV; + internal unsafe delegate* glColor4ubVertex2fSUN; + internal unsafe delegate* glColor4ubVertex2fvSUN; + internal unsafe delegate* glColor4ubVertex3fSUN; + internal unsafe delegate* glColor4ubVertex3fvSUN; + internal unsafe delegate* glColor4xOES; + internal unsafe delegate* glColor4xvOES; + internal unsafe delegate* glColorFormatNV; + internal unsafe delegate* glColorFragmentOp1ATI; + internal unsafe delegate* glColorFragmentOp2ATI; + internal unsafe delegate* glColorFragmentOp3ATI; + internal unsafe delegate* glColorMask; + internal unsafe delegate* glColorMaskIndexedEXT; + internal unsafe delegate* glColorMaski; + internal unsafe delegate* glColorPointerEXT; + internal unsafe delegate* glColorPointerListIBM; + internal unsafe delegate* glColorPointervINTEL; + internal unsafe delegate* glColorSubTableEXT; + internal unsafe delegate* glColorTableEXT; + internal unsafe delegate* glColorTableParameterfvSGI; + internal unsafe delegate* glColorTableParameterivSGI; + internal unsafe delegate* glColorTableSGI; + internal unsafe delegate* glCombinerInputNV; + internal unsafe delegate* glCombinerOutputNV; + internal unsafe delegate* glCombinerParameterfNV; + internal unsafe delegate* glCombinerParameterfvNV; + internal unsafe delegate* glCombinerParameteriNV; + internal unsafe delegate* glCombinerParameterivNV; + internal unsafe delegate* glCombinerStageParameterfvNV; + internal unsafe delegate* glCommandListSegmentsNV; + internal unsafe delegate* glCompileCommandListNV; + internal unsafe delegate* glCompileShader; + internal unsafe delegate* glCompileShaderARB; + internal unsafe delegate* glCompileShaderIncludeARB; + internal unsafe delegate* glCompressedMultiTexImage1DEXT; + internal unsafe delegate* glCompressedMultiTexImage2DEXT; + internal unsafe delegate* glCompressedMultiTexImage3DEXT; + internal unsafe delegate* glCompressedMultiTexSubImage1DEXT; + internal unsafe delegate* glCompressedMultiTexSubImage2DEXT; + internal unsafe delegate* glCompressedMultiTexSubImage3DEXT; + internal unsafe delegate* glCompressedTexImage1D; + internal unsafe delegate* glCompressedTexImage1DARB; + internal unsafe delegate* glCompressedTexImage2D; + internal unsafe delegate* glCompressedTexImage2DARB; + internal unsafe delegate* glCompressedTexImage3D; + internal unsafe delegate* glCompressedTexImage3DARB; + internal unsafe delegate* glCompressedTexSubImage1D; + internal unsafe delegate* glCompressedTexSubImage1DARB; + internal unsafe delegate* glCompressedTexSubImage2D; + internal unsafe delegate* glCompressedTexSubImage2DARB; + internal unsafe delegate* glCompressedTexSubImage3D; + internal unsafe delegate* glCompressedTexSubImage3DARB; + internal unsafe delegate* glCompressedTextureImage1DEXT; + internal unsafe delegate* glCompressedTextureImage2DEXT; + internal unsafe delegate* glCompressedTextureImage3DEXT; + internal unsafe delegate* glCompressedTextureSubImage1D; + internal unsafe delegate* glCompressedTextureSubImage1DEXT; + internal unsafe delegate* glCompressedTextureSubImage2D; + internal unsafe delegate* glCompressedTextureSubImage2DEXT; + internal unsafe delegate* glCompressedTextureSubImage3D; + internal unsafe delegate* glCompressedTextureSubImage3DEXT; + internal unsafe delegate* glConservativeRasterParameterfNV; + internal unsafe delegate* glConservativeRasterParameteriNV; + internal unsafe delegate* glConvolutionFilter1DEXT; + internal unsafe delegate* glConvolutionFilter2DEXT; + internal unsafe delegate* glConvolutionParameterfEXT; + internal unsafe delegate* glConvolutionParameterfvEXT; + internal unsafe delegate* glConvolutionParameteriEXT; + internal unsafe delegate* glConvolutionParameterivEXT; + internal unsafe delegate* glConvolutionParameterxOES; + internal unsafe delegate* glConvolutionParameterxvOES; + internal unsafe delegate* glCopyBufferSubData; + internal unsafe delegate* glCopyColorSubTableEXT; + internal unsafe delegate* glCopyColorTableSGI; + internal unsafe delegate* glCopyConvolutionFilter1DEXT; + internal unsafe delegate* glCopyConvolutionFilter2DEXT; + internal unsafe delegate* glCopyImageSubData; + internal unsafe delegate* glCopyImageSubDataNV; + internal unsafe delegate* glCopyMultiTexImage1DEXT; + internal unsafe delegate* glCopyMultiTexImage2DEXT; + internal unsafe delegate* glCopyMultiTexSubImage1DEXT; + internal unsafe delegate* glCopyMultiTexSubImage2DEXT; + internal unsafe delegate* glCopyMultiTexSubImage3DEXT; + internal unsafe delegate* glCopyNamedBufferSubData; + internal unsafe delegate* glCopyPathNV; + internal unsafe delegate* glCopyTexImage1D; + internal unsafe delegate* glCopyTexImage1DEXT; + internal unsafe delegate* glCopyTexImage2D; + internal unsafe delegate* glCopyTexImage2DEXT; + internal unsafe delegate* glCopyTexSubImage1D; + internal unsafe delegate* glCopyTexSubImage1DEXT; + internal unsafe delegate* glCopyTexSubImage2D; + internal unsafe delegate* glCopyTexSubImage2DEXT; + internal unsafe delegate* glCopyTexSubImage3D; + internal unsafe delegate* glCopyTexSubImage3DEXT; + internal unsafe delegate* glCopyTextureImage1DEXT; + internal unsafe delegate* glCopyTextureImage2DEXT; + internal unsafe delegate* glCopyTextureSubImage1D; + internal unsafe delegate* glCopyTextureSubImage1DEXT; + internal unsafe delegate* glCopyTextureSubImage2D; + internal unsafe delegate* glCopyTextureSubImage2DEXT; + internal unsafe delegate* glCopyTextureSubImage3D; + internal unsafe delegate* glCopyTextureSubImage3DEXT; + internal unsafe delegate* glCoverFillPathInstancedNV; + internal unsafe delegate* glCoverFillPathNV; + internal unsafe delegate* glCoverStrokePathInstancedNV; + internal unsafe delegate* glCoverStrokePathNV; + internal unsafe delegate* glCoverageModulationNV; + internal unsafe delegate* glCoverageModulationTableNV; + internal unsafe delegate* glCreateBuffers; + internal unsafe delegate* glCreateCommandListsNV; + internal unsafe delegate* glCreateFramebuffers; + internal unsafe delegate* glCreateMemoryObjectsEXT; + internal unsafe delegate* glCreatePerfQueryINTEL; + internal unsafe delegate* glCreateProgram; + internal unsafe delegate* glCreateProgramObjectARB; + internal unsafe delegate* glCreateProgramPipelines; + internal unsafe delegate* glCreateProgressFenceNVX; + internal unsafe delegate* glCreateQueries; + internal unsafe delegate* glCreateRenderbuffers; + internal unsafe delegate* glCreateSamplers; + internal unsafe delegate* glCreateSemaphoresNV; + internal unsafe delegate* glCreateShader; + internal unsafe delegate* glCreateShaderObjectARB; + internal unsafe delegate* glCreateShaderProgramEXT; + internal unsafe delegate* glCreateShaderProgramv; + internal unsafe delegate* glCreateStatesNV; + internal unsafe delegate* glCreateSyncFromCLeventARB; + internal unsafe delegate* glCreateTextures; + internal unsafe delegate* glCreateTransformFeedbacks; + internal unsafe delegate* glCreateVertexArrays; + internal unsafe delegate* glCullFace; + internal unsafe delegate* glCullParameterdvEXT; + internal unsafe delegate* glCullParameterfvEXT; + internal unsafe delegate* glCurrentPaletteMatrixARB; + internal unsafe delegate* glDebugMessageCallback; + internal unsafe delegate* glDebugMessageCallbackAMD; + internal unsafe delegate* glDebugMessageCallbackARB; + internal unsafe delegate* glDebugMessageControl; + internal unsafe delegate* glDebugMessageControlARB; + internal unsafe delegate* glDebugMessageEnableAMD; + internal unsafe delegate* glDebugMessageInsert; + internal unsafe delegate* glDebugMessageInsertAMD; + internal unsafe delegate* glDebugMessageInsertARB; + internal unsafe delegate* glDeformSGIX; + internal unsafe delegate* glDeformationMap3dSGIX; + internal unsafe delegate* glDeformationMap3fSGIX; + internal unsafe delegate* glDeleteAsyncMarkersSGIX; + internal unsafe delegate* glDeleteBuffers; + internal unsafe delegate* glDeleteBuffersARB; + internal unsafe delegate* glDeleteCommandListsNV; + internal unsafe delegate* glDeleteFencesAPPLE; + internal unsafe delegate* glDeleteFencesNV; + internal unsafe delegate* glDeleteFragmentShaderATI; + internal unsafe delegate* glDeleteFramebuffers; + internal unsafe delegate* glDeleteFramebuffersEXT; + internal unsafe delegate* glDeleteMemoryObjectsEXT; + internal unsafe delegate* glDeleteNamedStringARB; + internal unsafe delegate* glDeleteNamesAMD; + internal unsafe delegate* glDeleteObjectARB; + internal unsafe delegate* glDeleteOcclusionQueriesNV; + internal unsafe delegate* glDeletePathsNV; + internal unsafe delegate* glDeletePerfMonitorsAMD; + internal unsafe delegate* glDeletePerfQueryINTEL; + internal unsafe delegate* glDeleteProgram; + internal unsafe delegate* glDeleteProgramPipelines; + internal unsafe delegate* glDeleteProgramsARB; + internal unsafe delegate* glDeleteProgramsNV; + internal unsafe delegate* glDeleteQueries; + internal unsafe delegate* glDeleteQueriesARB; + internal unsafe delegate* glDeleteQueryResourceTagNV; + internal unsafe delegate* glDeleteRenderbuffers; + internal unsafe delegate* glDeleteRenderbuffersEXT; + internal unsafe delegate* glDeleteSamplers; + internal unsafe delegate* glDeleteSemaphoresEXT; + internal unsafe delegate* glDeleteShader; + internal unsafe delegate* glDeleteStatesNV; + internal unsafe delegate* glDeleteSync; + internal unsafe delegate* glDeleteTextures; + internal unsafe delegate* glDeleteTexturesEXT; + internal unsafe delegate* glDeleteTransformFeedbacks; + internal unsafe delegate* glDeleteTransformFeedbacksNV; + internal unsafe delegate* glDeleteVertexArrays; + internal unsafe delegate* glDeleteVertexArraysAPPLE; + internal unsafe delegate* glDeleteVertexShaderEXT; + internal unsafe delegate* glDepthBoundsEXT; + internal unsafe delegate* glDepthBoundsdNV; + internal unsafe delegate* glDepthFunc; + internal unsafe delegate* glDepthMask; + internal unsafe delegate* glDepthRange; + internal unsafe delegate* glDepthRangeArraydvNV; + internal unsafe delegate* glDepthRangeArrayv; + internal unsafe delegate* glDepthRangeIndexed; + internal unsafe delegate* glDepthRangeIndexeddNV; + internal unsafe delegate* glDepthRangedNV; + internal unsafe delegate* glDepthRangef; + internal unsafe delegate* glDepthRangefOES; + internal unsafe delegate* glDepthRangexOES; + internal unsafe delegate* glDetachObjectARB; + internal unsafe delegate* glDetachShader; + internal unsafe delegate* glDetailTexFuncSGIS; + internal unsafe delegate* glDisable; + internal unsafe delegate* glDisableClientStateIndexedEXT; + internal unsafe delegate* glDisableClientStateiEXT; + internal unsafe delegate* glDisableIndexedEXT; + internal unsafe delegate* glDisableVariantClientStateEXT; + internal unsafe delegate* glDisableVertexArrayAttrib; + internal unsafe delegate* glDisableVertexArrayAttribEXT; + internal unsafe delegate* glDisableVertexArrayEXT; + internal unsafe delegate* glDisableVertexAttribAPPLE; + internal unsafe delegate* glDisableVertexAttribArray; + internal unsafe delegate* glDisableVertexAttribArrayARB; + internal unsafe delegate* glDisablei; + internal unsafe delegate* glDispatchCompute; + internal unsafe delegate* glDispatchComputeGroupSizeARB; + internal unsafe delegate* glDispatchComputeIndirect; + internal unsafe delegate* glDrawArrays; + internal unsafe delegate* glDrawArraysEXT; + internal unsafe delegate* glDrawArraysIndirect; + internal unsafe delegate* glDrawArraysInstanced; + internal unsafe delegate* glDrawArraysInstancedARB; + internal unsafe delegate* glDrawArraysInstancedBaseInstance; + internal unsafe delegate* glDrawArraysInstancedEXT; + internal unsafe delegate* glDrawBuffer; + internal unsafe delegate* glDrawBuffers; + internal unsafe delegate* glDrawBuffersARB; + internal unsafe delegate* glDrawBuffersATI; + internal unsafe delegate* glDrawCommandsAddressNV; + internal unsafe delegate* glDrawCommandsNV; + internal unsafe delegate* glDrawCommandsStatesAddressNV; + internal unsafe delegate* glDrawCommandsStatesNV; + internal unsafe delegate* glDrawElementArrayAPPLE; + internal unsafe delegate* glDrawElementArrayATI; + internal unsafe delegate* glDrawElements; + internal unsafe delegate* glDrawElementsBaseVertex; + internal unsafe delegate* glDrawElementsIndirect; + internal unsafe delegate* glDrawElementsInstanced; + internal unsafe delegate* glDrawElementsInstancedARB; + internal unsafe delegate* glDrawElementsInstancedBaseInstance; + internal unsafe delegate* glDrawElementsInstancedBaseVertex; + internal unsafe delegate* glDrawElementsInstancedBaseVertexBaseInstance; + internal unsafe delegate* glDrawElementsInstancedEXT; + internal unsafe delegate* glDrawMeshArraysSUN; + internal unsafe delegate* glDrawMeshTasksIndirectNV; + internal unsafe delegate* glDrawMeshTasksNV; + internal unsafe delegate* glDrawRangeElementArrayAPPLE; + internal unsafe delegate* glDrawRangeElementArrayATI; + internal unsafe delegate* glDrawRangeElements; + internal unsafe delegate* glDrawRangeElementsBaseVertex; + internal unsafe delegate* glDrawRangeElementsEXT; + internal unsafe delegate* glDrawTextureNV; + internal unsafe delegate* glDrawTransformFeedback; + internal unsafe delegate* glDrawTransformFeedbackInstanced; + internal unsafe delegate* glDrawTransformFeedbackNV; + internal unsafe delegate* glDrawTransformFeedbackStream; + internal unsafe delegate* glDrawTransformFeedbackStreamInstanced; + internal unsafe delegate* glDrawVkImageNV; + internal unsafe delegate* glEGLImageTargetTexStorageEXT; + internal unsafe delegate* glEGLImageTargetTextureStorageEXT; + internal unsafe delegate* glEdgeFlagFormatNV; + internal unsafe delegate* glEdgeFlagPointerEXT; + internal unsafe delegate* glEdgeFlagPointerListIBM; + internal unsafe delegate* glElementPointerAPPLE; + internal unsafe delegate* glElementPointerATI; + internal unsafe delegate* glEnable; + internal unsafe delegate* glEnableClientStateIndexedEXT; + internal unsafe delegate* glEnableClientStateiEXT; + internal unsafe delegate* glEnableIndexedEXT; + internal unsafe delegate* glEnableVariantClientStateEXT; + internal unsafe delegate* glEnableVertexArrayAttrib; + internal unsafe delegate* glEnableVertexArrayAttribEXT; + internal unsafe delegate* glEnableVertexArrayEXT; + internal unsafe delegate* glEnableVertexAttribAPPLE; + internal unsafe delegate* glEnableVertexAttribArray; + internal unsafe delegate* glEnableVertexAttribArrayARB; + internal unsafe delegate* glEnablei; + internal unsafe delegate* glEndConditionalRender; + internal unsafe delegate* glEndConditionalRenderNV; + internal unsafe delegate* glEndConditionalRenderNVX; + internal unsafe delegate* glEndFragmentShaderATI; + internal unsafe delegate* glEndOcclusionQueryNV; + internal unsafe delegate* glEndPerfMonitorAMD; + internal unsafe delegate* glEndPerfQueryINTEL; + internal unsafe delegate* glEndQuery; + internal unsafe delegate* glEndQueryARB; + internal unsafe delegate* glEndQueryIndexed; + internal unsafe delegate* glEndTransformFeedback; + internal unsafe delegate* glEndTransformFeedbackEXT; + internal unsafe delegate* glEndTransformFeedbackNV; + internal unsafe delegate* glEndVertexShaderEXT; + internal unsafe delegate* glEndVideoCaptureNV; + internal unsafe delegate* glEvalCoord1xOES; + internal unsafe delegate* glEvalCoord1xvOES; + internal unsafe delegate* glEvalCoord2xOES; + internal unsafe delegate* glEvalCoord2xvOES; + internal unsafe delegate* glEvalMapsNV; + internal unsafe delegate* glEvaluateDepthValuesARB; + internal unsafe delegate* glExecuteProgramNV; + internal unsafe delegate* glExtractComponentEXT; + internal unsafe delegate* glFeedbackBufferxOES; + internal unsafe delegate* glFenceSync; + internal unsafe delegate* glFinalCombinerInputNV; + internal unsafe delegate* glFinish; + internal unsafe delegate* glFinishAsyncSGIX; + internal unsafe delegate* glFinishFenceAPPLE; + internal unsafe delegate* glFinishFenceNV; + internal unsafe delegate* glFinishObjectAPPLE; + internal unsafe delegate* glFinishTextureSUNX; + internal unsafe delegate* glFlush; + internal unsafe delegate* glFlushMappedBufferRange; + internal unsafe delegate* glFlushMappedBufferRangeAPPLE; + internal unsafe delegate* glFlushMappedNamedBufferRange; + internal unsafe delegate* glFlushMappedNamedBufferRangeEXT; + internal unsafe delegate* glFlushPixelDataRangeNV; + internal unsafe delegate* glFlushRasterSGIX; + internal unsafe delegate* glFlushStaticDataIBM; + internal unsafe delegate* glFlushVertexArrayRangeAPPLE; + internal unsafe delegate* glFlushVertexArrayRangeNV; + internal unsafe delegate* glFogCoordFormatNV; + internal unsafe delegate* glFogCoordPointerEXT; + internal unsafe delegate* glFogCoordPointerListIBM; + internal unsafe delegate* glFogCoorddEXT; + internal unsafe delegate* glFogCoorddvEXT; + internal unsafe delegate* glFogCoordfEXT; + internal unsafe delegate* glFogCoordfvEXT; + internal unsafe delegate* glFogCoordhNV; + internal unsafe delegate* glFogCoordhvNV; + internal unsafe delegate* glFogFuncSGIS; + internal unsafe delegate* glFogxOES; + internal unsafe delegate* glFogxvOES; + internal unsafe delegate* glFragmentColorMaterialSGIX; + internal unsafe delegate* glFragmentCoverageColorNV; + internal unsafe delegate* glFragmentLightModelfSGIX; + internal unsafe delegate* glFragmentLightModelfvSGIX; + internal unsafe delegate* glFragmentLightModeliSGIX; + internal unsafe delegate* glFragmentLightModelivSGIX; + internal unsafe delegate* glFragmentLightfSGIX; + internal unsafe delegate* glFragmentLightfvSGIX; + internal unsafe delegate* glFragmentLightiSGIX; + internal unsafe delegate* glFragmentLightivSGIX; + internal unsafe delegate* glFragmentMaterialfSGIX; + internal unsafe delegate* glFragmentMaterialfvSGIX; + internal unsafe delegate* glFragmentMaterialiSGIX; + internal unsafe delegate* glFragmentMaterialivSGIX; + internal unsafe delegate* glFrameTerminatorGREMEDY; + internal unsafe delegate* glFrameZoomSGIX; + internal unsafe delegate* glFramebufferDrawBufferEXT; + internal unsafe delegate* glFramebufferDrawBuffersEXT; + internal unsafe delegate* glFramebufferFetchBarrierEXT; + internal unsafe delegate* glFramebufferParameteri; + internal unsafe delegate* glFramebufferParameteriMESA; + internal unsafe delegate* glFramebufferReadBufferEXT; + internal unsafe delegate* glFramebufferRenderbuffer; + internal unsafe delegate* glFramebufferRenderbufferEXT; + internal unsafe delegate* glFramebufferSampleLocationsfvARB; + internal unsafe delegate* glFramebufferSampleLocationsfvNV; + internal unsafe delegate* glFramebufferSamplePositionsfvAMD; + internal unsafe delegate* glFramebufferTexture; + internal unsafe delegate* glFramebufferTexture1D; + internal unsafe delegate* glFramebufferTexture1DEXT; + internal unsafe delegate* glFramebufferTexture2D; + internal unsafe delegate* glFramebufferTexture2DEXT; + internal unsafe delegate* glFramebufferTexture3D; + internal unsafe delegate* glFramebufferTexture3DEXT; + internal unsafe delegate* glFramebufferTextureARB; + internal unsafe delegate* glFramebufferTextureEXT; + internal unsafe delegate* glFramebufferTextureFaceARB; + internal unsafe delegate* glFramebufferTextureFaceEXT; + internal unsafe delegate* glFramebufferTextureLayer; + internal unsafe delegate* glFramebufferTextureLayerARB; + internal unsafe delegate* glFramebufferTextureLayerEXT; + internal unsafe delegate* glFramebufferTextureMultiviewOVR; + internal unsafe delegate* glFreeObjectBufferATI; + internal unsafe delegate* glFrontFace; + internal unsafe delegate* glFrustumfOES; + internal unsafe delegate* glFrustumxOES; + internal unsafe delegate* glGenAsyncMarkersSGIX; + internal unsafe delegate* glGenBuffers; + internal unsafe delegate* glGenBuffersARB; + internal unsafe delegate* glGenFencesAPPLE; + internal unsafe delegate* glGenFencesNV; + internal unsafe delegate* glGenFragmentShadersATI; + internal unsafe delegate* glGenFramebuffers; + internal unsafe delegate* glGenFramebuffersEXT; + internal unsafe delegate* glGenNamesAMD; + internal unsafe delegate* glGenOcclusionQueriesNV; + internal unsafe delegate* glGenPathsNV; + internal unsafe delegate* glGenPerfMonitorsAMD; + internal unsafe delegate* glGenProgramPipelines; + internal unsafe delegate* glGenProgramsARB; + internal unsafe delegate* glGenProgramsNV; + internal unsafe delegate* glGenQueries; + internal unsafe delegate* glGenQueriesARB; + internal unsafe delegate* glGenQueryResourceTagNV; + internal unsafe delegate* glGenRenderbuffers; + internal unsafe delegate* glGenRenderbuffersEXT; + internal unsafe delegate* glGenSamplers; + internal unsafe delegate* glGenSemaphoresEXT; + internal unsafe delegate* glGenSymbolsEXT; + internal unsafe delegate* glGenTextures; + internal unsafe delegate* glGenTexturesEXT; + internal unsafe delegate* glGenTransformFeedbacks; + internal unsafe delegate* glGenTransformFeedbacksNV; + internal unsafe delegate* glGenVertexArrays; + internal unsafe delegate* glGenVertexArraysAPPLE; + internal unsafe delegate* glGenVertexShadersEXT; + internal unsafe delegate* glGenerateMipmap; + internal unsafe delegate* glGenerateMipmapEXT; + internal unsafe delegate* glGenerateMultiTexMipmapEXT; + internal unsafe delegate* glGenerateTextureMipmap; + internal unsafe delegate* glGenerateTextureMipmapEXT; + internal unsafe delegate* glGetActiveAtomicCounterBufferiv; + internal unsafe delegate* glGetActiveAttrib; + internal unsafe delegate* glGetActiveAttribARB; + internal unsafe delegate* glGetActiveSubroutineName; + internal unsafe delegate* glGetActiveSubroutineUniformName; + internal unsafe delegate* glGetActiveSubroutineUniformiv; + internal unsafe delegate* glGetActiveUniform; + internal unsafe delegate* glGetActiveUniformARB; + internal unsafe delegate* glGetActiveUniformBlockName; + internal unsafe delegate* glGetActiveUniformBlockiv; + internal unsafe delegate* glGetActiveUniformName; + internal unsafe delegate* glGetActiveUniformsiv; + internal unsafe delegate* glGetActiveVaryingNV; + internal unsafe delegate* glGetArrayObjectfvATI; + internal unsafe delegate* glGetArrayObjectivATI; + internal unsafe delegate* glGetAttachedObjectsARB; + internal unsafe delegate* glGetAttachedShaders; + internal unsafe delegate* glGetAttribLocation; + internal unsafe delegate* glGetAttribLocationARB; + internal unsafe delegate* glGetBooleanIndexedvEXT; + internal unsafe delegate* glGetBooleani_v; + internal unsafe delegate* glGetBooleanv; + internal unsafe delegate* glGetBufferParameteri64v; + internal unsafe delegate* glGetBufferParameteriv; + internal unsafe delegate* glGetBufferParameterivARB; + internal unsafe delegate* glGetBufferParameterui64vNV; + internal unsafe delegate* glGetBufferPointerv; + internal unsafe delegate* glGetBufferPointervARB; + internal unsafe delegate* glGetBufferSubData; + internal unsafe delegate* glGetBufferSubDataARB; + internal unsafe delegate* glGetClipPlanefOES; + internal unsafe delegate* glGetClipPlanexOES; + internal unsafe delegate* glGetColorTableEXT; + internal unsafe delegate* glGetColorTableParameterfvEXT; + internal unsafe delegate* glGetColorTableParameterfvSGI; + internal unsafe delegate* glGetColorTableParameterivEXT; + internal unsafe delegate* glGetColorTableParameterivSGI; + internal unsafe delegate* glGetColorTableSGI; + internal unsafe delegate* glGetCombinerInputParameterfvNV; + internal unsafe delegate* glGetCombinerInputParameterivNV; + internal unsafe delegate* glGetCombinerOutputParameterfvNV; + internal unsafe delegate* glGetCombinerOutputParameterivNV; + internal unsafe delegate* glGetCombinerStageParameterfvNV; + internal unsafe delegate* glGetCommandHeaderNV; + internal unsafe delegate* glGetCompressedMultiTexImageEXT; + internal unsafe delegate* glGetCompressedTexImage; + internal unsafe delegate* glGetCompressedTexImageARB; + internal unsafe delegate* glGetCompressedTextureImage; + internal unsafe delegate* glGetCompressedTextureImageEXT; + internal unsafe delegate* glGetCompressedTextureSubImage; + internal unsafe delegate* glGetConvolutionFilterEXT; + internal unsafe delegate* glGetConvolutionParameterfvEXT; + internal unsafe delegate* glGetConvolutionParameterivEXT; + internal unsafe delegate* glGetConvolutionParameterxvOES; + internal unsafe delegate* glGetCoverageModulationTableNV; + internal unsafe delegate* glGetDebugMessageLog; + internal unsafe delegate* glGetDebugMessageLogAMD; + internal unsafe delegate* glGetDebugMessageLogARB; + internal unsafe delegate* glGetDetailTexFuncSGIS; + internal unsafe delegate* glGetDoubleIndexedvEXT; + internal unsafe delegate* glGetDoublei_v; + internal unsafe delegate* glGetDoublei_vEXT; + internal unsafe delegate* glGetDoublev; + internal unsafe delegate* glGetError; + internal unsafe delegate* glGetFenceivNV; + internal unsafe delegate* glGetFinalCombinerInputParameterfvNV; + internal unsafe delegate* glGetFinalCombinerInputParameterivNV; + internal unsafe delegate* glGetFirstPerfQueryIdINTEL; + internal unsafe delegate* glGetFixedvOES; + internal unsafe delegate* glGetFloatIndexedvEXT; + internal unsafe delegate* glGetFloati_v; + internal unsafe delegate* glGetFloati_vEXT; + internal unsafe delegate* glGetFloatv; + internal unsafe delegate* glGetFogFuncSGIS; + internal unsafe delegate* glGetFragDataIndex; + internal unsafe delegate* glGetFragDataLocation; + internal unsafe delegate* glGetFragDataLocationEXT; + internal unsafe delegate* glGetFragmentLightfvSGIX; + internal unsafe delegate* glGetFragmentLightivSGIX; + internal unsafe delegate* glGetFragmentMaterialfvSGIX; + internal unsafe delegate* glGetFragmentMaterialivSGIX; + internal unsafe delegate* glGetFramebufferAttachmentParameteriv; + internal unsafe delegate* glGetFramebufferAttachmentParameterivEXT; + internal unsafe delegate* glGetFramebufferParameterfvAMD; + internal unsafe delegate* glGetFramebufferParameteriv; + internal unsafe delegate* glGetFramebufferParameterivEXT; + internal unsafe delegate* glGetFramebufferParameterivMESA; + internal unsafe delegate* glGetGraphicsResetStatus; + internal unsafe delegate* glGetGraphicsResetStatusARB; + internal unsafe delegate* glGetHandleARB; + internal unsafe delegate* glGetHistogramEXT; + internal unsafe delegate* glGetHistogramParameterfvEXT; + internal unsafe delegate* glGetHistogramParameterivEXT; + internal unsafe delegate* glGetHistogramParameterxvOES; + internal unsafe delegate* glGetImageHandleARB; + internal unsafe delegate* glGetImageHandleNV; + internal unsafe delegate* glGetImageTransformParameterfvHP; + internal unsafe delegate* glGetImageTransformParameterivHP; + internal unsafe delegate* glGetInfoLogARB; + internal unsafe delegate* glGetInstrumentsSGIX; + internal unsafe delegate* glGetInteger64i_v; + internal unsafe delegate* glGetInteger64v; + internal unsafe delegate* glGetIntegerIndexedvEXT; + internal unsafe delegate* glGetIntegeri_v; + internal unsafe delegate* glGetIntegerui64i_vNV; + internal unsafe delegate* glGetIntegerui64vNV; + internal unsafe delegate* glGetIntegerv; + internal unsafe delegate* glGetInternalformatSampleivNV; + internal unsafe delegate* glGetInternalformati64v; + internal unsafe delegate* glGetInternalformativ; + internal unsafe delegate* glGetInvariantBooleanvEXT; + internal unsafe delegate* glGetInvariantFloatvEXT; + internal unsafe delegate* glGetInvariantIntegervEXT; + internal unsafe delegate* glGetLightxOES; + internal unsafe delegate* glGetListParameterfvSGIX; + internal unsafe delegate* glGetListParameterivSGIX; + internal unsafe delegate* glGetLocalConstantBooleanvEXT; + internal unsafe delegate* glGetLocalConstantFloatvEXT; + internal unsafe delegate* glGetLocalConstantIntegervEXT; + internal unsafe delegate* glGetMapAttribParameterfvNV; + internal unsafe delegate* glGetMapAttribParameterivNV; + internal unsafe delegate* glGetMapControlPointsNV; + internal unsafe delegate* glGetMapParameterfvNV; + internal unsafe delegate* glGetMapParameterivNV; + internal unsafe delegate* glGetMapxvOES; + internal unsafe delegate* glGetMaterialxOES; + internal unsafe delegate* glGetMemoryObjectDetachedResourcesuivNV; + internal unsafe delegate* glGetMemoryObjectParameterivEXT; + internal unsafe delegate* glGetMinmaxEXT; + internal unsafe delegate* glGetMinmaxParameterfvEXT; + internal unsafe delegate* glGetMinmaxParameterivEXT; + internal unsafe delegate* glGetMultiTexEnvfvEXT; + internal unsafe delegate* glGetMultiTexEnvivEXT; + internal unsafe delegate* glGetMultiTexGendvEXT; + internal unsafe delegate* glGetMultiTexGenfvEXT; + internal unsafe delegate* glGetMultiTexGenivEXT; + internal unsafe delegate* glGetMultiTexImageEXT; + internal unsafe delegate* glGetMultiTexLevelParameterfvEXT; + internal unsafe delegate* glGetMultiTexLevelParameterivEXT; + internal unsafe delegate* glGetMultiTexParameterIivEXT; + internal unsafe delegate* glGetMultiTexParameterIuivEXT; + internal unsafe delegate* glGetMultiTexParameterfvEXT; + internal unsafe delegate* glGetMultiTexParameterivEXT; + internal unsafe delegate* glGetMultisamplefv; + internal unsafe delegate* glGetMultisamplefvNV; + internal unsafe delegate* glGetNamedBufferParameteri64v; + internal unsafe delegate* glGetNamedBufferParameteriv; + internal unsafe delegate* glGetNamedBufferParameterivEXT; + internal unsafe delegate* glGetNamedBufferParameterui64vNV; + internal unsafe delegate* glGetNamedBufferPointerv; + internal unsafe delegate* glGetNamedBufferPointervEXT; + internal unsafe delegate* glGetNamedBufferSubData; + internal unsafe delegate* glGetNamedBufferSubDataEXT; + internal unsafe delegate* glGetNamedFramebufferAttachmentParameteriv; + internal unsafe delegate* glGetNamedFramebufferAttachmentParameterivEXT; + internal unsafe delegate* glGetNamedFramebufferParameterfvAMD; + internal unsafe delegate* glGetNamedFramebufferParameteriv; + internal unsafe delegate* glGetNamedFramebufferParameterivEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterIivEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterIuivEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterdvEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterfvEXT; + internal unsafe delegate* glGetNamedProgramStringEXT; + internal unsafe delegate* glGetNamedProgramivEXT; + internal unsafe delegate* glGetNamedRenderbufferParameteriv; + internal unsafe delegate* glGetNamedRenderbufferParameterivEXT; + internal unsafe delegate* glGetNamedStringARB; + internal unsafe delegate* glGetNamedStringivARB; + internal unsafe delegate* glGetNextPerfQueryIdINTEL; + internal unsafe delegate* glGetObjectBufferfvATI; + internal unsafe delegate* glGetObjectBufferivATI; + internal unsafe delegate* glGetObjectLabel; + internal unsafe delegate* glGetObjectLabelEXT; + internal unsafe delegate* glGetObjectParameterfvARB; + internal unsafe delegate* glGetObjectParameterivAPPLE; + internal unsafe delegate* glGetObjectParameterivARB; + internal unsafe delegate* glGetObjectPtrLabel; + internal unsafe delegate* glGetOcclusionQueryivNV; + internal unsafe delegate* glGetOcclusionQueryuivNV; + internal unsafe delegate* glGetPathCommandsNV; + internal unsafe delegate* glGetPathCoordsNV; + internal unsafe delegate* glGetPathDashArrayNV; + internal unsafe delegate* glGetPathLengthNV; + internal unsafe delegate* glGetPathMetricRangeNV; + internal unsafe delegate* glGetPathMetricsNV; + internal unsafe delegate* glGetPathParameterfvNV; + internal unsafe delegate* glGetPathParameterivNV; + internal unsafe delegate* glGetPathSpacingNV; + internal unsafe delegate* glGetPerfCounterInfoINTEL; + internal unsafe delegate* glGetPerfMonitorCounterDataAMD; + internal unsafe delegate* glGetPerfMonitorCounterInfoAMD; + internal unsafe delegate* glGetPerfMonitorCounterStringAMD; + internal unsafe delegate* glGetPerfMonitorCountersAMD; + internal unsafe delegate* glGetPerfMonitorGroupStringAMD; + internal unsafe delegate* glGetPerfMonitorGroupsAMD; + internal unsafe delegate* glGetPerfQueryDataINTEL; + internal unsafe delegate* glGetPerfQueryIdByNameINTEL; + internal unsafe delegate* glGetPerfQueryInfoINTEL; + internal unsafe delegate* glGetPixelMapxv; + internal unsafe delegate* glGetPixelTexGenParameterfvSGIS; + internal unsafe delegate* glGetPixelTexGenParameterivSGIS; + internal unsafe delegate* glGetPixelTransformParameterfvEXT; + internal unsafe delegate* glGetPixelTransformParameterivEXT; + internal unsafe delegate* glGetPointerIndexedvEXT; + internal unsafe delegate* glGetPointeri_vEXT; + internal unsafe delegate* glGetPointerv; + internal unsafe delegate* glGetPointervEXT; + internal unsafe delegate* glGetProgramBinary; + internal unsafe delegate* glGetProgramEnvParameterIivNV; + internal unsafe delegate* glGetProgramEnvParameterIuivNV; + internal unsafe delegate* glGetProgramEnvParameterdvARB; + internal unsafe delegate* glGetProgramEnvParameterfvARB; + internal unsafe delegate* glGetProgramInfoLog; + internal unsafe delegate* glGetProgramInterfaceiv; + internal unsafe delegate* glGetProgramLocalParameterIivNV; + internal unsafe delegate* glGetProgramLocalParameterIuivNV; + internal unsafe delegate* glGetProgramLocalParameterdvARB; + internal unsafe delegate* glGetProgramLocalParameterfvARB; + internal unsafe delegate* glGetProgramNamedParameterdvNV; + internal unsafe delegate* glGetProgramNamedParameterfvNV; + internal unsafe delegate* glGetProgramParameterdvNV; + internal unsafe delegate* glGetProgramParameterfvNV; + internal unsafe delegate* glGetProgramPipelineInfoLog; + internal unsafe delegate* glGetProgramPipelineiv; + internal unsafe delegate* glGetProgramResourceIndex; + internal unsafe delegate* glGetProgramResourceLocation; + internal unsafe delegate* glGetProgramResourceLocationIndex; + internal unsafe delegate* glGetProgramResourceName; + internal unsafe delegate* glGetProgramResourcefvNV; + internal unsafe delegate* glGetProgramResourceiv; + internal unsafe delegate* glGetProgramStageiv; + internal unsafe delegate* glGetProgramStringARB; + internal unsafe delegate* glGetProgramStringNV; + internal unsafe delegate* glGetProgramSubroutineParameteruivNV; + internal unsafe delegate* glGetProgramiv; + internal unsafe delegate* glGetProgramivARB; + internal unsafe delegate* glGetProgramivNV; + internal unsafe delegate* glGetQueryBufferObjecti64v; + internal unsafe delegate* glGetQueryBufferObjectiv; + internal unsafe delegate* glGetQueryBufferObjectui64v; + internal unsafe delegate* glGetQueryBufferObjectuiv; + internal unsafe delegate* glGetQueryIndexediv; + internal unsafe delegate* glGetQueryObjecti64v; + internal unsafe delegate* glGetQueryObjecti64vEXT; + internal unsafe delegate* glGetQueryObjectiv; + internal unsafe delegate* glGetQueryObjectivARB; + internal unsafe delegate* glGetQueryObjectui64v; + internal unsafe delegate* glGetQueryObjectui64vEXT; + internal unsafe delegate* glGetQueryObjectuiv; + internal unsafe delegate* glGetQueryObjectuivARB; + internal unsafe delegate* glGetQueryiv; + internal unsafe delegate* glGetQueryivARB; + internal unsafe delegate* glGetRenderbufferParameteriv; + internal unsafe delegate* glGetRenderbufferParameterivEXT; + internal unsafe delegate* glGetSamplerParameterIiv; + internal unsafe delegate* glGetSamplerParameterIuiv; + internal unsafe delegate* glGetSamplerParameterfv; + internal unsafe delegate* glGetSamplerParameteriv; + internal unsafe delegate* glGetSemaphoreParameterivNV; + internal unsafe delegate* glGetSemaphoreParameterui64vEXT; + internal unsafe delegate* glGetSeparableFilterEXT; + internal unsafe delegate* glGetShaderInfoLog; + internal unsafe delegate* glGetShaderPrecisionFormat; + internal unsafe delegate* glGetShaderSource; + internal unsafe delegate* glGetShaderSourceARB; + internal unsafe delegate* glGetShaderiv; + internal unsafe delegate* glGetShadingRateImagePaletteNV; + internal unsafe delegate* glGetShadingRateSampleLocationivNV; + internal unsafe delegate* glGetSharpenTexFuncSGIS; + internal unsafe delegate* glGetStageIndexNV; + internal unsafe delegate* glGetString; + internal unsafe delegate* glGetStringi; + internal unsafe delegate* glGetSubroutineIndex; + internal unsafe delegate* glGetSubroutineUniformLocation; + internal unsafe delegate* glGetSynciv; + internal unsafe delegate* glGetTexBumpParameterfvATI; + internal unsafe delegate* glGetTexBumpParameterivATI; + internal unsafe delegate* glGetTexEnvxvOES; + internal unsafe delegate* glGetTexFilterFuncSGIS; + internal unsafe delegate* glGetTexGenxvOES; + internal unsafe delegate* glGetTexImage; + internal unsafe delegate* glGetTexLevelParameterfv; + internal unsafe delegate* glGetTexLevelParameteriv; + internal unsafe delegate* glGetTexLevelParameterxvOES; + internal unsafe delegate* glGetTexParameterIiv; + internal unsafe delegate* glGetTexParameterIivEXT; + internal unsafe delegate* glGetTexParameterIuiv; + internal unsafe delegate* glGetTexParameterIuivEXT; + internal unsafe delegate* glGetTexParameterPointervAPPLE; + internal unsafe delegate* glGetTexParameterfv; + internal unsafe delegate* glGetTexParameteriv; + internal unsafe delegate* glGetTexParameterxvOES; + internal unsafe delegate* glGetTextureHandleARB; + internal unsafe delegate* glGetTextureHandleNV; + internal unsafe delegate* glGetTextureImage; + internal unsafe delegate* glGetTextureImageEXT; + internal unsafe delegate* glGetTextureLevelParameterfv; + internal unsafe delegate* glGetTextureLevelParameterfvEXT; + internal unsafe delegate* glGetTextureLevelParameteriv; + internal unsafe delegate* glGetTextureLevelParameterivEXT; + internal unsafe delegate* glGetTextureParameterIiv; + internal unsafe delegate* glGetTextureParameterIivEXT; + internal unsafe delegate* glGetTextureParameterIuiv; + internal unsafe delegate* glGetTextureParameterIuivEXT; + internal unsafe delegate* glGetTextureParameterfv; + internal unsafe delegate* glGetTextureParameterfvEXT; + internal unsafe delegate* glGetTextureParameteriv; + internal unsafe delegate* glGetTextureParameterivEXT; + internal unsafe delegate* glGetTextureSamplerHandleARB; + internal unsafe delegate* glGetTextureSamplerHandleNV; + internal unsafe delegate* glGetTextureSubImage; + internal unsafe delegate* glGetTrackMatrixivNV; + internal unsafe delegate* glGetTransformFeedbackVarying; + internal unsafe delegate* glGetTransformFeedbackVaryingEXT; + internal unsafe delegate* glGetTransformFeedbackVaryingNV; + internal unsafe delegate* glGetTransformFeedbacki64_v; + internal unsafe delegate* glGetTransformFeedbacki_v; + internal unsafe delegate* glGetTransformFeedbackiv; + internal unsafe delegate* glGetUniformBlockIndex; + internal unsafe delegate* glGetUniformBufferSizeEXT; + internal unsafe delegate* glGetUniformIndices; + internal unsafe delegate* glGetUniformLocation; + internal unsafe delegate* glGetUniformLocationARB; + internal unsafe delegate* glGetUniformOffsetEXT; + internal unsafe delegate* glGetUniformSubroutineuiv; + internal unsafe delegate* glGetUniformdv; + internal unsafe delegate* glGetUniformfv; + internal unsafe delegate* glGetUniformfvARB; + internal unsafe delegate* glGetUniformi64vARB; + internal unsafe delegate* glGetUniformi64vNV; + internal unsafe delegate* glGetUniformiv; + internal unsafe delegate* glGetUniformivARB; + internal unsafe delegate* glGetUniformui64vARB; + internal unsafe delegate* glGetUniformui64vNV; + internal unsafe delegate* glGetUniformuiv; + internal unsafe delegate* glGetUniformuivEXT; + internal unsafe delegate* glGetUnsignedBytei_vEXT; + internal unsafe delegate* glGetUnsignedBytevEXT; + internal unsafe delegate* glGetVariantArrayObjectfvATI; + internal unsafe delegate* glGetVariantArrayObjectivATI; + internal unsafe delegate* glGetVariantBooleanvEXT; + internal unsafe delegate* glGetVariantFloatvEXT; + internal unsafe delegate* glGetVariantIntegervEXT; + internal unsafe delegate* glGetVariantPointervEXT; + internal unsafe delegate* glGetVaryingLocationNV; + internal unsafe delegate* glGetVertexArrayIndexed64iv; + internal unsafe delegate* glGetVertexArrayIndexediv; + internal unsafe delegate* glGetVertexArrayIntegeri_vEXT; + internal unsafe delegate* glGetVertexArrayIntegervEXT; + internal unsafe delegate* glGetVertexArrayPointeri_vEXT; + internal unsafe delegate* glGetVertexArrayPointervEXT; + internal unsafe delegate* glGetVertexArrayiv; + internal unsafe delegate* glGetVertexAttribArrayObjectfvATI; + internal unsafe delegate* glGetVertexAttribArrayObjectivATI; + internal unsafe delegate* glGetVertexAttribIiv; + internal unsafe delegate* glGetVertexAttribIivEXT; + internal unsafe delegate* glGetVertexAttribIuiv; + internal unsafe delegate* glGetVertexAttribIuivEXT; + internal unsafe delegate* glGetVertexAttribLdv; + internal unsafe delegate* glGetVertexAttribLdvEXT; + internal unsafe delegate* glGetVertexAttribLi64vNV; + internal unsafe delegate* glGetVertexAttribLui64vARB; + internal unsafe delegate* glGetVertexAttribLui64vNV; + internal unsafe delegate* glGetVertexAttribPointerv; + internal unsafe delegate* glGetVertexAttribPointervARB; + internal unsafe delegate* glGetVertexAttribPointervNV; + internal unsafe delegate* glGetVertexAttribdv; + internal unsafe delegate* glGetVertexAttribdvARB; + internal unsafe delegate* glGetVertexAttribdvNV; + internal unsafe delegate* glGetVertexAttribfv; + internal unsafe delegate* glGetVertexAttribfvARB; + internal unsafe delegate* glGetVertexAttribfvNV; + internal unsafe delegate* glGetVertexAttribiv; + internal unsafe delegate* glGetVertexAttribivARB; + internal unsafe delegate* glGetVertexAttribivNV; + internal unsafe delegate* glGetVideoCaptureStreamdvNV; + internal unsafe delegate* glGetVideoCaptureStreamfvNV; + internal unsafe delegate* glGetVideoCaptureStreamivNV; + internal unsafe delegate* glGetVideoCaptureivNV; + internal unsafe delegate* glGetVideoi64vNV; + internal unsafe delegate* glGetVideoivNV; + internal unsafe delegate* glGetVideoui64vNV; + internal unsafe delegate* glGetVideouivNV; + internal unsafe delegate* glGetVkProcAddrNV; + internal unsafe delegate* glGetnCompressedTexImage; + internal unsafe delegate* glGetnCompressedTexImageARB; + internal unsafe delegate* glGetnTexImage; + internal unsafe delegate* glGetnTexImageARB; + internal unsafe delegate* glGetnUniformdv; + internal unsafe delegate* glGetnUniformdvARB; + internal unsafe delegate* glGetnUniformfv; + internal unsafe delegate* glGetnUniformfvARB; + internal unsafe delegate* glGetnUniformi64vARB; + internal unsafe delegate* glGetnUniformiv; + internal unsafe delegate* glGetnUniformivARB; + internal unsafe delegate* glGetnUniformui64vARB; + internal unsafe delegate* glGetnUniformuiv; + internal unsafe delegate* glGetnUniformuivARB; + internal unsafe delegate* glGlobalAlphaFactorbSUN; + internal unsafe delegate* glGlobalAlphaFactordSUN; + internal unsafe delegate* glGlobalAlphaFactorfSUN; + internal unsafe delegate* glGlobalAlphaFactoriSUN; + internal unsafe delegate* glGlobalAlphaFactorsSUN; + internal unsafe delegate* glGlobalAlphaFactorubSUN; + internal unsafe delegate* glGlobalAlphaFactoruiSUN; + internal unsafe delegate* glGlobalAlphaFactorusSUN; + internal unsafe delegate* glHint; + internal unsafe delegate* glHintPGI; + internal unsafe delegate* glHistogramEXT; + internal unsafe delegate* glIglooInterfaceSGIX; + internal unsafe delegate* glImageTransformParameterfHP; + internal unsafe delegate* glImageTransformParameterfvHP; + internal unsafe delegate* glImageTransformParameteriHP; + internal unsafe delegate* glImageTransformParameterivHP; + internal unsafe delegate* glImportMemoryFdEXT; + internal unsafe delegate* glImportMemoryWin32HandleEXT; + internal unsafe delegate* glImportMemoryWin32NameEXT; + internal unsafe delegate* glImportSemaphoreFdEXT; + internal unsafe delegate* glImportSemaphoreWin32HandleEXT; + internal unsafe delegate* glImportSemaphoreWin32NameEXT; + internal unsafe delegate* glImportSyncEXT; + internal unsafe delegate* glIndexFormatNV; + internal unsafe delegate* glIndexFuncEXT; + internal unsafe delegate* glIndexMaterialEXT; + internal unsafe delegate* glIndexPointerEXT; + internal unsafe delegate* glIndexPointerListIBM; + internal unsafe delegate* glIndexxOES; + internal unsafe delegate* glIndexxvOES; + internal unsafe delegate* glInsertComponentEXT; + internal unsafe delegate* glInsertEventMarkerEXT; + internal unsafe delegate* glInstrumentsBufferSGIX; + internal unsafe delegate* glInterpolatePathsNV; + internal unsafe delegate* glInvalidateBufferData; + internal unsafe delegate* glInvalidateBufferSubData; + internal unsafe delegate* glInvalidateFramebuffer; + internal unsafe delegate* glInvalidateNamedFramebufferData; + internal unsafe delegate* glInvalidateNamedFramebufferSubData; + internal unsafe delegate* glInvalidateSubFramebuffer; + internal unsafe delegate* glInvalidateTexImage; + internal unsafe delegate* glInvalidateTexSubImage; + internal unsafe delegate* glIsAsyncMarkerSGIX; + internal unsafe delegate* glIsBuffer; + internal unsafe delegate* glIsBufferARB; + internal unsafe delegate* glIsBufferResidentNV; + internal unsafe delegate* glIsCommandListNV; + internal unsafe delegate* glIsEnabled; + internal unsafe delegate* glIsEnabledIndexedEXT; + internal unsafe delegate* glIsEnabledi; + internal unsafe delegate* glIsFenceAPPLE; + internal unsafe delegate* glIsFenceNV; + internal unsafe delegate* glIsFramebuffer; + internal unsafe delegate* glIsFramebufferEXT; + internal unsafe delegate* glIsImageHandleResidentARB; + internal unsafe delegate* glIsImageHandleResidentNV; + internal unsafe delegate* glIsMemoryObjectEXT; + internal unsafe delegate* glIsNameAMD; + internal unsafe delegate* glIsNamedBufferResidentNV; + internal unsafe delegate* glIsNamedStringARB; + internal unsafe delegate* glIsObjectBufferATI; + internal unsafe delegate* glIsOcclusionQueryNV; + internal unsafe delegate* glIsPathNV; + internal unsafe delegate* glIsPointInFillPathNV; + internal unsafe delegate* glIsPointInStrokePathNV; + internal unsafe delegate* glIsProgram; + internal unsafe delegate* glIsProgramARB; + internal unsafe delegate* glIsProgramNV; + internal unsafe delegate* glIsProgramPipeline; + internal unsafe delegate* glIsQuery; + internal unsafe delegate* glIsQueryARB; + internal unsafe delegate* glIsRenderbuffer; + internal unsafe delegate* glIsRenderbufferEXT; + internal unsafe delegate* glIsSampler; + internal unsafe delegate* glIsSemaphoreEXT; + internal unsafe delegate* glIsShader; + internal unsafe delegate* glIsStateNV; + internal unsafe delegate* glIsSync; + internal unsafe delegate* glIsTexture; + internal unsafe delegate* glIsTextureEXT; + internal unsafe delegate* glIsTextureHandleResidentARB; + internal unsafe delegate* glIsTextureHandleResidentNV; + internal unsafe delegate* glIsTransformFeedback; + internal unsafe delegate* glIsTransformFeedbackNV; + internal unsafe delegate* glIsVariantEnabledEXT; + internal unsafe delegate* glIsVertexArray; + internal unsafe delegate* glIsVertexArrayAPPLE; + internal unsafe delegate* glIsVertexAttribEnabledAPPLE; + internal unsafe delegate* glLGPUCopyImageSubDataNVX; + internal unsafe delegate* glLGPUInterlockNVX; + internal unsafe delegate* glLGPUNamedBufferSubDataNVX; + internal unsafe delegate* glLabelObjectEXT; + internal unsafe delegate* glLightEnviSGIX; + internal unsafe delegate* glLightModelxOES; + internal unsafe delegate* glLightModelxvOES; + internal unsafe delegate* glLightxOES; + internal unsafe delegate* glLightxvOES; + internal unsafe delegate* glLineWidth; + internal unsafe delegate* glLineWidthxOES; + internal unsafe delegate* glLinkProgram; + internal unsafe delegate* glLinkProgramARB; + internal unsafe delegate* glListDrawCommandsStatesClientNV; + internal unsafe delegate* glListParameterfSGIX; + internal unsafe delegate* glListParameterfvSGIX; + internal unsafe delegate* glListParameteriSGIX; + internal unsafe delegate* glListParameterivSGIX; + internal unsafe delegate* glLoadIdentityDeformationMapSGIX; + internal unsafe delegate* glLoadMatrixxOES; + internal unsafe delegate* glLoadProgramNV; + internal unsafe delegate* glLoadTransposeMatrixdARB; + internal unsafe delegate* glLoadTransposeMatrixfARB; + internal unsafe delegate* glLoadTransposeMatrixxOES; + internal unsafe delegate* glLockArraysEXT; + internal unsafe delegate* glLogicOp; + internal unsafe delegate* glMakeBufferNonResidentNV; + internal unsafe delegate* glMakeBufferResidentNV; + internal unsafe delegate* glMakeImageHandleNonResidentARB; + internal unsafe delegate* glMakeImageHandleNonResidentNV; + internal unsafe delegate* glMakeImageHandleResidentARB; + internal unsafe delegate* glMakeImageHandleResidentNV; + internal unsafe delegate* glMakeNamedBufferNonResidentNV; + internal unsafe delegate* glMakeNamedBufferResidentNV; + internal unsafe delegate* glMakeTextureHandleNonResidentARB; + internal unsafe delegate* glMakeTextureHandleNonResidentNV; + internal unsafe delegate* glMakeTextureHandleResidentARB; + internal unsafe delegate* glMakeTextureHandleResidentNV; + internal unsafe delegate* glMap1xOES; + internal unsafe delegate* glMap2xOES; + internal unsafe delegate* glMapBuffer; + internal unsafe delegate* glMapBufferARB; + internal unsafe delegate* glMapBufferRange; + internal unsafe delegate* glMapControlPointsNV; + internal unsafe delegate* glMapGrid1xOES; + internal unsafe delegate* glMapGrid2xOES; + internal unsafe delegate* glMapNamedBuffer; + internal unsafe delegate* glMapNamedBufferEXT; + internal unsafe delegate* glMapNamedBufferRange; + internal unsafe delegate* glMapNamedBufferRangeEXT; + internal unsafe delegate* glMapObjectBufferATI; + internal unsafe delegate* glMapParameterfvNV; + internal unsafe delegate* glMapParameterivNV; + internal unsafe delegate* glMapTexture2DINTEL; + internal unsafe delegate* glMapVertexAttrib1dAPPLE; + internal unsafe delegate* glMapVertexAttrib1fAPPLE; + internal unsafe delegate* glMapVertexAttrib2dAPPLE; + internal unsafe delegate* glMapVertexAttrib2fAPPLE; + internal unsafe delegate* glMaterialxOES; + internal unsafe delegate* glMaterialxvOES; + internal unsafe delegate* glMatrixFrustumEXT; + internal unsafe delegate* glMatrixIndexPointerARB; + internal unsafe delegate* glMatrixIndexubvARB; + internal unsafe delegate* glMatrixIndexuivARB; + internal unsafe delegate* glMatrixIndexusvARB; + internal unsafe delegate* glMatrixLoad3x2fNV; + internal unsafe delegate* glMatrixLoad3x3fNV; + internal unsafe delegate* glMatrixLoadIdentityEXT; + internal unsafe delegate* glMatrixLoadTranspose3x3fNV; + internal unsafe delegate* glMatrixLoadTransposedEXT; + internal unsafe delegate* glMatrixLoadTransposefEXT; + internal unsafe delegate* glMatrixLoaddEXT; + internal unsafe delegate* glMatrixLoadfEXT; + internal unsafe delegate* glMatrixMult3x2fNV; + internal unsafe delegate* glMatrixMult3x3fNV; + internal unsafe delegate* glMatrixMultTranspose3x3fNV; + internal unsafe delegate* glMatrixMultTransposedEXT; + internal unsafe delegate* glMatrixMultTransposefEXT; + internal unsafe delegate* glMatrixMultdEXT; + internal unsafe delegate* glMatrixMultfEXT; + internal unsafe delegate* glMatrixOrthoEXT; + internal unsafe delegate* glMatrixPopEXT; + internal unsafe delegate* glMatrixPushEXT; + internal unsafe delegate* glMatrixRotatedEXT; + internal unsafe delegate* glMatrixRotatefEXT; + internal unsafe delegate* glMatrixScaledEXT; + internal unsafe delegate* glMatrixScalefEXT; + internal unsafe delegate* glMatrixTranslatedEXT; + internal unsafe delegate* glMatrixTranslatefEXT; + internal unsafe delegate* glMaxShaderCompilerThreadsARB; + internal unsafe delegate* glMaxShaderCompilerThreadsKHR; + internal unsafe delegate* glMemoryBarrier; + internal unsafe delegate* glMemoryBarrierByRegion; + internal unsafe delegate* glMemoryBarrierEXT; + internal unsafe delegate* glMemoryObjectParameterivEXT; + internal unsafe delegate* glMinSampleShading; + internal unsafe delegate* glMinSampleShadingARB; + internal unsafe delegate* glMinmaxEXT; + internal unsafe delegate* glMultMatrixxOES; + internal unsafe delegate* glMultTransposeMatrixdARB; + internal unsafe delegate* glMultTransposeMatrixfARB; + internal unsafe delegate* glMultTransposeMatrixxOES; + internal unsafe delegate* glMultiDrawArrays; + internal unsafe delegate* glMultiDrawArraysEXT; + internal unsafe delegate* glMultiDrawArraysIndirect; + internal unsafe delegate* glMultiDrawArraysIndirectAMD; + internal unsafe delegate* glMultiDrawArraysIndirectBindlessCountNV; + internal unsafe delegate* glMultiDrawArraysIndirectBindlessNV; + internal unsafe delegate* glMultiDrawArraysIndirectCount; + internal unsafe delegate* glMultiDrawArraysIndirectCountARB; + internal unsafe delegate* glMultiDrawElementArrayAPPLE; + internal unsafe delegate* glMultiDrawElements; + internal unsafe delegate* glMultiDrawElementsBaseVertex; + internal unsafe delegate* glMultiDrawElementsEXT; + internal unsafe delegate* glMultiDrawElementsIndirect; + internal unsafe delegate* glMultiDrawElementsIndirectAMD; + internal unsafe delegate* glMultiDrawElementsIndirectBindlessCountNV; + internal unsafe delegate* glMultiDrawElementsIndirectBindlessNV; + internal unsafe delegate* glMultiDrawElementsIndirectCount; + internal unsafe delegate* glMultiDrawElementsIndirectCountARB; + internal unsafe delegate* glMultiDrawMeshTasksIndirectCountNV; + internal unsafe delegate* glMultiDrawMeshTasksIndirectNV; + internal unsafe delegate* glMultiDrawRangeElementArrayAPPLE; + internal unsafe delegate* glMultiModeDrawArraysIBM; + internal unsafe delegate* glMultiModeDrawElementsIBM; + internal unsafe delegate* glMultiTexBufferEXT; + internal unsafe delegate* glMultiTexCoord1bOES; + internal unsafe delegate* glMultiTexCoord1bvOES; + internal unsafe delegate* glMultiTexCoord1dARB; + internal unsafe delegate* glMultiTexCoord1dvARB; + internal unsafe delegate* glMultiTexCoord1fARB; + internal unsafe delegate* glMultiTexCoord1fvARB; + internal unsafe delegate* glMultiTexCoord1hNV; + internal unsafe delegate* glMultiTexCoord1hvNV; + internal unsafe delegate* glMultiTexCoord1iARB; + internal unsafe delegate* glMultiTexCoord1ivARB; + internal unsafe delegate* glMultiTexCoord1sARB; + internal unsafe delegate* glMultiTexCoord1svARB; + internal unsafe delegate* glMultiTexCoord1xOES; + internal unsafe delegate* glMultiTexCoord1xvOES; + internal unsafe delegate* glMultiTexCoord2bOES; + internal unsafe delegate* glMultiTexCoord2bvOES; + internal unsafe delegate* glMultiTexCoord2dARB; + internal unsafe delegate* glMultiTexCoord2dvARB; + internal unsafe delegate* glMultiTexCoord2fARB; + internal unsafe delegate* glMultiTexCoord2fvARB; + internal unsafe delegate* glMultiTexCoord2hNV; + internal unsafe delegate* glMultiTexCoord2hvNV; + internal unsafe delegate* glMultiTexCoord2iARB; + internal unsafe delegate* glMultiTexCoord2ivARB; + internal unsafe delegate* glMultiTexCoord2sARB; + internal unsafe delegate* glMultiTexCoord2svARB; + internal unsafe delegate* glMultiTexCoord2xOES; + internal unsafe delegate* glMultiTexCoord2xvOES; + internal unsafe delegate* glMultiTexCoord3bOES; + internal unsafe delegate* glMultiTexCoord3bvOES; + internal unsafe delegate* glMultiTexCoord3dARB; + internal unsafe delegate* glMultiTexCoord3dvARB; + internal unsafe delegate* glMultiTexCoord3fARB; + internal unsafe delegate* glMultiTexCoord3fvARB; + internal unsafe delegate* glMultiTexCoord3hNV; + internal unsafe delegate* glMultiTexCoord3hvNV; + internal unsafe delegate* glMultiTexCoord3iARB; + internal unsafe delegate* glMultiTexCoord3ivARB; + internal unsafe delegate* glMultiTexCoord3sARB; + internal unsafe delegate* glMultiTexCoord3svARB; + internal unsafe delegate* glMultiTexCoord3xOES; + internal unsafe delegate* glMultiTexCoord3xvOES; + internal unsafe delegate* glMultiTexCoord4bOES; + internal unsafe delegate* glMultiTexCoord4bvOES; + internal unsafe delegate* glMultiTexCoord4dARB; + internal unsafe delegate* glMultiTexCoord4dvARB; + internal unsafe delegate* glMultiTexCoord4fARB; + internal unsafe delegate* glMultiTexCoord4fvARB; + internal unsafe delegate* glMultiTexCoord4hNV; + internal unsafe delegate* glMultiTexCoord4hvNV; + internal unsafe delegate* glMultiTexCoord4iARB; + internal unsafe delegate* glMultiTexCoord4ivARB; + internal unsafe delegate* glMultiTexCoord4sARB; + internal unsafe delegate* glMultiTexCoord4svARB; + internal unsafe delegate* glMultiTexCoord4xOES; + internal unsafe delegate* glMultiTexCoord4xvOES; + internal unsafe delegate* glMultiTexCoordPointerEXT; + internal unsafe delegate* glMultiTexEnvfEXT; + internal unsafe delegate* glMultiTexEnvfvEXT; + internal unsafe delegate* glMultiTexEnviEXT; + internal unsafe delegate* glMultiTexEnvivEXT; + internal unsafe delegate* glMultiTexGendEXT; + internal unsafe delegate* glMultiTexGendvEXT; + internal unsafe delegate* glMultiTexGenfEXT; + internal unsafe delegate* glMultiTexGenfvEXT; + internal unsafe delegate* glMultiTexGeniEXT; + internal unsafe delegate* glMultiTexGenivEXT; + internal unsafe delegate* glMultiTexImage1DEXT; + internal unsafe delegate* glMultiTexImage2DEXT; + internal unsafe delegate* glMultiTexImage3DEXT; + internal unsafe delegate* glMultiTexParameterIivEXT; + internal unsafe delegate* glMultiTexParameterIuivEXT; + internal unsafe delegate* glMultiTexParameterfEXT; + internal unsafe delegate* glMultiTexParameterfvEXT; + internal unsafe delegate* glMultiTexParameteriEXT; + internal unsafe delegate* glMultiTexParameterivEXT; + internal unsafe delegate* glMultiTexRenderbufferEXT; + internal unsafe delegate* glMultiTexSubImage1DEXT; + internal unsafe delegate* glMultiTexSubImage2DEXT; + internal unsafe delegate* glMultiTexSubImage3DEXT; + internal unsafe delegate* glMulticastBarrierNV; + internal unsafe delegate* glMulticastBlitFramebufferNV; + internal unsafe delegate* glMulticastBufferSubDataNV; + internal unsafe delegate* glMulticastCopyBufferSubDataNV; + internal unsafe delegate* glMulticastCopyImageSubDataNV; + internal unsafe delegate* glMulticastFramebufferSampleLocationsfvNV; + internal unsafe delegate* glMulticastGetQueryObjecti64vNV; + internal unsafe delegate* glMulticastGetQueryObjectivNV; + internal unsafe delegate* glMulticastGetQueryObjectui64vNV; + internal unsafe delegate* glMulticastGetQueryObjectuivNV; + internal unsafe delegate* glMulticastScissorArrayvNVX; + internal unsafe delegate* glMulticastViewportArrayvNVX; + internal unsafe delegate* glMulticastViewportPositionWScaleNVX; + internal unsafe delegate* glMulticastWaitSyncNV; + internal unsafe delegate* glNamedBufferAttachMemoryNV; + internal unsafe delegate* glNamedBufferData; + internal unsafe delegate* glNamedBufferDataEXT; + internal unsafe delegate* glNamedBufferPageCommitmentARB; + internal unsafe delegate* glNamedBufferPageCommitmentEXT; + internal unsafe delegate* glNamedBufferPageCommitmentMemNV; + internal unsafe delegate* glNamedBufferStorage; + internal unsafe delegate* glNamedBufferStorageEXT; + [Obsolete( "Param type uncertain", true )] internal unsafe delegate* glNamedBufferStorageExternalEXT; + internal unsafe delegate* glNamedBufferStorageMemEXT; + internal unsafe delegate* glNamedBufferSubData; + internal unsafe delegate* glNamedBufferSubDataEXT; + internal unsafe delegate* glNamedCopyBufferSubDataEXT; + internal unsafe delegate* glNamedFramebufferDrawBuffer; + internal unsafe delegate* glNamedFramebufferDrawBuffers; + internal unsafe delegate* glNamedFramebufferParameteri; + internal unsafe delegate* glNamedFramebufferParameteriEXT; + internal unsafe delegate* glNamedFramebufferReadBuffer; + internal unsafe delegate* glNamedFramebufferRenderbuffer; + internal unsafe delegate* glNamedFramebufferRenderbufferEXT; + internal unsafe delegate* glNamedFramebufferSampleLocationsfvARB; + internal unsafe delegate* glNamedFramebufferSampleLocationsfvNV; + internal unsafe delegate* glNamedFramebufferSamplePositionsfvAMD; + internal unsafe delegate* glNamedFramebufferTexture; + internal unsafe delegate* glNamedFramebufferTexture1DEXT; + internal unsafe delegate* glNamedFramebufferTexture2DEXT; + internal unsafe delegate* glNamedFramebufferTexture3DEXT; + internal unsafe delegate* glNamedFramebufferTextureEXT; + internal unsafe delegate* glNamedFramebufferTextureFaceEXT; + internal unsafe delegate* glNamedFramebufferTextureLayer; + internal unsafe delegate* glNamedFramebufferTextureLayerEXT; + internal unsafe delegate* glNamedProgramLocalParameter4dEXT; + internal unsafe delegate* glNamedProgramLocalParameter4dvEXT; + internal unsafe delegate* glNamedProgramLocalParameter4fEXT; + internal unsafe delegate* glNamedProgramLocalParameter4fvEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4iEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4ivEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4uiEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4uivEXT; + internal unsafe delegate* glNamedProgramLocalParameters4fvEXT; + internal unsafe delegate* glNamedProgramLocalParametersI4ivEXT; + internal unsafe delegate* glNamedProgramLocalParametersI4uivEXT; + internal unsafe delegate* glNamedProgramStringEXT; + internal unsafe delegate* glNamedRenderbufferStorage; + internal unsafe delegate* glNamedRenderbufferStorageEXT; + internal unsafe delegate* glNamedRenderbufferStorageMultisample; + internal unsafe delegate* glNamedRenderbufferStorageMultisampleAdvancedAMD; + internal unsafe delegate* glNamedRenderbufferStorageMultisampleCoverageEXT; + internal unsafe delegate* glNamedRenderbufferStorageMultisampleEXT; + internal unsafe delegate* glNamedStringARB; + internal unsafe delegate* glNewObjectBufferATI; + internal unsafe delegate* glNormal3fVertex3fSUN; + internal unsafe delegate* glNormal3fVertex3fvSUN; + internal unsafe delegate* glNormal3hNV; + internal unsafe delegate* glNormal3hvNV; + internal unsafe delegate* glNormal3xOES; + internal unsafe delegate* glNormal3xvOES; + internal unsafe delegate* glNormalFormatNV; + internal unsafe delegate* glNormalPointerEXT; + internal unsafe delegate* glNormalPointerListIBM; + internal unsafe delegate* glNormalPointervINTEL; + internal unsafe delegate* glNormalStream3bATI; + internal unsafe delegate* glNormalStream3bvATI; + internal unsafe delegate* glNormalStream3dATI; + internal unsafe delegate* glNormalStream3dvATI; + internal unsafe delegate* glNormalStream3fATI; + internal unsafe delegate* glNormalStream3fvATI; + internal unsafe delegate* glNormalStream3iATI; + internal unsafe delegate* glNormalStream3ivATI; + internal unsafe delegate* glNormalStream3sATI; + internal unsafe delegate* glNormalStream3svATI; + internal unsafe delegate* glObjectLabel; + internal unsafe delegate* glObjectPtrLabel; + internal unsafe delegate* glObjectPurgeableAPPLE; + internal unsafe delegate* glObjectUnpurgeableAPPLE; + internal unsafe delegate* glOrthofOES; + internal unsafe delegate* glOrthoxOES; + internal unsafe delegate* glPNTrianglesfATI; + internal unsafe delegate* glPNTrianglesiATI; + internal unsafe delegate* glPassTexCoordATI; + internal unsafe delegate* glPassThroughxOES; + internal unsafe delegate* glPatchParameterfv; + internal unsafe delegate* glPatchParameteri; + internal unsafe delegate* glPathCommandsNV; + internal unsafe delegate* glPathCoordsNV; + internal unsafe delegate* glPathCoverDepthFuncNV; + internal unsafe delegate* glPathDashArrayNV; + internal unsafe delegate* glPathGlyphIndexArrayNV; + internal unsafe delegate* glPathGlyphIndexRangeNV; + internal unsafe delegate* glPathGlyphRangeNV; + internal unsafe delegate* glPathGlyphsNV; + internal unsafe delegate* glPathMemoryGlyphIndexArrayNV; + internal unsafe delegate* glPathParameterfNV; + internal unsafe delegate* glPathParameterfvNV; + internal unsafe delegate* glPathParameteriNV; + internal unsafe delegate* glPathParameterivNV; + internal unsafe delegate* glPathStencilDepthOffsetNV; + internal unsafe delegate* glPathStencilFuncNV; + internal unsafe delegate* glPathStringNV; + internal unsafe delegate* glPathSubCommandsNV; + internal unsafe delegate* glPathSubCoordsNV; + internal unsafe delegate* glPauseTransformFeedback; + internal unsafe delegate* glPauseTransformFeedbackNV; + internal unsafe delegate* glPixelDataRangeNV; + internal unsafe delegate* glPixelMapx; + internal unsafe delegate* glPixelStoref; + internal unsafe delegate* glPixelStorei; + internal unsafe delegate* glPixelStorex; + internal unsafe delegate* glPixelTexGenParameterfSGIS; + internal unsafe delegate* glPixelTexGenParameterfvSGIS; + internal unsafe delegate* glPixelTexGenParameteriSGIS; + internal unsafe delegate* glPixelTexGenParameterivSGIS; + internal unsafe delegate* glPixelTexGenSGIX; + internal unsafe delegate* glPixelTransferxOES; + internal unsafe delegate* glPixelTransformParameterfEXT; + internal unsafe delegate* glPixelTransformParameterfvEXT; + internal unsafe delegate* glPixelTransformParameteriEXT; + internal unsafe delegate* glPixelTransformParameterivEXT; + internal unsafe delegate* glPixelZoomxOES; + internal unsafe delegate* glPointAlongPathNV; + internal unsafe delegate* glPointParameterf; + internal unsafe delegate* glPointParameterfARB; + internal unsafe delegate* glPointParameterfEXT; + internal unsafe delegate* glPointParameterfSGIS; + internal unsafe delegate* glPointParameterfv; + internal unsafe delegate* glPointParameterfvARB; + internal unsafe delegate* glPointParameterfvEXT; + internal unsafe delegate* glPointParameterfvSGIS; + internal unsafe delegate* glPointParameteri; + internal unsafe delegate* glPointParameteriNV; + internal unsafe delegate* glPointParameteriv; + internal unsafe delegate* glPointParameterivNV; + internal unsafe delegate* glPointParameterxvOES; + internal unsafe delegate* glPointSize; + internal unsafe delegate* glPointSizexOES; + internal unsafe delegate* glPollAsyncSGIX; + internal unsafe delegate* glPollInstrumentsSGIX; + internal unsafe delegate* glPolygonMode; + internal unsafe delegate* glPolygonOffset; + internal unsafe delegate* glPolygonOffsetClamp; + internal unsafe delegate* glPolygonOffsetClampEXT; + internal unsafe delegate* glPolygonOffsetEXT; + internal unsafe delegate* glPolygonOffsetxOES; + internal unsafe delegate* glPopDebugGroup; + internal unsafe delegate* glPopGroupMarkerEXT; + internal unsafe delegate* glPresentFrameDualFillNV; + internal unsafe delegate* glPresentFrameKeyedNV; + internal unsafe delegate* glPrimitiveBoundingBoxARB; + internal unsafe delegate* glPrimitiveRestartIndex; + internal unsafe delegate* glPrimitiveRestartIndexNV; + internal unsafe delegate* glPrimitiveRestartNV; + internal unsafe delegate* glPrioritizeTexturesEXT; + internal unsafe delegate* glPrioritizeTexturesxOES; + internal unsafe delegate* glProgramBinary; + internal unsafe delegate* glProgramBufferParametersIivNV; + internal unsafe delegate* glProgramBufferParametersIuivNV; + internal unsafe delegate* glProgramBufferParametersfvNV; + internal unsafe delegate* glProgramEnvParameter4dARB; + internal unsafe delegate* glProgramEnvParameter4dvARB; + internal unsafe delegate* glProgramEnvParameter4fARB; + internal unsafe delegate* glProgramEnvParameter4fvARB; + internal unsafe delegate* glProgramEnvParameterI4iNV; + internal unsafe delegate* glProgramEnvParameterI4ivNV; + internal unsafe delegate* glProgramEnvParameterI4uiNV; + internal unsafe delegate* glProgramEnvParameterI4uivNV; + internal unsafe delegate* glProgramEnvParameters4fvEXT; + internal unsafe delegate* glProgramEnvParametersI4ivNV; + internal unsafe delegate* glProgramEnvParametersI4uivNV; + internal unsafe delegate* glProgramLocalParameter4dARB; + internal unsafe delegate* glProgramLocalParameter4dvARB; + internal unsafe delegate* glProgramLocalParameter4fARB; + internal unsafe delegate* glProgramLocalParameter4fvARB; + internal unsafe delegate* glProgramLocalParameterI4iNV; + internal unsafe delegate* glProgramLocalParameterI4ivNV; + internal unsafe delegate* glProgramLocalParameterI4uiNV; + internal unsafe delegate* glProgramLocalParameterI4uivNV; + internal unsafe delegate* glProgramLocalParameters4fvEXT; + internal unsafe delegate* glProgramLocalParametersI4ivNV; + internal unsafe delegate* glProgramLocalParametersI4uivNV; + internal unsafe delegate* glProgramNamedParameter4dNV; + internal unsafe delegate* glProgramNamedParameter4dvNV; + internal unsafe delegate* glProgramNamedParameter4fNV; + internal unsafe delegate* glProgramNamedParameter4fvNV; + internal unsafe delegate* glProgramParameter4dNV; + internal unsafe delegate* glProgramParameter4dvNV; + internal unsafe delegate* glProgramParameter4fNV; + internal unsafe delegate* glProgramParameter4fvNV; + internal unsafe delegate* glProgramParameteri; + internal unsafe delegate* glProgramParameteriARB; + internal unsafe delegate* glProgramParameteriEXT; + internal unsafe delegate* glProgramParameters4dvNV; + internal unsafe delegate* glProgramParameters4fvNV; + internal unsafe delegate* glProgramPathFragmentInputGenNV; + internal unsafe delegate* glProgramStringARB; + internal unsafe delegate* glProgramSubroutineParametersuivNV; + internal unsafe delegate* glProgramUniform1d; + internal unsafe delegate* glProgramUniform1dEXT; + internal unsafe delegate* glProgramUniform1dv; + internal unsafe delegate* glProgramUniform1dvEXT; + internal unsafe delegate* glProgramUniform1f; + internal unsafe delegate* glProgramUniform1fEXT; + internal unsafe delegate* glProgramUniform1fv; + internal unsafe delegate* glProgramUniform1fvEXT; + internal unsafe delegate* glProgramUniform1i; + internal unsafe delegate* glProgramUniform1i64ARB; + internal unsafe delegate* glProgramUniform1i64NV; + internal unsafe delegate* glProgramUniform1i64vARB; + internal unsafe delegate* glProgramUniform1i64vNV; + internal unsafe delegate* glProgramUniform1iEXT; + internal unsafe delegate* glProgramUniform1iv; + internal unsafe delegate* glProgramUniform1ivEXT; + internal unsafe delegate* glProgramUniform1ui; + internal unsafe delegate* glProgramUniform1ui64ARB; + internal unsafe delegate* glProgramUniform1ui64NV; + internal unsafe delegate* glProgramUniform1ui64vARB; + internal unsafe delegate* glProgramUniform1ui64vNV; + internal unsafe delegate* glProgramUniform1uiEXT; + internal unsafe delegate* glProgramUniform1uiv; + internal unsafe delegate* glProgramUniform1uivEXT; + internal unsafe delegate* glProgramUniform2d; + internal unsafe delegate* glProgramUniform2dEXT; + internal unsafe delegate* glProgramUniform2dv; + internal unsafe delegate* glProgramUniform2dvEXT; + internal unsafe delegate* glProgramUniform2f; + internal unsafe delegate* glProgramUniform2fEXT; + internal unsafe delegate* glProgramUniform2fv; + internal unsafe delegate* glProgramUniform2fvEXT; + internal unsafe delegate* glProgramUniform2i; + internal unsafe delegate* glProgramUniform2i64ARB; + internal unsafe delegate* glProgramUniform2i64NV; + internal unsafe delegate* glProgramUniform2i64vARB; + internal unsafe delegate* glProgramUniform2i64vNV; + internal unsafe delegate* glProgramUniform2iEXT; + internal unsafe delegate* glProgramUniform2iv; + internal unsafe delegate* glProgramUniform2ivEXT; + internal unsafe delegate* glProgramUniform2ui; + internal unsafe delegate* glProgramUniform2ui64ARB; + internal unsafe delegate* glProgramUniform2ui64NV; + internal unsafe delegate* glProgramUniform2ui64vARB; + internal unsafe delegate* glProgramUniform2ui64vNV; + internal unsafe delegate* glProgramUniform2uiEXT; + internal unsafe delegate* glProgramUniform2uiv; + internal unsafe delegate* glProgramUniform2uivEXT; + internal unsafe delegate* glProgramUniform3d; + internal unsafe delegate* glProgramUniform3dEXT; + internal unsafe delegate* glProgramUniform3dv; + internal unsafe delegate* glProgramUniform3dvEXT; + internal unsafe delegate* glProgramUniform3f; + internal unsafe delegate* glProgramUniform3fEXT; + internal unsafe delegate* glProgramUniform3fv; + internal unsafe delegate* glProgramUniform3fvEXT; + internal unsafe delegate* glProgramUniform3i; + internal unsafe delegate* glProgramUniform3i64ARB; + internal unsafe delegate* glProgramUniform3i64NV; + internal unsafe delegate* glProgramUniform3i64vARB; + internal unsafe delegate* glProgramUniform3i64vNV; + internal unsafe delegate* glProgramUniform3iEXT; + internal unsafe delegate* glProgramUniform3iv; + internal unsafe delegate* glProgramUniform3ivEXT; + internal unsafe delegate* glProgramUniform3ui; + internal unsafe delegate* glProgramUniform3ui64ARB; + internal unsafe delegate* glProgramUniform3ui64NV; + internal unsafe delegate* glProgramUniform3ui64vARB; + internal unsafe delegate* glProgramUniform3ui64vNV; + internal unsafe delegate* glProgramUniform3uiEXT; + internal unsafe delegate* glProgramUniform3uiv; + internal unsafe delegate* glProgramUniform3uivEXT; + internal unsafe delegate* glProgramUniform4d; + internal unsafe delegate* glProgramUniform4dEXT; + internal unsafe delegate* glProgramUniform4dv; + internal unsafe delegate* glProgramUniform4dvEXT; + internal unsafe delegate* glProgramUniform4f; + internal unsafe delegate* glProgramUniform4fEXT; + internal unsafe delegate* glProgramUniform4fv; + internal unsafe delegate* glProgramUniform4fvEXT; + internal unsafe delegate* glProgramUniform4i; + internal unsafe delegate* glProgramUniform4i64ARB; + internal unsafe delegate* glProgramUniform4i64NV; + internal unsafe delegate* glProgramUniform4i64vARB; + internal unsafe delegate* glProgramUniform4i64vNV; + internal unsafe delegate* glProgramUniform4iEXT; + internal unsafe delegate* glProgramUniform4iv; + internal unsafe delegate* glProgramUniform4ivEXT; + internal unsafe delegate* glProgramUniform4ui; + internal unsafe delegate* glProgramUniform4ui64ARB; + internal unsafe delegate* glProgramUniform4ui64NV; + internal unsafe delegate* glProgramUniform4ui64vARB; + internal unsafe delegate* glProgramUniform4ui64vNV; + internal unsafe delegate* glProgramUniform4uiEXT; + internal unsafe delegate* glProgramUniform4uiv; + internal unsafe delegate* glProgramUniform4uivEXT; + internal unsafe delegate* glProgramUniformHandleui64ARB; + internal unsafe delegate* glProgramUniformHandleui64NV; + internal unsafe delegate* glProgramUniformHandleui64vARB; + internal unsafe delegate* glProgramUniformHandleui64vNV; + internal unsafe delegate* glProgramUniformMatrix2dv; + internal unsafe delegate* glProgramUniformMatrix2dvEXT; + internal unsafe delegate* glProgramUniformMatrix2fv; + internal unsafe delegate* glProgramUniformMatrix2fvEXT; + internal unsafe delegate* glProgramUniformMatrix2x3dv; + internal unsafe delegate* glProgramUniformMatrix2x3dvEXT; + internal unsafe delegate* glProgramUniformMatrix2x3fv; + internal unsafe delegate* glProgramUniformMatrix2x3fvEXT; + internal unsafe delegate* glProgramUniformMatrix2x4dv; + internal unsafe delegate* glProgramUniformMatrix2x4dvEXT; + internal unsafe delegate* glProgramUniformMatrix2x4fv; + internal unsafe delegate* glProgramUniformMatrix2x4fvEXT; + internal unsafe delegate* glProgramUniformMatrix3dv; + internal unsafe delegate* glProgramUniformMatrix3dvEXT; + internal unsafe delegate* glProgramUniformMatrix3fv; + internal unsafe delegate* glProgramUniformMatrix3fvEXT; + internal unsafe delegate* glProgramUniformMatrix3x2dv; + internal unsafe delegate* glProgramUniformMatrix3x2dvEXT; + internal unsafe delegate* glProgramUniformMatrix3x2fv; + internal unsafe delegate* glProgramUniformMatrix3x2fvEXT; + internal unsafe delegate* glProgramUniformMatrix3x4dv; + internal unsafe delegate* glProgramUniformMatrix3x4dvEXT; + internal unsafe delegate* glProgramUniformMatrix3x4fv; + internal unsafe delegate* glProgramUniformMatrix3x4fvEXT; + internal unsafe delegate* glProgramUniformMatrix4dv; + internal unsafe delegate* glProgramUniformMatrix4dvEXT; + internal unsafe delegate* glProgramUniformMatrix4fv; + internal unsafe delegate* glProgramUniformMatrix4fvEXT; + internal unsafe delegate* glProgramUniformMatrix4x2dv; + internal unsafe delegate* glProgramUniformMatrix4x2dvEXT; + internal unsafe delegate* glProgramUniformMatrix4x2fv; + internal unsafe delegate* glProgramUniformMatrix4x2fvEXT; + internal unsafe delegate* glProgramUniformMatrix4x3dv; + internal unsafe delegate* glProgramUniformMatrix4x3dvEXT; + internal unsafe delegate* glProgramUniformMatrix4x3fv; + internal unsafe delegate* glProgramUniformMatrix4x3fvEXT; + internal unsafe delegate* glProgramUniformui64NV; + internal unsafe delegate* glProgramUniformui64vNV; + internal unsafe delegate* glProgramVertexLimitNV; + internal unsafe delegate* glProvokingVertex; + internal unsafe delegate* glProvokingVertexEXT; + internal unsafe delegate* glPushClientAttribDefaultEXT; + internal unsafe delegate* glPushDebugGroup; + internal unsafe delegate* glPushGroupMarkerEXT; + internal unsafe delegate* glQueryCounter; + internal unsafe delegate* glQueryMatrixxOES; + internal unsafe delegate* glQueryObjectParameteruiAMD; + internal unsafe delegate* glQueryResourceNV; + internal unsafe delegate* glQueryResourceTagNV; + internal unsafe delegate* glRasterPos2xOES; + internal unsafe delegate* glRasterPos2xvOES; + internal unsafe delegate* glRasterPos3xOES; + internal unsafe delegate* glRasterPos3xvOES; + internal unsafe delegate* glRasterPos4xOES; + internal unsafe delegate* glRasterPos4xvOES; + internal unsafe delegate* glRasterSamplesEXT; + internal unsafe delegate* glReadBuffer; + internal unsafe delegate* glReadInstrumentsSGIX; + internal unsafe delegate* glReadPixels; + internal unsafe delegate* glReadnPixels; + internal unsafe delegate* glReadnPixelsARB; + internal unsafe delegate* glRectxOES; + internal unsafe delegate* glRectxvOES; + internal unsafe delegate* glReferencePlaneSGIX; + internal unsafe delegate* glReleaseKeyedMutexWin32EXT; + internal unsafe delegate* glReleaseShaderCompiler; + internal unsafe delegate* glRenderGpuMaskNV; + internal unsafe delegate* glRenderbufferStorage; + internal unsafe delegate* glRenderbufferStorageEXT; + internal unsafe delegate* glRenderbufferStorageMultisample; + internal unsafe delegate* glRenderbufferStorageMultisampleAdvancedAMD; + internal unsafe delegate* glRenderbufferStorageMultisampleCoverageNV; + internal unsafe delegate* glRenderbufferStorageMultisampleEXT; + internal unsafe delegate* glReplacementCodePointerSUN; + internal unsafe delegate* glReplacementCodeubSUN; + internal unsafe delegate* glReplacementCodeubvSUN; + internal unsafe delegate* glReplacementCodeuiColor3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiColor3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiColor4ubVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiColor4ubVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuivSUN; + internal unsafe delegate* glReplacementCodeusSUN; + internal unsafe delegate* glReplacementCodeusvSUN; + internal unsafe delegate* glRequestResidentProgramsNV; + internal unsafe delegate* glResetHistogramEXT; + internal unsafe delegate* glResetMemoryObjectParameterNV; + internal unsafe delegate* glResetMinmaxEXT; + internal unsafe delegate* glResizeBuffersMESA; + internal unsafe delegate* glResolveDepthValuesNV; + internal unsafe delegate* glResumeTransformFeedback; + internal unsafe delegate* glResumeTransformFeedbackNV; + internal unsafe delegate* glRotatexOES; + internal unsafe delegate* glSampleCoverage; + internal unsafe delegate* glSampleCoverageARB; + internal unsafe delegate* glSampleMapATI; + internal unsafe delegate* glSampleMaskEXT; + internal unsafe delegate* glSampleMaskIndexedNV; + internal unsafe delegate* glSampleMaskSGIS; + internal unsafe delegate* glSampleMaski; + internal unsafe delegate* glSamplePatternEXT; + internal unsafe delegate* glSamplePatternSGIS; + internal unsafe delegate* glSamplerParameterIiv; + internal unsafe delegate* glSamplerParameterIuiv; + internal unsafe delegate* glSamplerParameterf; + internal unsafe delegate* glSamplerParameterfv; + internal unsafe delegate* glSamplerParameteri; + internal unsafe delegate* glSamplerParameteriv; + internal unsafe delegate* glScalexOES; + internal unsafe delegate* glScissor; + internal unsafe delegate* glScissorArrayv; + internal unsafe delegate* glScissorExclusiveArrayvNV; + internal unsafe delegate* glScissorExclusiveNV; + internal unsafe delegate* glScissorIndexed; + internal unsafe delegate* glScissorIndexedv; + internal unsafe delegate* glSecondaryColor3bEXT; + internal unsafe delegate* glSecondaryColor3bvEXT; + internal unsafe delegate* glSecondaryColor3dEXT; + internal unsafe delegate* glSecondaryColor3dvEXT; + internal unsafe delegate* glSecondaryColor3fEXT; + internal unsafe delegate* glSecondaryColor3fvEXT; + internal unsafe delegate* glSecondaryColor3hNV; + internal unsafe delegate* glSecondaryColor3hvNV; + internal unsafe delegate* glSecondaryColor3iEXT; + internal unsafe delegate* glSecondaryColor3ivEXT; + internal unsafe delegate* glSecondaryColor3sEXT; + internal unsafe delegate* glSecondaryColor3svEXT; + internal unsafe delegate* glSecondaryColor3ubEXT; + internal unsafe delegate* glSecondaryColor3ubvEXT; + internal unsafe delegate* glSecondaryColor3uiEXT; + internal unsafe delegate* glSecondaryColor3uivEXT; + internal unsafe delegate* glSecondaryColor3usEXT; + internal unsafe delegate* glSecondaryColor3usvEXT; + internal unsafe delegate* glSecondaryColorFormatNV; + internal unsafe delegate* glSecondaryColorPointerEXT; + internal unsafe delegate* glSecondaryColorPointerListIBM; + internal unsafe delegate* glSelectPerfMonitorCountersAMD; + internal unsafe delegate* glSemaphoreParameterivNV; + internal unsafe delegate* glSemaphoreParameterui64vEXT; + internal unsafe delegate* glSeparableFilter2DEXT; + internal unsafe delegate* glSetFenceAPPLE; + internal unsafe delegate* glSetFenceNV; + internal unsafe delegate* glSetFragmentShaderConstantATI; + internal unsafe delegate* glSetInvariantEXT; + internal unsafe delegate* glSetLocalConstantEXT; + internal unsafe delegate* glSetMultisamplefvAMD; + internal unsafe delegate* glShaderBinary; + internal unsafe delegate* glShaderOp1EXT; + internal unsafe delegate* glShaderOp2EXT; + internal unsafe delegate* glShaderOp3EXT; + internal unsafe delegate* unmanaged[Stdcall] glShaderSource; + internal unsafe delegate* glShaderSourceARB; + internal unsafe delegate* glShaderStorageBlockBinding; + internal unsafe delegate* glShadingRateImageBarrierNV; + internal unsafe delegate* glShadingRateImagePaletteNV; + internal unsafe delegate* glShadingRateSampleOrderCustomNV; + internal unsafe delegate* glShadingRateSampleOrderNV; + internal unsafe delegate* glSharpenTexFuncSGIS; + internal unsafe delegate* glSignalSemaphoreEXT; + internal unsafe delegate* glSignalSemaphoreui64NVX; + internal unsafe delegate* glSignalVkFenceNV; + internal unsafe delegate* glSignalVkSemaphoreNV; + internal unsafe delegate* glSpecializeShader; + internal unsafe delegate* glSpecializeShaderARB; + internal unsafe delegate* glSpriteParameterfSGIX; + internal unsafe delegate* glSpriteParameterfvSGIX; + internal unsafe delegate* glSpriteParameteriSGIX; + internal unsafe delegate* glSpriteParameterivSGIX; + internal unsafe delegate* glStartInstrumentsSGIX; + internal unsafe delegate* glStateCaptureNV; + internal unsafe delegate* glStencilClearTagEXT; + internal unsafe delegate* glStencilFillPathInstancedNV; + internal unsafe delegate* glStencilFillPathNV; + internal unsafe delegate* glStencilFunc; + internal unsafe delegate* glStencilFuncSeparate; + internal unsafe delegate* glStencilFuncSeparateATI; + internal unsafe delegate* glStencilMask; + internal unsafe delegate* glStencilMaskSeparate; + internal unsafe delegate* glStencilOp; + internal unsafe delegate* glStencilOpSeparate; + internal unsafe delegate* glStencilOpSeparateATI; + internal unsafe delegate* glStencilOpValueAMD; + internal unsafe delegate* glStencilStrokePathInstancedNV; + internal unsafe delegate* glStencilStrokePathNV; + internal unsafe delegate* glStencilThenCoverFillPathInstancedNV; + internal unsafe delegate* glStencilThenCoverFillPathNV; + internal unsafe delegate* glStencilThenCoverStrokePathInstancedNV; + internal unsafe delegate* glStencilThenCoverStrokePathNV; + internal unsafe delegate* glStopInstrumentsSGIX; + internal unsafe delegate* glStringMarkerGREMEDY; + internal unsafe delegate* glSubpixelPrecisionBiasNV; + internal unsafe delegate* glSwizzleEXT; + internal unsafe delegate* glSyncTextureINTEL; + internal unsafe delegate* glTagSampleBufferSGIX; + internal unsafe delegate* glTangent3bEXT; + internal unsafe delegate* glTangent3bvEXT; + internal unsafe delegate* glTangent3dEXT; + internal unsafe delegate* glTangent3dvEXT; + internal unsafe delegate* glTangent3fEXT; + internal unsafe delegate* glTangent3fvEXT; + internal unsafe delegate* glTangent3iEXT; + internal unsafe delegate* glTangent3ivEXT; + internal unsafe delegate* glTangent3sEXT; + internal unsafe delegate* glTangent3svEXT; + internal unsafe delegate* glTangentPointerEXT; + internal unsafe delegate* glTbufferMask3DFX; + internal unsafe delegate* glTessellationFactorAMD; + internal unsafe delegate* glTessellationModeAMD; + internal unsafe delegate* glTestFenceAPPLE; + internal unsafe delegate* glTestFenceNV; + internal unsafe delegate* glTestObjectAPPLE; + internal unsafe delegate* glTexAttachMemoryNV; + internal unsafe delegate* glTexBuffer; + internal unsafe delegate* glTexBufferARB; + internal unsafe delegate* glTexBufferEXT; + internal unsafe delegate* glTexBufferRange; + internal unsafe delegate* glTexBumpParameterfvATI; + internal unsafe delegate* glTexBumpParameterivATI; + internal unsafe delegate* glTexCoord1bOES; + internal unsafe delegate* glTexCoord1bvOES; + internal unsafe delegate* glTexCoord1hNV; + internal unsafe delegate* glTexCoord1hvNV; + internal unsafe delegate* glTexCoord1xOES; + internal unsafe delegate* glTexCoord1xvOES; + internal unsafe delegate* glTexCoord2bOES; + internal unsafe delegate* glTexCoord2bvOES; + internal unsafe delegate* glTexCoord2fColor3fVertex3fSUN; + internal unsafe delegate* glTexCoord2fColor3fVertex3fvSUN; + internal unsafe delegate* glTexCoord2fColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glTexCoord2fColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glTexCoord2fColor4ubVertex3fSUN; + internal unsafe delegate* glTexCoord2fColor4ubVertex3fvSUN; + internal unsafe delegate* glTexCoord2fNormal3fVertex3fSUN; + internal unsafe delegate* glTexCoord2fNormal3fVertex3fvSUN; + internal unsafe delegate* glTexCoord2fVertex3fSUN; + internal unsafe delegate* glTexCoord2fVertex3fvSUN; + internal unsafe delegate* glTexCoord2hNV; + internal unsafe delegate* glTexCoord2hvNV; + internal unsafe delegate* glTexCoord2xOES; + internal unsafe delegate* glTexCoord2xvOES; + internal unsafe delegate* glTexCoord3bOES; + internal unsafe delegate* glTexCoord3bvOES; + internal unsafe delegate* glTexCoord3hNV; + internal unsafe delegate* glTexCoord3hvNV; + internal unsafe delegate* glTexCoord3xOES; + internal unsafe delegate* glTexCoord3xvOES; + internal unsafe delegate* glTexCoord4bOES; + internal unsafe delegate* glTexCoord4bvOES; + internal unsafe delegate* glTexCoord4fColor4fNormal3fVertex4fSUN; + internal unsafe delegate* glTexCoord4fColor4fNormal3fVertex4fvSUN; + internal unsafe delegate* glTexCoord4fVertex4fSUN; + internal unsafe delegate* glTexCoord4fVertex4fvSUN; + internal unsafe delegate* glTexCoord4hNV; + internal unsafe delegate* glTexCoord4hvNV; + internal unsafe delegate* glTexCoord4xOES; + internal unsafe delegate* glTexCoord4xvOES; + internal unsafe delegate* glTexCoordFormatNV; + internal unsafe delegate* glTexCoordPointerEXT; + internal unsafe delegate* glTexCoordPointerListIBM; + internal unsafe delegate* glTexCoordPointervINTEL; + internal unsafe delegate* glTexEnvxOES; + internal unsafe delegate* glTexEnvxvOES; + internal unsafe delegate* glTexFilterFuncSGIS; + internal unsafe delegate* glTexGenxOES; + internal unsafe delegate* glTexGenxvOES; + internal unsafe delegate* glTexImage1D; + internal unsafe delegate* glTexImage2D; + internal unsafe delegate* glTexImage2DMultisample; + internal unsafe delegate* glTexImage2DMultisampleCoverageNV; + internal unsafe delegate* glTexImage3D; + internal unsafe delegate* glTexImage3DEXT; + internal unsafe delegate* glTexImage3DMultisample; + internal unsafe delegate* glTexImage3DMultisampleCoverageNV; + internal unsafe delegate* glTexImage4DSGIS; + internal unsafe delegate* glTexPageCommitmentARB; + internal unsafe delegate* glTexPageCommitmentMemNV; + internal unsafe delegate* glTexParameterIiv; + internal unsafe delegate* glTexParameterIivEXT; + internal unsafe delegate* glTexParameterIuiv; + internal unsafe delegate* glTexParameterIuivEXT; + internal unsafe delegate* glTexParameterf; + internal unsafe delegate* glTexParameterfv; + internal unsafe delegate* glTexParameteri; + internal unsafe delegate* glTexParameteriv; + internal unsafe delegate* glTexParameterxOES; + internal unsafe delegate* glTexParameterxvOES; + internal unsafe delegate* glTexRenderbufferNV; + internal unsafe delegate* glTexStorage1D; + internal unsafe delegate* glTexStorage1DEXT; + internal unsafe delegate* glTexStorage2D; + internal unsafe delegate* glTexStorage2DEXT; + internal unsafe delegate* glTexStorage2DMultisample; + internal unsafe delegate* glTexStorage3D; + internal unsafe delegate* glTexStorage3DEXT; + internal unsafe delegate* glTexStorage3DMultisample; + internal unsafe delegate* glTexStorageMem1DEXT; + internal unsafe delegate* glTexStorageMem2DEXT; + internal unsafe delegate* glTexStorageMem2DMultisampleEXT; + internal unsafe delegate* glTexStorageMem3DEXT; + internal unsafe delegate* glTexStorageMem3DMultisampleEXT; + internal unsafe delegate* glTexStorageSparseAMD; + internal unsafe delegate* glTexSubImage1D; + internal unsafe delegate* glTexSubImage1DEXT; + internal unsafe delegate* glTexSubImage2D; + internal unsafe delegate* glTexSubImage2DEXT; + internal unsafe delegate* glTexSubImage3D; + internal unsafe delegate* glTexSubImage3DEXT; + internal unsafe delegate* glTexSubImage4DSGIS; + internal unsafe delegate* glTextureAttachMemoryNV; + internal unsafe delegate* glTextureBarrier; + internal unsafe delegate* glTextureBarrierNV; + internal unsafe delegate* glTextureBuffer; + internal unsafe delegate* glTextureBufferEXT; + internal unsafe delegate* glTextureBufferRange; + internal unsafe delegate* glTextureBufferRangeEXT; + internal unsafe delegate* glTextureColorMaskSGIS; + internal unsafe delegate* glTextureImage1DEXT; + internal unsafe delegate* glTextureImage2DEXT; + internal unsafe delegate* glTextureImage2DMultisampleCoverageNV; + internal unsafe delegate* glTextureImage2DMultisampleNV; + internal unsafe delegate* glTextureImage3DEXT; + internal unsafe delegate* glTextureImage3DMultisampleCoverageNV; + internal unsafe delegate* glTextureImage3DMultisampleNV; + internal unsafe delegate* glTextureLightEXT; + internal unsafe delegate* glTextureMaterialEXT; + internal unsafe delegate* glTextureNormalEXT; + internal unsafe delegate* glTexturePageCommitmentEXT; + internal unsafe delegate* glTexturePageCommitmentMemNV; + internal unsafe delegate* glTextureParameterIiv; + internal unsafe delegate* glTextureParameterIivEXT; + internal unsafe delegate* glTextureParameterIuiv; + internal unsafe delegate* glTextureParameterIuivEXT; + internal unsafe delegate* glTextureParameterf; + internal unsafe delegate* glTextureParameterfEXT; + internal unsafe delegate* glTextureParameterfv; + internal unsafe delegate* glTextureParameterfvEXT; + internal unsafe delegate* glTextureParameteri; + internal unsafe delegate* glTextureParameteriEXT; + internal unsafe delegate* glTextureParameteriv; + internal unsafe delegate* glTextureParameterivEXT; + internal unsafe delegate* glTextureRangeAPPLE; + internal unsafe delegate* glTextureRenderbufferEXT; + internal unsafe delegate* glTextureStorage1D; + internal unsafe delegate* glTextureStorage1DEXT; + internal unsafe delegate* glTextureStorage2D; + internal unsafe delegate* glTextureStorage2DEXT; + internal unsafe delegate* glTextureStorage2DMultisample; + internal unsafe delegate* glTextureStorage2DMultisampleEXT; + internal unsafe delegate* glTextureStorage3D; + internal unsafe delegate* glTextureStorage3DEXT; + internal unsafe delegate* glTextureStorage3DMultisample; + internal unsafe delegate* glTextureStorage3DMultisampleEXT; + internal unsafe delegate* glTextureStorageMem1DEXT; + internal unsafe delegate* glTextureStorageMem2DEXT; + internal unsafe delegate* glTextureStorageMem2DMultisampleEXT; + internal unsafe delegate* glTextureStorageMem3DEXT; + internal unsafe delegate* glTextureStorageMem3DMultisampleEXT; + internal unsafe delegate* glTextureStorageSparseAMD; + internal unsafe delegate* glTextureSubImage1D; + internal unsafe delegate* glTextureSubImage1DEXT; + internal unsafe delegate* glTextureSubImage2D; + internal unsafe delegate* glTextureSubImage2DEXT; + internal unsafe delegate* glTextureSubImage3D; + internal unsafe delegate* glTextureSubImage3DEXT; + internal unsafe delegate* glTextureView; + internal unsafe delegate* glTrackMatrixNV; + internal unsafe delegate* glTransformFeedbackAttribsNV; + internal unsafe delegate* glTransformFeedbackBufferBase; + internal unsafe delegate* glTransformFeedbackBufferRange; + internal unsafe delegate* glTransformFeedbackStreamAttribsNV; + internal unsafe delegate* glTransformFeedbackVaryings; + internal unsafe delegate* glTransformFeedbackVaryingsEXT; + internal unsafe delegate* glTransformFeedbackVaryingsNV; + internal unsafe delegate* glTransformPathNV; + internal unsafe delegate* glTranslatexOES; + internal unsafe delegate* glUniform1d; + internal unsafe delegate* glUniform1dv; + internal unsafe delegate* glUniform1f; + internal unsafe delegate* glUniform1fARB; + internal unsafe delegate* glUniform1fv; + internal unsafe delegate* glUniform1fvARB; + internal unsafe delegate* glUniform1i; + internal unsafe delegate* glUniform1i64ARB; + internal unsafe delegate* glUniform1i64NV; + internal unsafe delegate* glUniform1i64vARB; + internal unsafe delegate* glUniform1i64vNV; + internal unsafe delegate* glUniform1iARB; + internal unsafe delegate* glUniform1iv; + internal unsafe delegate* glUniform1ivARB; + internal unsafe delegate* glUniform1ui; + internal unsafe delegate* glUniform1ui64ARB; + internal unsafe delegate* glUniform1ui64NV; + internal unsafe delegate* glUniform1ui64vARB; + internal unsafe delegate* glUniform1ui64vNV; + internal unsafe delegate* glUniform1uiEXT; + internal unsafe delegate* glUniform1uiv; + internal unsafe delegate* glUniform1uivEXT; + internal unsafe delegate* glUniform2d; + internal unsafe delegate* glUniform2dv; + internal unsafe delegate* glUniform2f; + internal unsafe delegate* glUniform2fARB; + internal unsafe delegate* glUniform2fv; + internal unsafe delegate* glUniform2fvARB; + internal unsafe delegate* glUniform2i; + internal unsafe delegate* glUniform2i64ARB; + internal unsafe delegate* glUniform2i64NV; + internal unsafe delegate* glUniform2i64vARB; + internal unsafe delegate* glUniform2i64vNV; + internal unsafe delegate* glUniform2iARB; + internal unsafe delegate* glUniform2iv; + internal unsafe delegate* glUniform2ivARB; + internal unsafe delegate* glUniform2ui; + internal unsafe delegate* glUniform2ui64ARB; + internal unsafe delegate* glUniform2ui64NV; + internal unsafe delegate* glUniform2ui64vARB; + internal unsafe delegate* glUniform2ui64vNV; + internal unsafe delegate* glUniform2uiEXT; + internal unsafe delegate* glUniform2uiv; + internal unsafe delegate* glUniform2uivEXT; + internal unsafe delegate* glUniform3d; + internal unsafe delegate* glUniform3dv; + internal unsafe delegate* glUniform3f; + internal unsafe delegate* glUniform3fARB; + internal unsafe delegate* glUniform3fv; + internal unsafe delegate* glUniform3fvARB; + internal unsafe delegate* glUniform3i; + internal unsafe delegate* glUniform3i64ARB; + internal unsafe delegate* glUniform3i64NV; + internal unsafe delegate* glUniform3i64vARB; + internal unsafe delegate* glUniform3i64vNV; + internal unsafe delegate* glUniform3iARB; + internal unsafe delegate* glUniform3iv; + internal unsafe delegate* glUniform3ivARB; + internal unsafe delegate* glUniform3ui; + internal unsafe delegate* glUniform3ui64ARB; + internal unsafe delegate* glUniform3ui64NV; + internal unsafe delegate* glUniform3ui64vARB; + internal unsafe delegate* glUniform3ui64vNV; + internal unsafe delegate* glUniform3uiEXT; + internal unsafe delegate* glUniform3uiv; + internal unsafe delegate* glUniform3uivEXT; + internal unsafe delegate* glUniform4d; + internal unsafe delegate* glUniform4dv; + internal unsafe delegate* glUniform4f; + internal unsafe delegate* glUniform4fARB; + internal unsafe delegate* glUniform4fv; + internal unsafe delegate* glUniform4fvARB; + internal unsafe delegate* glUniform4i; + internal unsafe delegate* glUniform4i64ARB; + internal unsafe delegate* glUniform4i64NV; + internal unsafe delegate* glUniform4i64vARB; + internal unsafe delegate* glUniform4i64vNV; + internal unsafe delegate* glUniform4iARB; + internal unsafe delegate* glUniform4iv; + internal unsafe delegate* glUniform4ivARB; + internal unsafe delegate* glUniform4ui; + internal unsafe delegate* glUniform4ui64ARB; + internal unsafe delegate* glUniform4ui64NV; + internal unsafe delegate* glUniform4ui64vARB; + internal unsafe delegate* glUniform4ui64vNV; + internal unsafe delegate* glUniform4uiEXT; + internal unsafe delegate* glUniform4uiv; + internal unsafe delegate* glUniform4uivEXT; + internal unsafe delegate* glUniformBlockBinding; + internal unsafe delegate* glUniformBufferEXT; + internal unsafe delegate* glUniformHandleui64ARB; + internal unsafe delegate* glUniformHandleui64NV; + internal unsafe delegate* glUniformHandleui64vARB; + internal unsafe delegate* glUniformHandleui64vNV; + internal unsafe delegate* glUniformMatrix2dv; + internal unsafe delegate* glUniformMatrix2fv; + internal unsafe delegate* glUniformMatrix2fvARB; + internal unsafe delegate* glUniformMatrix2x3dv; + internal unsafe delegate* glUniformMatrix2x3fv; + internal unsafe delegate* glUniformMatrix2x4dv; + internal unsafe delegate* glUniformMatrix2x4fv; + internal unsafe delegate* glUniformMatrix3dv; + internal unsafe delegate* glUniformMatrix3fv; + internal unsafe delegate* glUniformMatrix3fvARB; + internal unsafe delegate* glUniformMatrix3x2dv; + internal unsafe delegate* glUniformMatrix3x2fv; + internal unsafe delegate* glUniformMatrix3x4dv; + internal unsafe delegate* glUniformMatrix3x4fv; + internal unsafe delegate* glUniformMatrix4dv; + internal unsafe delegate* glUniformMatrix4fv; + internal unsafe delegate* glUniformMatrix4fvARB; + internal unsafe delegate* glUniformMatrix4x2dv; + internal unsafe delegate* glUniformMatrix4x2fv; + internal unsafe delegate* glUniformMatrix4x3dv; + internal unsafe delegate* glUniformMatrix4x3fv; + internal unsafe delegate* glUniformSubroutinesuiv; + internal unsafe delegate* glUniformui64NV; + internal unsafe delegate* glUniformui64vNV; + internal unsafe delegate* glUnlockArraysEXT; + internal unsafe delegate* glUnmapBuffer; + internal unsafe delegate* glUnmapBufferARB; + internal unsafe delegate* glUnmapNamedBuffer; + internal unsafe delegate* glUnmapNamedBufferEXT; + internal unsafe delegate* glUnmapObjectBufferATI; + internal unsafe delegate* glUnmapTexture2DINTEL; + internal unsafe delegate* glUpdateObjectBufferATI; + internal unsafe delegate* glUploadGpuMaskNVX; + internal unsafe delegate* glUseProgram; + internal unsafe delegate* glUseProgramObjectARB; + internal unsafe delegate* glUseProgramStages; + internal unsafe delegate* glUseShaderProgramEXT; + internal unsafe delegate* glVDPAUFiniNV; + internal unsafe delegate* glVDPAUGetSurfaceivNV; + internal unsafe delegate* glVDPAUInitNV; + internal unsafe delegate* glVDPAUIsSurfaceNV; + internal unsafe delegate* glVDPAUMapSurfacesNV; + internal unsafe delegate* glVDPAURegisterOutputSurfaceNV; + internal unsafe delegate* glVDPAURegisterVideoSurfaceNV; + internal unsafe delegate* glVDPAURegisterVideoSurfaceWithPictureStructureNV; + internal unsafe delegate* glVDPAUSurfaceAccessNV; + internal unsafe delegate* glVDPAUUnmapSurfacesNV; + internal unsafe delegate* glVDPAUUnregisterSurfaceNV; + internal unsafe delegate* glValidateProgram; + internal unsafe delegate* glValidateProgramARB; + internal unsafe delegate* glValidateProgramPipeline; + internal unsafe delegate* glVariantArrayObjectATI; + internal unsafe delegate* glVariantPointerEXT; + internal unsafe delegate* glVariantbvEXT; + internal unsafe delegate* glVariantdvEXT; + internal unsafe delegate* glVariantfvEXT; + internal unsafe delegate* glVariantivEXT; + internal unsafe delegate* glVariantsvEXT; + internal unsafe delegate* glVariantubvEXT; + internal unsafe delegate* glVariantuivEXT; + internal unsafe delegate* glVariantusvEXT; + internal unsafe delegate* glVertex2bOES; + internal unsafe delegate* glVertex2bvOES; + internal unsafe delegate* glVertex2hNV; + internal unsafe delegate* glVertex2hvNV; + internal unsafe delegate* glVertex2xOES; + internal unsafe delegate* glVertex2xvOES; + internal unsafe delegate* glVertex3bOES; + internal unsafe delegate* glVertex3bvOES; + internal unsafe delegate* glVertex3hNV; + internal unsafe delegate* glVertex3hvNV; + internal unsafe delegate* glVertex3xOES; + internal unsafe delegate* glVertex3xvOES; + internal unsafe delegate* glVertex4bOES; + internal unsafe delegate* glVertex4bvOES; + internal unsafe delegate* glVertex4hNV; + internal unsafe delegate* glVertex4hvNV; + internal unsafe delegate* glVertex4xOES; + internal unsafe delegate* glVertex4xvOES; + internal unsafe delegate* glVertexArrayAttribBinding; + internal unsafe delegate* glVertexArrayAttribFormat; + internal unsafe delegate* glVertexArrayAttribIFormat; + internal unsafe delegate* glVertexArrayAttribLFormat; + internal unsafe delegate* glVertexArrayBindVertexBufferEXT; + internal unsafe delegate* glVertexArrayBindingDivisor; + internal unsafe delegate* glVertexArrayColorOffsetEXT; + internal unsafe delegate* glVertexArrayEdgeFlagOffsetEXT; + internal unsafe delegate* glVertexArrayElementBuffer; + internal unsafe delegate* glVertexArrayFogCoordOffsetEXT; + internal unsafe delegate* glVertexArrayIndexOffsetEXT; + internal unsafe delegate* glVertexArrayMultiTexCoordOffsetEXT; + internal unsafe delegate* glVertexArrayNormalOffsetEXT; + internal unsafe delegate* glVertexArrayParameteriAPPLE; + internal unsafe delegate* glVertexArrayRangeAPPLE; + internal unsafe delegate* glVertexArrayRangeNV; + internal unsafe delegate* glVertexArraySecondaryColorOffsetEXT; + internal unsafe delegate* glVertexArrayTexCoordOffsetEXT; + internal unsafe delegate* glVertexArrayVertexAttribBindingEXT; + internal unsafe delegate* glVertexArrayVertexAttribDivisorEXT; + internal unsafe delegate* glVertexArrayVertexAttribFormatEXT; + internal unsafe delegate* glVertexArrayVertexAttribIFormatEXT; + internal unsafe delegate* glVertexArrayVertexAttribIOffsetEXT; + internal unsafe delegate* glVertexArrayVertexAttribLFormatEXT; + internal unsafe delegate* glVertexArrayVertexAttribLOffsetEXT; + internal unsafe delegate* glVertexArrayVertexAttribOffsetEXT; + internal unsafe delegate* glVertexArrayVertexBindingDivisorEXT; + internal unsafe delegate* glVertexArrayVertexBuffer; + internal unsafe delegate* glVertexArrayVertexBuffers; + internal unsafe delegate* glVertexArrayVertexOffsetEXT; + internal unsafe delegate* glVertexAttrib1d; + internal unsafe delegate* glVertexAttrib1dARB; + internal unsafe delegate* glVertexAttrib1dNV; + internal unsafe delegate* glVertexAttrib1dv; + internal unsafe delegate* glVertexAttrib1dvARB; + internal unsafe delegate* glVertexAttrib1dvNV; + internal unsafe delegate* glVertexAttrib1f; + internal unsafe delegate* glVertexAttrib1fARB; + internal unsafe delegate* glVertexAttrib1fNV; + internal unsafe delegate* glVertexAttrib1fv; + internal unsafe delegate* glVertexAttrib1fvARB; + internal unsafe delegate* glVertexAttrib1fvNV; + internal unsafe delegate* glVertexAttrib1hNV; + internal unsafe delegate* glVertexAttrib1hvNV; + internal unsafe delegate* glVertexAttrib1s; + internal unsafe delegate* glVertexAttrib1sARB; + internal unsafe delegate* glVertexAttrib1sNV; + internal unsafe delegate* glVertexAttrib1sv; + internal unsafe delegate* glVertexAttrib1svARB; + internal unsafe delegate* glVertexAttrib1svNV; + internal unsafe delegate* glVertexAttrib2d; + internal unsafe delegate* glVertexAttrib2dARB; + internal unsafe delegate* glVertexAttrib2dNV; + internal unsafe delegate* glVertexAttrib2dv; + internal unsafe delegate* glVertexAttrib2dvARB; + internal unsafe delegate* glVertexAttrib2dvNV; + internal unsafe delegate* glVertexAttrib2f; + internal unsafe delegate* glVertexAttrib2fARB; + internal unsafe delegate* glVertexAttrib2fNV; + internal unsafe delegate* glVertexAttrib2fv; + internal unsafe delegate* glVertexAttrib2fvARB; + internal unsafe delegate* glVertexAttrib2fvNV; + internal unsafe delegate* glVertexAttrib2hNV; + internal unsafe delegate* glVertexAttrib2hvNV; + internal unsafe delegate* glVertexAttrib2s; + internal unsafe delegate* glVertexAttrib2sARB; + internal unsafe delegate* glVertexAttrib2sNV; + internal unsafe delegate* glVertexAttrib2sv; + internal unsafe delegate* glVertexAttrib2svARB; + internal unsafe delegate* glVertexAttrib2svNV; + internal unsafe delegate* glVertexAttrib3d; + internal unsafe delegate* glVertexAttrib3dARB; + internal unsafe delegate* glVertexAttrib3dNV; + internal unsafe delegate* glVertexAttrib3dv; + internal unsafe delegate* glVertexAttrib3dvARB; + internal unsafe delegate* glVertexAttrib3dvNV; + internal unsafe delegate* glVertexAttrib3f; + internal unsafe delegate* glVertexAttrib3fARB; + internal unsafe delegate* glVertexAttrib3fNV; + internal unsafe delegate* glVertexAttrib3fv; + internal unsafe delegate* glVertexAttrib3fvARB; + internal unsafe delegate* glVertexAttrib3fvNV; + internal unsafe delegate* glVertexAttrib3hNV; + internal unsafe delegate* glVertexAttrib3hvNV; + internal unsafe delegate* glVertexAttrib3s; + internal unsafe delegate* glVertexAttrib3sARB; + internal unsafe delegate* glVertexAttrib3sNV; + internal unsafe delegate* glVertexAttrib3sv; + internal unsafe delegate* glVertexAttrib3svARB; + internal unsafe delegate* glVertexAttrib3svNV; + internal unsafe delegate* glVertexAttrib4Nbv; + internal unsafe delegate* glVertexAttrib4NbvARB; + internal unsafe delegate* glVertexAttrib4Niv; + internal unsafe delegate* glVertexAttrib4NivARB; + internal unsafe delegate* glVertexAttrib4Nsv; + internal unsafe delegate* glVertexAttrib4NsvARB; + internal unsafe delegate* glVertexAttrib4Nub; + internal unsafe delegate* glVertexAttrib4NubARB; + internal unsafe delegate* glVertexAttrib4Nubv; + internal unsafe delegate* glVertexAttrib4NubvARB; + internal unsafe delegate* glVertexAttrib4Nuiv; + internal unsafe delegate* glVertexAttrib4NuivARB; + internal unsafe delegate* glVertexAttrib4Nusv; + internal unsafe delegate* glVertexAttrib4NusvARB; + internal unsafe delegate* glVertexAttrib4bv; + internal unsafe delegate* glVertexAttrib4bvARB; + internal unsafe delegate* glVertexAttrib4d; + internal unsafe delegate* glVertexAttrib4dARB; + internal unsafe delegate* glVertexAttrib4dNV; + internal unsafe delegate* glVertexAttrib4dv; + internal unsafe delegate* glVertexAttrib4dvARB; + internal unsafe delegate* glVertexAttrib4dvNV; + internal unsafe delegate* glVertexAttrib4f; + internal unsafe delegate* glVertexAttrib4fARB; + internal unsafe delegate* glVertexAttrib4fNV; + internal unsafe delegate* glVertexAttrib4fv; + internal unsafe delegate* glVertexAttrib4fvARB; + internal unsafe delegate* glVertexAttrib4fvNV; + internal unsafe delegate* glVertexAttrib4hNV; + internal unsafe delegate* glVertexAttrib4hvNV; + internal unsafe delegate* glVertexAttrib4iv; + internal unsafe delegate* glVertexAttrib4ivARB; + internal unsafe delegate* glVertexAttrib4s; + internal unsafe delegate* glVertexAttrib4sARB; + internal unsafe delegate* glVertexAttrib4sNV; + internal unsafe delegate* glVertexAttrib4sv; + internal unsafe delegate* glVertexAttrib4svARB; + internal unsafe delegate* glVertexAttrib4svNV; + internal unsafe delegate* glVertexAttrib4ubNV; + internal unsafe delegate* glVertexAttrib4ubv; + internal unsafe delegate* glVertexAttrib4ubvARB; + internal unsafe delegate* glVertexAttrib4ubvNV; + internal unsafe delegate* glVertexAttrib4uiv; + internal unsafe delegate* glVertexAttrib4uivARB; + internal unsafe delegate* glVertexAttrib4usv; + internal unsafe delegate* glVertexAttrib4usvARB; + internal unsafe delegate* glVertexAttribArrayObjectATI; + internal unsafe delegate* glVertexAttribBinding; + internal unsafe delegate* glVertexAttribDivisor; + internal unsafe delegate* glVertexAttribDivisorARB; + internal unsafe delegate* glVertexAttribFormat; + internal unsafe delegate* glVertexAttribFormatNV; + internal unsafe delegate* glVertexAttribI1i; + internal unsafe delegate* glVertexAttribI1iEXT; + internal unsafe delegate* glVertexAttribI1iv; + internal unsafe delegate* glVertexAttribI1ivEXT; + internal unsafe delegate* glVertexAttribI1ui; + internal unsafe delegate* glVertexAttribI1uiEXT; + internal unsafe delegate* glVertexAttribI1uiv; + internal unsafe delegate* glVertexAttribI1uivEXT; + internal unsafe delegate* glVertexAttribI2i; + internal unsafe delegate* glVertexAttribI2iEXT; + internal unsafe delegate* glVertexAttribI2iv; + internal unsafe delegate* glVertexAttribI2ivEXT; + internal unsafe delegate* glVertexAttribI2ui; + internal unsafe delegate* glVertexAttribI2uiEXT; + internal unsafe delegate* glVertexAttribI2uiv; + internal unsafe delegate* glVertexAttribI2uivEXT; + internal unsafe delegate* glVertexAttribI3i; + internal unsafe delegate* glVertexAttribI3iEXT; + internal unsafe delegate* glVertexAttribI3iv; + internal unsafe delegate* glVertexAttribI3ivEXT; + internal unsafe delegate* glVertexAttribI3ui; + internal unsafe delegate* glVertexAttribI3uiEXT; + internal unsafe delegate* glVertexAttribI3uiv; + internal unsafe delegate* glVertexAttribI3uivEXT; + internal unsafe delegate* glVertexAttribI4bv; + internal unsafe delegate* glVertexAttribI4bvEXT; + internal unsafe delegate* glVertexAttribI4i; + internal unsafe delegate* glVertexAttribI4iEXT; + internal unsafe delegate* glVertexAttribI4iv; + internal unsafe delegate* glVertexAttribI4ivEXT; + internal unsafe delegate* glVertexAttribI4sv; + internal unsafe delegate* glVertexAttribI4svEXT; + internal unsafe delegate* glVertexAttribI4ubv; + internal unsafe delegate* glVertexAttribI4ubvEXT; + internal unsafe delegate* glVertexAttribI4ui; + internal unsafe delegate* glVertexAttribI4uiEXT; + internal unsafe delegate* glVertexAttribI4uiv; + internal unsafe delegate* glVertexAttribI4uivEXT; + internal unsafe delegate* glVertexAttribI4usv; + internal unsafe delegate* glVertexAttribI4usvEXT; + internal unsafe delegate* glVertexAttribIFormat; + internal unsafe delegate* glVertexAttribIFormatNV; + internal unsafe delegate* glVertexAttribIPointer; + internal unsafe delegate* glVertexAttribIPointerEXT; + internal unsafe delegate* glVertexAttribL1d; + internal unsafe delegate* glVertexAttribL1dEXT; + internal unsafe delegate* glVertexAttribL1dv; + internal unsafe delegate* glVertexAttribL1dvEXT; + internal unsafe delegate* glVertexAttribL1i64NV; + internal unsafe delegate* glVertexAttribL1i64vNV; + internal unsafe delegate* glVertexAttribL1ui64ARB; + internal unsafe delegate* glVertexAttribL1ui64NV; + internal unsafe delegate* glVertexAttribL1ui64vARB; + internal unsafe delegate* glVertexAttribL1ui64vNV; + internal unsafe delegate* glVertexAttribL2d; + internal unsafe delegate* glVertexAttribL2dEXT; + internal unsafe delegate* glVertexAttribL2dv; + internal unsafe delegate* glVertexAttribL2dvEXT; + internal unsafe delegate* glVertexAttribL2i64NV; + internal unsafe delegate* glVertexAttribL2i64vNV; + internal unsafe delegate* glVertexAttribL2ui64NV; + internal unsafe delegate* glVertexAttribL2ui64vNV; + internal unsafe delegate* glVertexAttribL3d; + internal unsafe delegate* glVertexAttribL3dEXT; + internal unsafe delegate* glVertexAttribL3dv; + internal unsafe delegate* glVertexAttribL3dvEXT; + internal unsafe delegate* glVertexAttribL3i64NV; + internal unsafe delegate* glVertexAttribL3i64vNV; + internal unsafe delegate* glVertexAttribL3ui64NV; + internal unsafe delegate* glVertexAttribL3ui64vNV; + internal unsafe delegate* glVertexAttribL4d; + internal unsafe delegate* glVertexAttribL4dEXT; + internal unsafe delegate* glVertexAttribL4dv; + internal unsafe delegate* glVertexAttribL4dvEXT; + internal unsafe delegate* glVertexAttribL4i64NV; + internal unsafe delegate* glVertexAttribL4i64vNV; + internal unsafe delegate* glVertexAttribL4ui64NV; + internal unsafe delegate* glVertexAttribL4ui64vNV; + internal unsafe delegate* glVertexAttribLFormat; + internal unsafe delegate* glVertexAttribLFormatNV; + internal unsafe delegate* glVertexAttribLPointer; + internal unsafe delegate* glVertexAttribLPointerEXT; + internal unsafe delegate* glVertexAttribP1ui; + internal unsafe delegate* glVertexAttribP1uiv; + internal unsafe delegate* glVertexAttribP2ui; + internal unsafe delegate* glVertexAttribP2uiv; + internal unsafe delegate* glVertexAttribP3ui; + internal unsafe delegate* glVertexAttribP3uiv; + internal unsafe delegate* glVertexAttribP4ui; + internal unsafe delegate* glVertexAttribP4uiv; + internal unsafe delegate* glVertexAttribParameteriAMD; + internal unsafe delegate* glVertexAttribPointer; + internal unsafe delegate* glVertexAttribPointerARB; + internal unsafe delegate* glVertexAttribPointerNV; + internal unsafe delegate* glVertexAttribs1dvNV; + internal unsafe delegate* glVertexAttribs1fvNV; + internal unsafe delegate* glVertexAttribs1hvNV; + internal unsafe delegate* glVertexAttribs1svNV; + internal unsafe delegate* glVertexAttribs2dvNV; + internal unsafe delegate* glVertexAttribs2fvNV; + internal unsafe delegate* glVertexAttribs2hvNV; + internal unsafe delegate* glVertexAttribs2svNV; + internal unsafe delegate* glVertexAttribs3dvNV; + internal unsafe delegate* glVertexAttribs3fvNV; + internal unsafe delegate* glVertexAttribs3hvNV; + internal unsafe delegate* glVertexAttribs3svNV; + internal unsafe delegate* glVertexAttribs4dvNV; + internal unsafe delegate* glVertexAttribs4fvNV; + internal unsafe delegate* glVertexAttribs4hvNV; + internal unsafe delegate* glVertexAttribs4svNV; + internal unsafe delegate* glVertexAttribs4ubvNV; + internal unsafe delegate* glVertexBindingDivisor; + internal unsafe delegate* glVertexBlendARB; + internal unsafe delegate* glVertexBlendEnvfATI; + internal unsafe delegate* glVertexBlendEnviATI; + internal unsafe delegate* glVertexFormatNV; + internal unsafe delegate* glVertexPointerEXT; + internal unsafe delegate* glVertexPointerListIBM; + internal unsafe delegate* glVertexPointervINTEL; + internal unsafe delegate* glVertexStream1dATI; + internal unsafe delegate* glVertexStream1dvATI; + internal unsafe delegate* glVertexStream1fATI; + internal unsafe delegate* glVertexStream1fvATI; + internal unsafe delegate* glVertexStream1iATI; + internal unsafe delegate* glVertexStream1ivATI; + internal unsafe delegate* glVertexStream1sATI; + internal unsafe delegate* glVertexStream1svATI; + internal unsafe delegate* glVertexStream2dATI; + internal unsafe delegate* glVertexStream2dvATI; + internal unsafe delegate* glVertexStream2fATI; + internal unsafe delegate* glVertexStream2fvATI; + internal unsafe delegate* glVertexStream2iATI; + internal unsafe delegate* glVertexStream2ivATI; + internal unsafe delegate* glVertexStream2sATI; + internal unsafe delegate* glVertexStream2svATI; + internal unsafe delegate* glVertexStream3dATI; + internal unsafe delegate* glVertexStream3dvATI; + internal unsafe delegate* glVertexStream3fATI; + internal unsafe delegate* glVertexStream3fvATI; + internal unsafe delegate* glVertexStream3iATI; + internal unsafe delegate* glVertexStream3ivATI; + internal unsafe delegate* glVertexStream3sATI; + internal unsafe delegate* glVertexStream3svATI; + internal unsafe delegate* glVertexStream4dATI; + internal unsafe delegate* glVertexStream4dvATI; + internal unsafe delegate* glVertexStream4fATI; + internal unsafe delegate* glVertexStream4fvATI; + internal unsafe delegate* glVertexStream4iATI; + internal unsafe delegate* glVertexStream4ivATI; + internal unsafe delegate* glVertexStream4sATI; + internal unsafe delegate* glVertexStream4svATI; + internal unsafe delegate* glVertexWeightPointerEXT; + internal unsafe delegate* glVertexWeightfEXT; + internal unsafe delegate* glVertexWeightfvEXT; + internal unsafe delegate* glVertexWeighthNV; + internal unsafe delegate* glVertexWeighthvNV; + internal unsafe delegate* glVideoCaptureNV; + internal unsafe delegate* glVideoCaptureStreamParameterdvNV; + internal unsafe delegate* glVideoCaptureStreamParameterfvNV; + internal unsafe delegate* glVideoCaptureStreamParameterivNV; + internal unsafe delegate* glViewport; + internal unsafe delegate* glViewportArrayv; + internal unsafe delegate* glViewportIndexedf; + internal unsafe delegate* glViewportIndexedfv; + internal unsafe delegate* glViewportPositionWScaleNV; + internal unsafe delegate* glViewportSwizzleNV; + internal unsafe delegate* glWaitSemaphoreEXT; + internal unsafe delegate* glWaitSemaphoreui64NVX; + internal unsafe delegate* glWaitSync; + internal unsafe delegate* glWaitVkSemaphoreNV; + internal unsafe delegate* glWeightPathsNV; + internal unsafe delegate* glWeightPointerARB; + internal unsafe delegate* glWeightbvARB; + internal unsafe delegate* glWeightdvARB; + internal unsafe delegate* glWeightfvARB; + internal unsafe delegate* glWeightivARB; + internal unsafe delegate* glWeightsvARB; + internal unsafe delegate* glWeightubvARB; + internal unsafe delegate* glWeightuivARB; + internal unsafe delegate* glWeightusvARB; + internal unsafe delegate* glWindowPos2dARB; + internal unsafe delegate* glWindowPos2dMESA; + internal unsafe delegate* glWindowPos2dvARB; + internal unsafe delegate* glWindowPos2dvMESA; + internal unsafe delegate* glWindowPos2fARB; + internal unsafe delegate* glWindowPos2fMESA; + internal unsafe delegate* glWindowPos2fvARB; + internal unsafe delegate* glWindowPos2fvMESA; + internal unsafe delegate* glWindowPos2iARB; + internal unsafe delegate* glWindowPos2iMESA; + internal unsafe delegate* glWindowPos2ivARB; + internal unsafe delegate* glWindowPos2ivMESA; + internal unsafe delegate* glWindowPos2sARB; + internal unsafe delegate* glWindowPos2sMESA; + internal unsafe delegate* glWindowPos2svARB; + internal unsafe delegate* glWindowPos2svMESA; + internal unsafe delegate* glWindowPos3dARB; + internal unsafe delegate* glWindowPos3dMESA; + internal unsafe delegate* glWindowPos3dvARB; + internal unsafe delegate* glWindowPos3dvMESA; + internal unsafe delegate* glWindowPos3fARB; + internal unsafe delegate* glWindowPos3fMESA; + internal unsafe delegate* glWindowPos3fvARB; + internal unsafe delegate* glWindowPos3fvMESA; + internal unsafe delegate* glWindowPos3iARB; + internal unsafe delegate* glWindowPos3iMESA; + internal unsafe delegate* glWindowPos3ivARB; + internal unsafe delegate* glWindowPos3ivMESA; + internal unsafe delegate* glWindowPos3sARB; + internal unsafe delegate* glWindowPos3sMESA; + internal unsafe delegate* glWindowPos3svARB; + internal unsafe delegate* glWindowPos3svMESA; + internal unsafe delegate* glWindowPos4dMESA; + internal unsafe delegate* glWindowPos4dvMESA; + internal unsafe delegate* glWindowPos4fMESA; + internal unsafe delegate* glWindowPos4fvMESA; + internal unsafe delegate* glWindowPos4iMESA; + internal unsafe delegate* glWindowPos4ivMESA; + internal unsafe delegate* glWindowPos4sMESA; + internal unsafe delegate* glWindowPos4svMESA; + internal unsafe delegate* glWindowRectanglesEXT; + internal unsafe delegate* glWriteMaskEXT; + + #endregion glapi + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glEnum.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glEnum.cs new file mode 100644 index 00000000..4dd00bbc --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glEnum.cs @@ -0,0 +1,211 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glEnum.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.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public enum PixelChannelLayout + { + UByte = glConst.UNSIGNED_BYTE, + Byte = glConst.BYTE, + UShort = glConst.UNSIGNED_SHORT, + Short = glConst.SHORT, + UInt = glConst.UNSIGNED_INT, + Int = glConst.INT, + Float = glConst.FLOAT, + 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 + + } + + public enum FrameBufferChannel + { + + STENCIL_INDEX = glConst.STENCIL_INDEX, + DEPTH_COMPONENT = glConst.DEPTH_COMPONENT, + DEPTH_STENCIL = glConst.DEPTH_STENCIL, + RED = glConst.RED, + GREEN = glConst.GREEN, + BLUE = glConst.BLUE, + RGB = glConst.RGB, + BGR = glConst.BGR, + RGBA = glConst.RGBA, + BGRA = glConst.BGRA + + } + + public enum FrameBufferAttachment + { + + Color = glConst.COLOR_ATTACHMENT0, + Depth = glConst.DEPTH_ATTACHMENT, + Stencil = glConst.STENCIL_ATTACHMENT, + DepthAndStencil = glConst.DEPTH_STENCIL_ATTACHMENT, + + } + + public enum Texture2DTarget + { + + Texture2D = glConst.TEXTURE_2D, + ProxyTexture2D = glConst.PROXY_TEXTURE_2D, + Texture1DArray = glConst.TEXTURE_1D_ARRAY, + ProxyTexture1DArray = glConst.PROXY_TEXTURE_1D_ARRAY, + TextureRectangle = glConst.TEXTURE_RECTANGLE, + ProxyTextureRectangle = glConst.PROXY_TEXTURE_RECTANGLE, + TextureCubeMapPositiveX = glConst.TEXTURE_CUBE_MAP_POSITIVE_X, + TextureCubeMapNegativeX = glConst.TEXTURE_CUBE_MAP_NEGATIVE_X, + TextureCubeMapPositiveY = glConst.TEXTURE_CUBE_MAP_POSITIVE_Y, + TextureCubeMapNegativeY = glConst.TEXTURE_CUBE_MAP_NEGATIVE_Y, + TextureCubeMapPositiveZ = glConst.TEXTURE_CUBE_MAP_POSITIVE_Z, + TextureCubeMapNegativeZ = glConst.TEXTURE_CUBE_MAP_NEGATIVE_Z, + ProxyTextureCubeMap = glConst.PROXY_TEXTURE_CUBE_MAP + + } + + public enum RenderBufferInternalFormat : uint + { + + RGBA8 = glConst.RGBA8, + Depth24_Stencil8 = glConst.DEPTH24_STENCIL8, + + } + + public enum glOperation : uint + { + StencilTest = glConst.STENCIL_TEST, + } + +#pragma warning disable CA1008 + public enum ShaderType : int +#pragma warning restore CA1008 + { + + Fragment = glConst.FRAGMENT_SHADER, + Vertex = glConst.VERTEX_SHADER, + Compute = glConst.COMPUTE_SHADER, + Geometry = glConst.GEOMETRY_SHADER, + + } + +#pragma warning disable CA1008 + public enum BufferType : int +#pragma warning restore CA1008 + { + + ArrayBuffer = glConst.ARRAY_BUFFER, + ElementArrayBuffer = glConst.ELEMENT_ARRAY_BUFFER, + AtomicCounterBuffer = glConst.ATOMIC_COUNTER_BUFFER, + CopyHeadBuffer = glConst.COPY_READ_BUFFER, + COPY_WRITE_BUFFER = glConst.COPY_WRITE_BUFFER, + DISPATCH_INDIRECT_BUFFER = glConst.DISPATCH_INDIRECT_BUFFER, + DRAW_INDIRECT_BUFFER = glConst.DRAW_INDIRECT_BUFFER, + PIXEL_PACK_BUFFER = glConst.PIXEL_PACK_BUFFER, + PIXEL_UNPACK_BUFFER = glConst.PIXEL_UNPACK_BUFFER, + QUERY_BUFFER = glConst.QUERY_BUFFER, + ShaderStorageBuffer = glConst.SHADER_STORAGE_BUFFER, + TEXTURE_BUFFER = glConst.TEXTURE_BUFFER, + TRANSFORM_FEEDBACK_BUFFER = glConst.TRANSFORM_FEEDBACK_BUFFER, + UNIFORM_BUFFER = glConst.UNIFORM_BUFFER, + + } + +#pragma warning disable CA1008 + public enum BufferUsage : int +#pragma warning restore CA1008 + { + + StreamDraw = 0x88E0, + StreamRead = 0x88E1, + StreamCopy = 0x88E2, + StaticDraw = 0x88E4, + StaticRead = 0x88E5, + StaticCopy = 0x88E6, + DynamicDraw = 0x88E8, + DynamicRead = 0x88E9, + DynamicCopy = 0x88EA + + } + + public enum MaskBufferBit + { + + COLOR = glConst.COLOR_BUFFER_BIT, + DEPTH = glConst.DEPTH_BUFFER_BIT, + STENCIL = glConst.STENCIL_BUFFER_BIT, + + } + + public enum GeometryType : uint + { + + POINTS = 0x0000, + LINES = 0x0001, + LINE_LOOP = 0x0002, + LINE_STRIP = 0x0003, + TRIANGLES = 0x0004, + TRIANGLE_STRIP = 0x0005, + TRIANGLE_FAN = 0x0006 + + } + + public enum TextureFiltering + { + + Nearest = 0x2600, + Linear = 0x2601 + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glException.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glException.cs new file mode 100644 index 00000000..6f6b902f --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glException.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glException.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.Diagnostics; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.Serialization; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed class GlErrorOverflowException : Exception + { + + public GlErrorOverflowException( int errorCount, uint errorCode ) + : base( + "Too many opengl error detected at certain position. " + $"The amount of errors exceeds {errorCount}. " + $"Code of the last error is {errorCode}" ) { } + + } + + public sealed class GlExecutionException : Exception + { + + public GlExecutionException( uint errorCode ) + : base( $"Critical OpenGL error: {errorCode}" ) { } + + } + + public sealed class GlArrayFormatException : Exception + { + + 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 GlArrayFormatException( + PixelChannelLayout layout, + string arrayname ) + : base( $"{arrayname} cannot be used as layout of {layout}" ) { } + + } + + 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.Common/Graphics/OpenGL/glFucntionSourceManager.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs new file mode 100644 index 00000000..0853b013 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glFucntionSourceManager.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 System; +using System.Collections.Concurrent; +using System.Collections.Generic; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class OpenGLFunction + { + + private Lazy textureUnitCountGetter; + private Lazy> unusedTextureImageUintInitilizing; + + public int TextureUnitCount + { + get => textureUnitCountGetter.Value; + } + + private ConcurrentQueue UnusedTextureImageUint + { + get => unusedTextureImageUintInitilizing.Value; + } + + internal void ReturnAvailableUnit( IEnumerable source ) + { + int v = glConst.TEXTURE0 + TextureUnitCount; + foreach( TextureUnit unit in source ) { + if( ( int )unit > v ) { + throw new InvalidOperationException( + "Source contains texture unit beyond context support." ); + } + } + } + + internal int TryGetAvailableTextureUnit( + int count, + out IEnumerable result ) + { + result = new Queue(); + for( int i = 0; i < count; i++ ) { + if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) { + ( result as Queue )!.Enqueue( unit ); + } else { + return i; + } + } + return count; + } + + private ConcurrentQueue InitializeUnusedTextureImageUint() + { + ConcurrentQueue result = new ConcurrentQueue( + ); + for( int index = 0; index < TextureUnitCount; index++ ) { + result.Enqueue( ( TextureUnit )( glConst.TEXTURE0 + index ) ); + } + return result; + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glFunction.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glFunction.cs new file mode 100644 index 00000000..ec942da1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glFunction.cs @@ -0,0 +1,841 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Internal; +using StgSharp.Math; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + private static Dictionary contextToGLMap = new Dictionary( + ); + private static ThreadLocal _currentGL = new ThreadLocal( + ); + private OpenglContext* _context; + + private Lazy _attachmentColorRange; + + private OpenGLFunction() + { + textureUnitCountGetter = new Lazy( + () => GetMaskInteger( glConst.MAX_TEXTURE_IMAGE_UNITS ) ); + unusedTextureImageUintInitilizing = new Lazy>( + InitializeUnusedTextureImageUint ); + _attachmentColorRange = new Lazy( + () => { + return GetMaskInteger( + ( uint )glConst.MAX_COLOR_ATTACHMENTS ); + } ); + } + + public int AttachmentColorRange + { + get => _attachmentColorRange.Value; + } + + public static OpenGLFunction CurrentGL + { + get { return _currentGL.Value; } + internal set { _currentGL.Value = value; } + } + + internal IntPtr ContextHandle => ( IntPtr )_context; + + protected ref OpenglContext Context + { + get + { + #if DEBUG + if( ( IntPtr )_context == IntPtr.Zero ) { + throw new NullReferenceException(); + } + #endif + return ref ( *_context ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void ActiveTextureUnit( uint type ) + { + Context.glActiveTexture( type ); + } + + [Conditional( "DEBUG" )] + public void Assert( bool shouldReportWhenNormal ) + { + uint code = Context.glGetError(); + if( code != glConst.NO_ERROR ) { + throw new GlExecutionException( code ); + } + if( shouldReportWhenNormal ) { + Console.WriteLine( "OpenGL runs normally" ); + } + } + + [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() + { + uint code = 0; + for( int i = 0; i < 1024; i++ ) { + code = Context.glGetError(); + if( code == 0 ) { + return; + } + + //Console.WriteLine(code); + } + foreach( ProcessThread thread in Process.GetCurrentProcess().Threads ) { + Debugger.Break(); + } + throw new GlErrorOverflowException( 1024, code ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void ClearGraphicError() + { + while( Context.glGetError() != 0 ) { } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CombineFrameBufferRenderBuffer( + FrameBufferAttachment attachment, + GlHandle rboHandle ) + { + Context.glFramebufferRenderbuffer( + glConst.FRAMEBUFFER, ( uint )attachment, 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 ); + } + } + } + + /// + /// Delete a render buffer object Very simlilar function as glDeleteRenderbuffers. The only + /// deifference is that this mehtod can only delete one renderbuffer at the same time. + /// + /// Handle to buffer to delete. + public unsafe void DeleteRenderBuffer( GlHandle bufferHandle ) + { + Context.glDeleteRenderbuffers( 1, &bufferHandle.Value ); + } + + [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; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void GenerateMipmap( Texture2DTarget target ) + { + Context.glGenerateMipmap( ( uint )target ); + } + + 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 void GetTextureLevelProperty( + uint textureTypeMask, + int level, + uint propertyMask, + out int propertyValue ) + { + fixed( int* iptr = &propertyValue ) { + Context.glGetTexLevelParameteriv( + textureTypeMask, level, propertyMask, iptr ); + } + } + + [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 ); + } + } + + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + ReadOnlySpan codeStream) + { + fixed (char* streamPtr = codeStream) + { + byte* bptr = (byte*)streamPtr; + Context.glShaderSource( + shaderHandle.Value, 1, &bptr, (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 ); + } + i.PixelUpdateCount++; + } + + [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 unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (uint width, uint height) size ) + { + Context.glRenderbufferStorage( + glConst.RENDERBUFFER, ( uint )internalFormat, ( int )size.width, + ( int )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, + ImageChannel sourceChannel, + uint width, + uint height, + ImageChannel targetChannel, + PixelChannelLayout type, + T[] pixels ) + where T: struct, +#if NET8_0_OR_GREATER + INumber +#else + IConvertible + #endif + { + #pragma warning disable CS8500 + fixed( T* tptr = pixels ) { + T* ptr = ( ( pixels == null ) || ( pixels.Length == 0 ) ) ? + ( T* )IntPtr.Zero : tptr; + Context.glTexImage2D( + ( uint )target, level, ( uint )sourceChannel, width, height, + 0, ( uint )targetChannel, ( uint )type, tptr ); + } + #pragma warning restore CS8500 + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + uint width, + uint height, + ImageChannel targetChannel, + 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, ( uint )sourceChannel, width, height, + 0, ( uint )targetChannel, ( 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 OpenGLFunction 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 OpenGLFunction BuildGlFunctionPackage( IntPtr handle ) + { + OpenGLFunction pack; + if( contextToGLMap.TryGetValue( handle, out pack ) ) { + return pack; + } + pack = new OpenGLFunction { _context = ( OpenglContext* )handle }; + contextToGLMap.Add( handle, pack ); + return pack; + } + + ~OpenGLFunction() + { + contextToGLMap.Remove( ContextHandle ); + } + + } +} + diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs new file mode 100644 index 00000000..47e5e0f2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glHalfNV.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.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal.OpenGL +{ + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct glHalfNV + { + + [FieldOffset( 0 )] public short binary; + + public glHalfNV( short bin ) + { + binary = bin; + } + + public static glHalfNV FromInt16(short x) + { + return new glHalfNV(x); + } + + public static explicit operator glHalfNV( short x ) + { + return new glHalfNV( x ); + } + + public static short ToInt16(glHalfNV half) + { + return half.binary; + } + + public static explicit operator short( glHalfNV x ) + { + return x.binary; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glHandle.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glHandle.cs new file mode 100644 index 00000000..fd94a7ad --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glHandle.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +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 int SignedValue; + [FieldOffset( 0 )] public uint Value; + + public static GlHandle Zero + { + get => new GlHandle { Value = 0 }; + } + + [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 }; + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs new file mode 100644 index 00000000..045376c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderSourceGenrator.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.Concurrent; +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 glRender + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected AutoTextureGL CreateAutoTexture( int count ) + { + return new AutoTextureGL( count, this ); + } + + /// + /// 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 FrameBuffer CreateFrameBuffer( int count ) + { + return new FrameBuffer( count, this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected RenderBuffer CreateRenderBuffer( int count ) + { + return new RenderBuffer( 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.Common/Graphics/OpenGL/glRenderStream.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs new file mode 100644 index 00000000..478b6ef9 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs @@ -0,0 +1,191 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Math; +using StgSharp.Threading; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract partial class glRender : RenderStream + { + + private protected static readonly ConcurrentDictionary renderToThread + = new ConcurrentDictionary(); + + private OpenGLFunction _context; + + protected internal OpenGLFunction GL + { + get { return _context; } + } + + /// + /// Initialize an opengl context and load all opengl functions. + /// + public unsafe void InitializeContext() + { + if( ContextHandle == default ) { + ContextHandle = Marshal.AllocHGlobal( + Marshal.SizeOf( typeof( OpenglContext ) ) ); + OpenglContext* contextID = ( OpenglContext* )ContextHandle; + contextID->glGetString = ( delegate* )IntPtr.Zero; + } + if( GL == null ) { + _context = OpenGLFunction.BuildGlFunctionPackage( + ContextHandle ); + } + } + + /// + /// Initialize 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() + { + InternalIO.glfwMakeContextCurrent( CanvasHandle ); + OpenGLFunction.CurrentGL = this.GL; + } + + /// + public override void RenderEnd() + { + if( !renderToThread.TryGetValue( this, + out Thread t ) || t != Thread.CurrentThread ) { + throw new InvalidOperationException( + $"Current render has had been binded to thread {t!.ManagedThreadId}" ); + } + SwapBuffers(); + renderToThread[ this ] = ThreadHelper.EmptyThread; + InternalIO.glfwMakeContextCurrent( IntPtr.Zero ); + OpenGLFunction.CurrentGL = null; + } + + /// + public override void RenderStart() + { + Thread current = Thread.CurrentThread; + if( !renderToThread.TryGetValue( this, + out Thread t ) || t == ThreadHelper.EmptyThread ) { + renderToThread[ this ] = current; + MakeAsCurrentContext(); + return; + } + if( t != current ) { + throw new InvalidOperationException( + $"Current render has had been binded to thread {t!.ManagedThreadId}" ); + } + } + + [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 PlatformSpecifiedInitialize() + { + InitializeContext(); + MakeAsCurrentContext(); + glManager.LoadOpenGLApiTo( BindedViewPortContext.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, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ) + { + NativeCamera.SetViewRange( + fieldOfRange, this.Size, offset, viewDepth ); + } + + protected override sealed void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 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.Common/Graphics/OpenGL/glRenderThreadSecurity.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderThreadSecurity.cs new file mode 100644 index 00000000..c0dca674 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glRenderThreadSecurity.cs @@ -0,0 +1,49 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderThreadSecurity.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.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class glRender + { + + private static ConcurrentDictionary threadLocalIndex + = new ConcurrentDictionary(); + private readonly SynchronizationContext mainThreadContext = SynchronizationContext.Current; + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/OpenGL/glType.cs b/内核源代码/StgSharp.Common/Graphics/OpenGL/glType.cs new file mode 100644 index 00000000..d4f7dfc1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/OpenGL/glType.cs @@ -0,0 +1,148 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glType.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.Collections.ObjectModel; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal.OpenGL +{ + public delegate IntPtr GLfuncLoader( string name ); + + internal delegate void GLVULKANPROCNV(); + + public unsafe struct GLhandleARB + { + + private dynamic value; + + public unsafe GLhandleARB( dynamic value ) + { + if( !RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) { + if( value.GetType().Name != "Uint32" ) { + goto errorlog; + } + this.value = value; + } else { + if( value.GetType().Name != "IntPtr" ) { + goto errorlog; + } + this.value = value; + } + + errorlog: + { + InternalIO.InternalWriteLog( + $"{value.GetType().Name} does not match definination of GLhandlARB on OS {Environment.OSVersion.Platform} ", + LogType.Error ); + } + } + + public static implicit operator uint( GLhandleARB value ) + { + return ( uint )value; + } + + } + + #region GLFW_dele + + internal unsafe delegate void GLFWwindowsizefun( + glfwWindow* window, + int width, + int height ); + internal unsafe delegate void GLFWwindowrefreshfun( glfwWindow* window ); + internal unsafe delegate void GLFWwindowposfun( + glfwWindow* window, + int xpos, + int ypos ); + internal unsafe delegate void GLFWwindowmaximizefun( + glfwWindow* window, + int maximized ); + internal unsafe delegate void GLFWwindowiconifyfun( + glfwWindow* window, + int iconified ); + internal unsafe delegate void GLFWwindowfocusfun( + glfwWindow* window, + int focused ); + internal unsafe delegate void GLFWwindowcontentscalefun( + glfwWindow* window, + float xscale, + float yscale ); + internal unsafe delegate void GLFWwindowclosefun( glfwWindow* window ); + internal unsafe delegate void GLFWvkproc(); + internal unsafe delegate void GLFWscrollfun( + glfwWindow* window, + double xoffset, + double yoffset ); + internal unsafe delegate void GLFWmousebuttonfun( + glfwWindow* window, + int button, + int action, + int mods ); + internal unsafe delegate void GLFWmonitorfun( + glfwMonitor* monitor, + int monitorevent ); + internal unsafe delegate void GLFWkeyfun( + glfwWindow* window, + int key, + int scancode, + int action, + int mods ); + internal unsafe delegate void GLFWjoystickfun( int jid, int keyevent ); + public unsafe delegate void GLFWglproc(); + internal unsafe delegate void GLFWerrorfun( + int error_code, + sbyte* description ); + internal unsafe delegate void GLFWdropfun( + glfwWindow* window, + int path_count, + sbyte*[] paths ); + internal unsafe delegate void GLFWcursorposfun( + glfwWindow* window, + double xpos, + double ypos ); + internal unsafe delegate void GLFWcursorenterfun( + glfwWindow* window, + int entered ); + internal unsafe delegate void GLFWcharmodsfun( + glfwWindow* window, + uint codepoint, + int mods ); + internal unsafe delegate void GLFWcharfun( + glfwWindow* window, + uint codepoint ); + +#endregion + +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/Pixels.cs b/内核源代码/StgSharp.Common/Graphics/Pixels.cs new file mode 100644 index 00000000..9424725e --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/Pixels.cs @@ -0,0 +1,80 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Pixels.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.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public interface IPixel + { + + public float Red + { + get; + set; + } + + public float Green + { + get; + set; + } + + public float Blue + { + get; + set; + } + + public float Alpha + { + get; + set; + } + + internal int Size + { + get; + } + + } + + [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.Common/Graphics/PlainGeometryMesh.cs b/内核源代码/StgSharp.Common/Graphics/PlainGeometryMesh.cs new file mode 100644 index 00000000..0f506367 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/PlainGeometryMesh.cs @@ -0,0 +1,103 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainGeometryMesh.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.Math; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public class PlainGeometryMesh + { + + private PlainGeometry _shape; + private TextureProvider _texture; + + 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" ); + } + _texture = texture; + _shape = shape; + } + + //private Image _texture; + + public PlainGeometryMesh( + PlainGeometry shape, + Image texture, + Vec2[] texCoord ) + { + if( shape == null ) { + throw new ArgumentNullException( nameof( shape ) ); + } + if( texCoord == null ) { + throw new ArgumentNullException( nameof( texCoord ) ); + } + + if( shape.VertexCount > texCoord.Length ) { + throw new ArgumentException( + paramName: nameof( texCoord ), + message: "Amount of texture coordination is too less" ); + } + _texture = new TextureProvider( texture, texCoord ); + } + + public Vec4[] VertexArray => _shape.VertexStream; + + public Image TextureImage + { + get => _texture.ProvideImage(); + internal set => _texture.ReadImage( value ); + } + + public ReadOnlySpan MeshIndices => _shape.VertexIndices; + + public ReadOnlySpan TextureCoord => MemoryMarshal.Cast( + _texture.TextureCoordinate ); + + public PlainGeometryMesh Resize( PlainGeometry newShape ) + { + return new PlainGeometryMesh( newShape, _texture ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/RenderStream.cs b/内核源代码/StgSharp.Common/Graphics/RenderStream.cs new file mode 100644 index 00000000..f841362e --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/RenderStream.cs @@ -0,0 +1,252 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RenderStream.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 StgSharp.Math; + +using StgSharp.MVVM; +using StgSharp.MVVM.View; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public abstract class RenderStream + { + + private protected ViewPort primeArgs; + private Camera nativeCamera; + internal TimeSpanProvider _timeProvider; + + public (int width, int height) Size + { + get => (Width, Height); + } + + public abstract bool IsContextSharable + { + get; + } + + public int Height + { + get => primeArgs.Height; + } + + public int Width + { + get => primeArgs.Width; + } + + public IntPtr Monitor + { + get => primeArgs.Monitor; + internal set => primeArgs.Monitor = value; + } + + public string Name + { + get => primeArgs.Name; + } + + public ViewPort BindedViewPortContext + { + get => primeArgs; + internal set => primeArgs = value; + } + + internal IntPtr CanvasHandle + { + get => primeArgs.ViewPortID; + } + + internal IntPtr ContextHandle + { + get => primeArgs.GraphicHandle; + private protected set => primeArgs.GraphicHandle = value; + } + + protected internal Camera NativeCamera + { + get => nativeCamera; + internal set => nativeCamera = value; + } + + protected float FramePassed + { + get => _timeProvider.CurrentSpan; + } + + protected int PassedFrames + { + get => _timeProvider.CurrentSpan; + } + + protected float TimePassed + { + get => _timeProvider.CurrentSecond; + } + + protected TimeSpanProvider TimeProvider + { + get => _timeProvider; + } + + /// + /// Set the size limit of current form + /// + /// Minimum width of current form + /// Minimum height of current form + /// Maximum width of current form + /// Maximum height of current form + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public abstract void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ); + + public static TTarget ShareContextFrom( + [NotNull]TSource source ) + where TSource: RenderStream + where TTarget: RenderStream, new() + { + TTarget target = new TTarget(); + target.Initialize( + source.BindedViewPortContext, + source._timeProvider ); + return target; + } + + /**/ + protected internal static void PollEvents() + { + InternalIO.glfwPollEvents(); + } + + private protected void SwapBuffers() + { + InternalIO.glfwSwapBuffers( CanvasHandle ); + } + + /**/ + + #region native camera operation + + protected abstract void NativeCameraViewRange( + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ); + + protected abstract void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 up ); + + /// + /// 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. + /// + /// Shader using this camera + /// ContextName of projection camera named in shader + /// + /// (TView is ) representing projection + /// matrix in shader program. + /// + protected abstract Uniform NativeCameraUniform( + ShaderProgram source, + string name ); + + #endregion + + #region internal operation + + public void Initialize( + ViewPort v, + TimeSpanProvider timeProvider ) + { + if( v == null ) { + throw new ArgumentNullException( nameof( v ) ); + } + primeArgs = v; + this._timeProvider = timeProvider; + nativeCamera = new Camera(); + PlatformSpecifiedInitialize(); + CustomizeInit(); + InternalIO.glfwMakeContextCurrent( IntPtr.Zero ); + } + + internal abstract void PlatformSpecifiedInitialize(); + + internal abstract void Terminate(); + + #endregion + + #region public operation + + protected abstract void CustomizeDeinit(); + + protected abstract void CustomizeInit(); + + /// + /// Marking the start of current render operations, and set this renser context as current. + /// + public abstract void RenderStart(); + + /// + /// Marking the end of current render operations, and release the binding of this renser + /// context to current, making it available for another thread as current. + /// + public abstract void RenderEnd(); + + #endregion + + #region public resource generator + + protected abstract Shader CreateShaderSegment( + ShaderType type, + int count ); + + protected abstract ShaderProgram CreateShaderProgram(); + + #endregion + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs b/内核源代码/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs new file mode 100644 index 00000000..48878e6a --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs @@ -0,0 +1,207 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ShaderGenerator.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.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.ShaderEdit +{ + public class ShaderGenerator + { + + private Dictionary uniformDefine; + private List codeList; + private List usedShaderFunctions; + + public Uniform DefineUniform( string name, int index ) + where T: struct + { + ShaderParameter p = new ShaderParameter( + name, ShaderParameter.TypeMarshal() ); + uniformDefine.Add( index, p ); + + //return new Uniform(); + throw new NotImplementedException(); + } + + } + + public class ShaderFunction + { + + private List codeList; + private List inputList; + private ShaderParameter outPut; + private string name; + + public int ParameterCount => inputList.Count; + + public void EmitCall( + ShaderFunction function, + ShaderParameter outPut, + params ShaderParameter[] inputParams ) + { + if( inputParams.Length != function.ParameterCount ) { + // Param list length not equal + throw new ArgumentException( + "Provided parameters does not match function's parameter list." ); + } + if( !ShaderParameter.IsSameType( outPut, function.outPut ) ) { + // Type of returning value not equal + throw new ArgumentException( + "Provided parameters does not match function's parameter list." ); + } + for( int i = 0; i < inputParams.Length; i++ ) { + if( !ShaderParameter.IsSameType( + function.inputList[ i ], inputParams[ i ] ) ) { + // Input type not match + throw new InvalidCastException( + "Provided parameters does not match function's parameter list." ); + } + } + string codeLine = string.Empty; // adding a line like " outvalue = Func(input1, input2,...); " + if( outPut != ShaderParameter.Void ) { + codeLine += $"{outPut.name} = "; + } + codeLine += $"{function.name}("; + foreach( ShaderParameter inputParam in inputParams ) { + codeLine += inputParam.name; + } + codeLine += ");\n"; + codeList.Add( codeLine ); + } + + } + + public class ShaderParameter + { + + public static readonly ShaderParameter Void = new ShaderParameter( + string.Empty, InternalShaderType.Void ); + internal readonly bool isReadOnly; + internal readonly InternalShaderType type; + internal readonly string name; + + public ShaderParameter( string name, InternalShaderType type ) + { + this.name = name; + this.type = type; + isReadOnly = false; + } + + public static bool IsSameType( + ShaderParameter param1, + ShaderParameter param2 ) + { + if( param1.type != InternalShaderType.Struct ) { + return param1.type == param2.type; + } else { + throw new Exception( "Struct is currently not supported." ); + } + } + + public static InternalShaderType TypeMarshal() where T: struct + { + switch( Type.GetTypeCode( typeof( T ) ) ) { + case TypeCode.Single: + return InternalShaderType.Float; + case TypeCode.Double: + return InternalShaderType.Double; + case TypeCode.Int32: + return InternalShaderType.Int; + case TypeCode.UInt32: + return InternalShaderType.UInt; + default: + break; + } + switch( typeof( T ).Name ) { + case "vec4d": + return InternalShaderType.Vector4; + case "Matrix2x2": + return InternalShaderType.Matrix2x2; + case "Matrix2x3": + return InternalShaderType.Matrix2x3; + case "Matrix2x4": + return InternalShaderType.Matrix2x4; + case "Matrix3x2": + return InternalShaderType.Matrix3x2; + case "Matrix3x3": + return InternalShaderType.Matrix3x3; + case "Matrix3x4": + return InternalShaderType.Matrix3x4; + case "Matrix4x2": + return InternalShaderType.Matrix4x2; + case "Matrix4x3": + return InternalShaderType.Matrix4x3; + case "Matrix4x4": + return InternalShaderType.Matrix4x4; + default: + throw new ArgumentException( + "Not supported shader data type." ); + } + } + + } + + public enum InternalShaderType + { +#pragma warning disable CS1591 + Struct, + Void, + Int, + UInt, + Float, + Double, + Vector2, + Vector3, + Vector4, + VectorD2, + VectorD3, + VectorD4, + Matrix2x2, + Matrix2x3, + Matrix2x4, + Matrix3x2, + Matrix3x3, + Matrix3x4, + Matrix4x2, + Matrix4x3, + Matrix4x4, +#pragma warning restore CS1591 + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs b/内核源代码/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs new file mode 100644 index 00000000..eecd6187 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ShaderStruct.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.ShaderEdit +{ + public class ShaderStructMember + { + + internal InternalShaderType type; + internal object value; + + } + + public class ShaderStruct + { + + internal Dictionary uniformPair; + + internal ShaderStruct() { } + + public ShaderStruct( + params (GlHandle, ShaderStructMember)[] uniformPairs ) + { + uniformPair = new Dictionary(); + if( uniformPairs.Length == 0 ) { + return; + } + + foreach( (GlHandle, ShaderStructMember) item in uniformPairs ) { + uniformPair.Add( item.Item1, item.Item2 ); + } + } + + public unsafe void SetAllUniforms() + { + OpenglContext* gl = ( OpenglContext* )OpenGL.OpenGLFunction.CurrentGL.ContextHandle; + foreach( KeyValuePair uniform in uniformPair ) { + int id = uniform.Key.SignedValue; + ShaderStructMember s = uniform.Value; + switch( s.type ) { + case InternalShaderType.Struct: + throw new ArgumentException( + "Incorrect type \"Struct\" defined in this self define type" ); + case InternalShaderType.Void: + throw new ArgumentException( + "Incorrect type \"Void\" defined in this self define type" ); + case InternalShaderType.Float: + gl->glUniform1f( id, ( float )s.value ); + break; + case InternalShaderType.Int: + gl->glUniform1f( id, ( int )s.value ); + break; + default: + throw new NotImplementedException(); + throw new ArgumentException( + "Incorrect type \"Unknown\" defined in this self define type" ); + } + } + }//------------------------------------ End of Class --------------------------------------- + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/TexturePipeline.cs b/内核源代码/StgSharp.Common/Graphics/TexturePipeline.cs new file mode 100644 index 00000000..bd9c3b64 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/TexturePipeline.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TexturePipeline.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.Blueprint; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public class TexturePipeline : BlueprintPipelineArgs + { + + private Image _value; + + public TexturePipeline( Image i ) + { + _value = i; + } + + public new Image Value + { + get => _value; + set => _value = value ?? + throw new ArgumentNullException( nameof( value ) ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/TextureProvider.cs b/内核源代码/StgSharp.Common/Graphics/TextureProvider.cs new file mode 100644 index 00000000..351dfe8d --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/TextureProvider.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TextureProvider.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.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public class TextureProvider : IImageProvider + { + + private Vec2[] _texCoord; + private Image _tex; + + public TextureProvider( Image image, Vec2[] coord ) + { + _tex = image; + _texCoord = coord; + } + + public ref Vec2 this[ int index ] + { + get => ref _texCoord[ index ]; + } + + public Span TextureCoordinate + { + get => new Span( _texCoord ); + } + + public Image ProvideImage() + { + return _tex; + } + + public void ReadImage( IImageProvider provider ) + { + _tex = provider.ProvideImage(); + } + + public void UpdateFromImage( [NotNull]Image i ) + { + if( i == _tex ) { + return; + } + if( i.Size == _tex.Size ) { + _tex = i; + } else { + throw new ArgumentException( + $"Size of {nameof(i)} does not equals to current image." ); + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/Vulkan/vkEnum.cs b/内核源代码/StgSharp.Common/Graphics/Vulkan/vkEnum.cs new file mode 100644 index 00000000..227c1fc3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/Vulkan/vkEnum.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics.Vulkan +{ + + internal enum VkStructureType : uint + { + + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, + VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF + + } + + internal enum VkResult + { + + VK_SUCCESS = 0, + VK_NOT_READY = 1, + VK_TIMEOUT = 2, + VK_EVENT_SET = 3, + VK_EVENT_RESET = 4, + VK_INCOMPLETE = 5, + VK_ERROR_OUT_OF_HOST_MEMORY = -1, + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, + VK_ERROR_INITIALIZATION_FAILED = -3, + VK_ERROR_DEVICE_LOST = -4, + VK_ERROR_MEMORY_MAP_FAILED = -5, + VK_ERROR_LAYER_NOT_PRESENT = -6, + VK_ERROR_EXTENSION_NOT_PRESENT = -7, + VK_ERROR_FEATURE_NOT_PRESENT = -8, + VK_ERROR_INCOMPATIBLE_DRIVER = -9, + VK_ERROR_TOO_MANY_OBJECTS = -10, + VK_ERROR_FORMAT_NOT_SUPPORTED = -11, + VK_ERROR_SURFACE_LOST_KHR = -1000000000, + VK_SUBOPTIMAL_KHR = 1000001003, + VK_ERROR_OUT_OF_DATE_KHR = -1000001004, + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, + VK_RESULT_MAX_ENUM = 0x7FFFFFFF + + } + +} diff --git a/内核源代码/StgSharp.Common/Graphics/Vulkan/vkHandle.cs b/内核源代码/StgSharp.Common/Graphics/Vulkan/vkHandle.cs new file mode 100644 index 00000000..5396a1f7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/Vulkan/vkHandle.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="vkHandle.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.InteropServices; +using System.Security; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.Vulkan +{ + [StructLayout( LayoutKind.Explicit, Size = 8 )] + public struct vkHandle + { + + [FieldOffset( 0 )] public int SignedHalfValue; + [FieldOffset( 0 )] public IntPtr Handle; + [FieldOffset( 0 )] public IntPtr UnsignedHandle; + [FieldOffset( 0 )] public uint HalfValue; + + } +} diff --git a/内核源代码/StgSharp.Common/Graphics/framework.cs b/内核源代码/StgSharp.Common/Graphics/framework.cs new file mode 100644 index 00000000..ee91a8c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/framework.cs @@ -0,0 +1,106 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="framework.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 System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +#if Windows +// using Windows.Win32; +#endif + + +namespace StgSharp.Graphics +{ + + #region StgSharpDele + + public unsafe delegate void FrameBufferSizeHandler( + IntPtr window, + int width, + int height); + + public unsafe delegate void FramePositionHandler( + IntPtr window, + float width, + float height); + + #endregion + + /// + /// Function handler to load an opengl function by searching its _name. + /// + /// the _name of the Opengl function + /// An Intptr value representing the pointer to the function + public delegate IntPtr glLoader(string name); + + #region glDEBUG + + internal unsafe delegate void GLDEBUGPROC( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam); + internal unsafe delegate void GLDEBUGPROCARB( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam); + internal unsafe delegate void GLDEBUGPROCKHR( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam); + internal unsafe delegate void GLDEBUGPROCAMD( + uint id, + int category, + int severity, + int length, + sbyte* message, + void* userParam); + + #endregion + +} diff --git a/内核源代码/StgSharp.Common/Graphics/frameworkSyncContext.cs b/内核源代码/StgSharp.Common/Graphics/frameworkSyncContext.cs new file mode 100644 index 00000000..661b20d1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Graphics/frameworkSyncContext.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="frameworkSyncContext.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public class FrameworkSyncContext : SynchronizationContext + { + + private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext( + ); + + private readonly BlockingCollection _syncContexts = new BlockingCollection( + ); + private readonly Thread _mainThread = Thread.CurrentThread; + + public FrameworkSyncContext() + { + _syncContexts = new BlockingCollection(); + _mainThread = Thread.CurrentThread; + } + + public static FrameworkSyncContext MainThreadContext + { + get => _mainThreadContext; + } + + public override void Post( SendOrPostCallback d, object state ) + { + _syncContexts.Add( d ); + } + + public override void Send( SendOrPostCallback d, object state ) + { + if( Thread.CurrentThread == _mainThread ) { + d( state ); + } else { + Post( d, state ); + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/ClangLoad/gl.cs b/内核源代码/StgSharp.Common/Internal/ClangLoad/gl.cs new file mode 100644 index 00000000..b955ca73 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/ClangLoad/gl.cs @@ -0,0 +1,109 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="gl.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.Internal.OpenGL; + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal +{ + internal partial class InternalIO + { + + [DllImport( + SSC_libName, + EntryPoint = "glCheckShaderStat", + CallingConvention = CallingConvention.Cdecl )] + #pragma warning disable CA5392 + internal static extern int glCheckShaderStatus( + ref OpenglContext context, + uint shaderHandle, + int key, + ref IntPtr logPtr ); + #pragma warning restore CA5392 + + + #region ssgc api define + + [DllImport( + SSC_libName, + EntryPoint = "initGL", + CallingConvention = CallingConvention.Cdecl )] + internal static extern void InternalInitGL( + int majorVersion, + int minorVersion ); + + [DllImport( + SSC_libName, + EntryPoint = "loadGlfuncDefault", + CallingConvention = CallingConvention.Cdecl, + CharSet = CharSet.Ansi)] + internal static extern IntPtr InternalLoadGlfuncDefault( string name ); + + [DllImport( + SSC_libName, + EntryPoint = "linkShaderProgram", + CallingConvention = CallingConvention.Cdecl )] + internal static extern unsafe uint InternalLinkShaderProgram( + OpenglContext* context, + uint shaderProgram ); + + [DllImport( + SSC_libName, + EntryPoint = "readLog", + CallingConvention = CallingConvention.Cdecl )] + internal static extern unsafe IntPtr InternalReadSSCLog(); + + [DllImport( + SSC_libName, + EntryPoint = "loadImageData", + CallingConvention = CallingConvention.Cdecl, + CharSet = CharSet.Ansi )] + internal static extern unsafe void InternalLoadImage( + string fileName, + ImageInfo* output, + ImageLoader loader ); + + [DllImport( + SSC_libName, + EntryPoint = "unloadImageData", + CallingConvention = CallingConvention.Cdecl, + CharSet = CharSet.Ansi )] + internal static extern unsafe void InternalUnloadImage( + ImageInfo* output ); + + #endregion ssgc api define + } +} diff --git a/内核源代码/StgSharp.Common/Internal/InternalIO.cs b/内核源代码/StgSharp.Common/Internal/InternalIO.cs new file mode 100644 index 00000000..0213f9f7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/InternalIO.cs @@ -0,0 +1,146 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="InternalIO.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 System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +using System.Text; +using System.Threading; + +namespace StgSharp.Internal +{ + internal static unsafe partial class InternalIO + { + + internal const string SS_errorLog = + "SS_errorlog.log"; + + internal const string SSC_libName = + "StgSharp.C"; + + internal static Dictionary GLtype = + new Dictionary(); + + internal static readonly GCHandle ssc_logHandle = + GCHandle.Alloc( new byte[512], GCHandleType.Pinned ); + + internal static IntPtr SSClibPtr = IntPtr.Zero; + + internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( + 1, 1 ); + + static InternalIO() + { + GLtype.Add( TypeCode.Single, glConst.FLOAT ); + GLtype.Add( TypeCode.Int32, glConst.INT ); + GLtype.Add( TypeCode.UInt32, glConst.UNSIGNED_INT ); + GLtype.Add( TypeCode.Int16, glConst.SHORT ); + GLtype.Add( TypeCode.UInt16, glConst.UNSIGNED_SHORT ); + GLtype.Add( TypeCode.SByte, glConst.BYTE ); + GLtype.Add( TypeCode.Byte, glConst.UNSIGNED_BYTE ); + } + + internal static void InternalAppendLog( string log ) + { + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); + stream.Close(); + } + + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( log ); + } + } + + [Obsolete( "Not completed", true )] + internal static IntPtr InternalLoadProc( IntPtr lib, string name ) + where T: Delegate + { + try { + IntPtr procPtr = +#if WINDOWS + IntPtr.Zero; +#elif LINUX + +#else + IntPtr.Zero; + #endif + return procPtr; + } + catch( Exception ) { + throw; + } + } + + internal static void InternalWriteLog( string logLine, LogType logType ) + { + logSyncSemaphore.Wait(); + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); + stream.Close(); + } + + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( + $"{logType}\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( logLine ); + } + logSyncSemaphore.Release(); + } + + internal static void InternalWriteLog( + string beforeTime, + string logLine, + LogType logType ) + { + logSyncSemaphore.Wait(); + if( !File.Exists( InternalIO.SS_errorLog ) ) { + FileStream stream = File.Create( InternalIO.SS_errorLog ); + stream.Close(); + } + + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( beforeTime ); + logStream.WriteLine( + $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( logLine ); + } + logSyncSemaphore.Release( 1 ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/InternalResource.cs b/内核源代码/StgSharp.Common/Internal/InternalResource.cs new file mode 100644 index 00000000..3daeae0d --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/InternalResource.cs @@ -0,0 +1,99 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="InternalResource.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.Internal +{ + internal partial class InternalIO + { + + #region ControllingItemRender + + internal const string ControlItemRenderVertexShader = """ + + + + """; + + #endregion + + #region CollisionTexture + + internal const string CollisionTextureVertexShader = """ + #version 430 core + layout(location = 0) in vec2 localCollisionCoord; + layout(location = 1) in vec2 spaceCoord; + layout(location = 2) in float rotation; + layout(location = 3) in float scaling; + + uniform vec2 target; + uniform mat2 projection; + + void main() + { + mat2 scaling = mat2( + scaling,0, + 0,scaling ); + + mat2 rotation = mat2( + cos(rotation),-sin(rotation), + sin(rotation),cos(rotation) ); + + vec2 realCoord = (rotation * scaling * localCollisionCoord) + spaceCoord - target; + realCoord = projection * realCoord; + float dist = distance(realCoord, vec2(0,0)); + float angle = atan(realCoord.y, realCoord.x); + gl_Position = vec4(angle, realCoord.y, dist, 1); + } + """; + internal const string CollisionTextureFragmentShader = """ + #version 430 core + out vec4 Color; + + uniform float range; + void main() + { + float dist = gl_FragCoord.z; + if(dist > range) + { + discard; + } + dist /= range; + gl_FragDepth = min(dist, gl_FragDepth); + Color = vec4(dist,0,0,1); + } + """; + + #endregion + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs new file mode 100644 index 00000000..591e4627 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet2.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 12 * sizeof( float ), Pack = 16 )] + internal struct ColumnSet2 : IEquatable + { + + [FieldOffset( 0 * sizeof( float ) )] internal float m00; + [FieldOffset( 4 * sizeof( float ) )] internal float m01; + [FieldOffset( 1 * sizeof( float ) )] internal float m10; + [FieldOffset( 5 * sizeof( float ) )] internal float m11; + [FieldOffset( 2 * sizeof( float ) )] internal float m20; + [FieldOffset( 6 * sizeof( float ) )] internal float m21; + [FieldOffset( 3 * sizeof( float ) )] internal float m30; + [FieldOffset( 7 * sizeof( float ) )] internal float m31; + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vector4 colum1; + + internal ColumnSet2( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit( out this ); + colum0 = c0; + colum1 = c1; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet2 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet2 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet2 left, ColumnSet2 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet2 left, ColumnSet2 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs new file mode 100644 index 00000000..809eaf36 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs @@ -0,0 +1,86 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet3.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.Internal.Intrinsic; +using StgSharp.Math; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 12 * sizeof( float ), Pack = 16 )] + internal struct ColumnSet3 : IEquatable, IMat + { + [FieldOffset( 0 * sizeof( float ) )] internal float m00; + [FieldOffset( 4 * sizeof( float ) )] internal float m01; + [FieldOffset( 8 * sizeof( float ) )] internal float m02; + [FieldOffset( 1 * sizeof( float ) )] internal float m10; + [FieldOffset( 5 * sizeof( float ) )] internal float m11; + [FieldOffset( 9 * sizeof( float ) )] internal float m12; + [FieldOffset( 2 * sizeof( float ) )] internal float m20; + [FieldOffset( 6 * sizeof( float ) )] internal float m21; + [FieldOffset( 10 * sizeof( float ) )] internal float m22; + [FieldOffset( 3 * sizeof( float ) )] internal float m30; + [FieldOffset( 7 * sizeof( float ) )] internal float m31; + [FieldOffset( 11 * sizeof( float ) )] internal float m32; + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vector4 colum1; + [FieldOffset( 8 * sizeof( float ) )] internal Vector4 colum2; + + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet3 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet3 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ) && colum2.Equals( other.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet3 left, ColumnSet3 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet3 left, ColumnSet3 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs new file mode 100644 index 00000000..b3781305 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet4.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 16 * sizeof( float ) )] + internal struct ColumnSet4 : IEquatable, IMat + { + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 16 )] internal Vector4 colum1; + [FieldOffset( 32 )] internal Vector4 colum2; + [FieldOffset( 48 )] internal Vector4 colum3; + + [FieldOffset( 0 )] public float m00; + [FieldOffset( 16 )] public float m01; + [FieldOffset( 32 )] public float m02; + [FieldOffset( 48 )] public float m03; + [FieldOffset( 4 )] public float m10; + [FieldOffset( 20 )] public float m11; + [FieldOffset( 36 )] public float m12; + [FieldOffset( 52 )] public float m13; + [FieldOffset( 8 )] public float m20; + [FieldOffset( 24 )] public float m21; + [FieldOffset( 40 )] public float m22; + [FieldOffset( 56 )] public float m23; + [FieldOffset( 12 )] public float m30; + [FieldOffset( 28 )] public float m31; + [FieldOffset( 44 )] public float m32; + [FieldOffset( 60 )] public float m33; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal ColumnSet4( + Vector4 colum0, + Vector4 colum1, + Vector4 colum2, + Vector4 colum3 ) + { + Unsafe.SkipInit( out this ); + this.colum0 = colum0; + this.colum1 = colum1; + this.colum2 = colum2; + this.colum3 = colum3; + } + + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet4 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet4 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ) && colum2.Equals( other.colum2 ) && colum3.Equals( + other.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet4 left, ColumnSet4 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet4 left, ColumnSet4 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/IRegisterType.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/IRegisterType.cs new file mode 100644 index 00000000..fb7ae984 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/IRegisterType.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IRegisterType.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal.Intrinsic +{ + public interface IRegisterType + { + + public T Read( int index ) + where T: struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + ; + + public void Write( int index, T value ) + where T: struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + ; + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs new file mode 100644 index 00000000..f2c75df1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IntrinsicContext.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.Common.Internal.Intrinsic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct IntrinsicContext + { + + public delegate* unmanaged[Cdecl] add_mat_2; + public delegate* unmanaged[Cdecl] add_mat_3; + public delegate* unmanaged[Cdecl] add_mat_4; + public delegate* unmanaged[Cdecl] cityhash_simplify; + public delegate* unmanaged[Cdecl] det_mat_3; + public delegate* unmanaged[Cdecl] det_mat_4; + public delegate* unmanaged[Cdecl] dot_31; + public delegate* unmanaged[Cdecl] dot_32; + public delegate* unmanaged[Cdecl] dot_41; + public delegate* unmanaged[Cdecl] dot_42; + public delegate* unmanaged[Cdecl] dot_43; + public delegate* unmanaged[Cdecl] normalize_v3; + public delegate* unmanaged[Cdecl] transpose23; + public delegate* unmanaged[Cdecl] transpose24; + public delegate* unmanaged[Cdecl] transpose32; + public delegate* unmanaged[Cdecl] transpose33; + public delegate* unmanaged[Cdecl] transpose34; + public delegate* unmanaged[Cdecl] transpose42; + public delegate* unmanaged[Cdecl] transpose43; + public delegate* unmanaged[Cdecl] transpose44; + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/M128.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/M128.cs new file mode 100644 index 00000000..9f161499 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/M128.cs @@ -0,0 +1,198 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M128.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.Diagnostics.CodeAnalysis; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +#if NET5_0_OR_GREATER +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +#endif + +using System.Text; + +namespace StgSharp.Common.Internal.Intrinsic +{ + [StructLayout(LayoutKind.Explicit, Pack = 16)] + internal unsafe struct M128 : IRegisterType + { + + [FieldOffset(0)] internal Vector4 vec; + + internal M128(Vector4 v) + { + vec = v; + } + + public override bool Equals([NotNullWhen(true)] object obj) + { + if (obj is not M128 other) + { + return false; + } + return this == other; + } + + public override int GetHashCode() + { + return vec.GetHashCode(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public T Read(int index) + where T : struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + + { + fixed (Vector4* p = &vec) + { +#pragma warning disable CS8500 + return *((T*)p + index); +#pragma warning restore CS8500 + } + } + + public override string ToString() + { + return string.Empty; + } + + public string ToString(int sample) + { + string str = string.Empty; + for (int i = 15; i >= 0; i--) + { + str += $"{Convert.ToString(Read(i), sample)} "; + } + return str; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Write(int index, T value) + where T : struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + { + fixed (Vector4* p = &vec) + { +#pragma warning disable CS8500 + *((T*)p + index) = value; +#pragma warning restore CS8500 + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=(M128 left, M128 right) + { + return left.vec != right.vec; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator ==(M128 left, M128 right) + { + return left.vec == right.vec; + } + +#if NET5_0_OR_GREATER + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + +#endif + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/M256.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/M256.cs new file mode 100644 index 00000000..d6482f56 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/M256.cs @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M256.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.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Common.Internal.Intrinsic +{ + [StructLayout(LayoutKind.Sequential)] + public unsafe struct M256 : IRegisterType + { + + private M128 v0; + private M128 v1; + + public T Read(int index) + where T : struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + { + fixed (M128* mptr = &v0) + { + return *((T*)mptr + index); + } + } + + public void Write(int index, T value) + where T : struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + { + fixed (M128* mptr = &v0) + { + *((T*)mptr + index) = value; + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/MatInterface.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/MatInterface.cs new file mode 100644 index 00000000..4425f944 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/MatInterface.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MatInterface.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.Internal.Intrinsic +{ + public interface IMat { } +} diff --git a/内核源代码/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs b/内核源代码/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs new file mode 100644 index 00000000..d4bc7317 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="intrinsicContextProvider.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.Internal.Intrinsic; + +using System; +using System.Reflection; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal +{ + internal static unsafe partial class InternalIO + { + + private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext( + ); + + internal static IntrinsicContext Intrinsic + { + get => _intrinsicContext; + } + + internal static void InitIntrinsicContext() + { + int statCode; + + fixed( IntrinsicContext* cptr = &_intrinsicContext ) { + statCode = LoadIntrinsicFunction( cptr ); + } + + switch( statCode ) { + case 0: + + //Dialogue.PostError(new PlatformNotSupportedException("No SIMD instructions supported on current hardware platform")); + Environment.Exit( -1 ); + break; + default: + break; + } + } + + [DllImport( + SSC_libName, + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "load_intrinsic_function" )] + private static extern int LoadIntrinsicFunction( + IntrinsicContext* context ); + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Internal/StructDefine.cs b/内核源代码/StgSharp.Common/Internal/StructDefine.cs new file mode 100644 index 00000000..3f3aaeb1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/StructDefine.cs @@ -0,0 +1,962 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StructDefine.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.Internal.OpenGL; + +using StgSharp.Graphics.OpenGL; + +using System; +using System.Runtime.InteropServices; + +/**/ + +namespace StgSharp.Internal +{ + //rename types in style of GLFW + + using GLFWbool = Boolean; + + //strucs defined in GLFW3.h + + #region GLFW3 struct + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWcontext + { + + private delegate* extensionSupported; + private delegate*, void> getProcAddress; + + /* + void (* makeCurrent) (glfwWindow*); + void (* swapBuffers) (glfwWindow*); + void (* swapInterval) (int); + int (* extensionSupported) (const byte*); + GLFWglproc(*getProcAddress)(const byte*); + void (* destroy) (glfwWindow*); + */ + + private delegate* makeCurrent; + private delegate* swapBuffer; + private delegate* swapInterval; + private GLFWbool forward, debug, noerror; + + private int client; + private int major, minor, revision; + private int profile; + private int release; + private int robustness; + private int source; + private IntPtr destroy; + + //PFNGLGETINTEGERVPROC GetIntegerv; + private IntPtr GetIntegerv; + + //PFNGLGETSTRINGPROC GetString; + private IntPtr GetString; + + //PFNGLGETSTRINGIPROC GetStringi; + private IntPtr GetStringi; + + internal struct egl + { + + private void* client; + + /* + EGLConfig config; + EGLContext handle; + EGLSurface surface; + */ + private void* config; + private void* handle; + private void* surface; + + } + + internal struct osmesa + { + + private void* buffer; + + //OSMesaContext handle; + private void* handle; + private int height; + + private int width; + + } + + // This is defined in platform.h + //GLFW_PLATFORM_CONTEXT_STATE + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct glfwVideomode + { + /*! The refresh rate, in Hz, of the video mode. + */ + + private int refreshRate; + /*! The bit depth of the blue channel of the video mode. + */ + public int blueBits; + /*! The bit depth of the green channel of the video mode. + */ + public int greenBits; + /*! The height, in screen coordinates, of the video mode. + */ + public int height; + /*! The bit depth of the red channel of the video mode. + */ + public int redBits; + + /*! The width, in screen coordinates, of the video mode. + */ + public int width; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct glfwGammaramp + { + /*! An array of value describing the response of the blue channel. + */ + + private ushort* blue; + /*! An array of value describing the response of the green channel. + */ + private ushort* green; + + /*! An array of value describing the response of the red channel. + */ + private ushort* red; + /*! The number of elements in each array. + */ + private uint size; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWimage + { + /*! The pixel _data of this image, arranged left-to-right, top-to-bottom. + */ + + private byte* pixels; + + /*! The height, in pixels, of this image. + */ + private int height; + /*! The width, in pixels, of this image. + */ + private int width; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWgamepadstate + { + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + + public fixed byte buttons[ 15 ]; + + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + public fixed float axes[ 6 ]; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWallocator + { + + private void* user; + + //GLFWallocatefun allocate; + private IntPtr allocate; + + //GLFWdeallocatefun deallocate; + private IntPtr deallocate; + + //GLFWreallocatefun reallocate; + private IntPtr reallocate; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct glfwMonitor + { + + private glfwVideomode* modes; + + private glfwWindow* window; + + private fixed byte name[ 128 ]; + private glfwGammaramp currentRamp; + + private glfwGammaramp originalRamp; + private glfwVideomode currentMode; + private int modeCount; + + private int width, height; + private IntPtr userPointer; + + public glfwMonitor() { } + + public unsafe string Name + { + get + { + fixed( byte* cptr = name ) { + return Marshal.PtrToStringAnsi( ( IntPtr )cptr ); + } + } + } + + } + + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct glfwWindow + { + + private glfwWindow* next; + private void* userPointer; + private bool rawMouseMotion; + private Callbacks callbacks; + + // Virtual cursor position when cursor is disabled + private double virtualCursorPosX, virtualCursorPosY; + private int autoIconify; + private int cursorMode; + private int decorated; + private int doublebuffer; + private int floating; + private int focusOnShow; + private int lockKeyMods; + private int maxwidth, maxheight; + + private int minwidth, minheight; + private int mousePassthrough; + private int numer, denom; + + // Window settings and state + private int resizable; + private int shouldClose; + + private int stickyKeys; + private int stickyMouseButtons; + private IntPtr cursor; // _GLFWcursor* cursor; + // glfwVideomode videoMode; // 根据GLFWvidmode的定义转换 + private IntPtr monitor; // _GLFWmonitor* monitor; + public fixed byte keys[ glConst.GLFW_KEY_LAST + 1 ]; + public fixed byte mouseButtons[ glConst.GLFW_MOUSE_BUTTON_LAST + 1 ]; + + // _GLFWcontext viewPortDisplay; // 根据_GLFWcontext的定义转换 + + // Callbacks are represented as IntPtr since we don't need the actual function pointers in C# + internal struct Callbacks + { + + internal IntPtr character; + internal IntPtr charmods; + internal IntPtr close; + internal IntPtr cursorEnter; + internal IntPtr cursorPos; + internal IntPtr drop; + internal IntPtr fbsize; + internal IntPtr focus; + internal IntPtr iconify; + internal IntPtr key; + internal IntPtr maximize; + internal IntPtr mouseButton; + internal IntPtr pos; + internal IntPtr refresh; + internal IntPtr scale; + internal IntPtr scroll; + internal IntPtr size; + + } + + // GLFW_PLATFORM_WINDOW_STATE platformWindowState; + } + + [StructLayout( LayoutKind.Sequential )] + public struct GLFWwindowCallback { } + + [StructLayout( LayoutKind.Sequential )] + public struct GLFWcursor + { + + //GLFWcursor* next; + private IntPtr next; + + // This is defined in platform.h + // not completed in tranformation + // GLFW_PLATFORM_CURSOR_STATE; + } + + /* + [StructLayout(LayoutKind.Sequential)] + public unsafe struct GLFWerror + { + //GLFWerror* next; + IntPtr next; + int code; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)glConst.GLFW_MESSAGE_SIZE)] + byte[] description = new byte[glConst.GLFW_MESSAGE_SIZE]; + + public GLFWerror() + { + } + } + */ + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWinitconfig + { + + private GLFWbool hatButtons; + + private int angleType; + private int platformID; + + //PFN_vkGetInstanceProcAddr vulkanLoader; + private IntPtr vulkanLoader; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWwndconfig + { + + private byte* title; + + private GLFWbool autoIconify; + private GLFWbool centerCursor; + private GLFWbool decorated; + private GLFWbool floating; + private GLFWbool focused; + private GLFWbool focusOnShow; + private GLFWbool maximized; + private GLFWbool mousePassthrough; + private GLFWbool resizable; + private GLFWbool scaleToMonitor; + private GLFWbool visible; + private int height; + private int width; + + private int xpos; + private int ypos; + + internal Ns ns = new Ns(); + + internal Win32 win32 = new Win32(); + + internal Wl wl = new Wl(); + + internal X11 x11 = new X11(); + + public GLFWwndconfig() { } + + internal struct Ns + { + + private GLFWbool retina = false; + public fixed byte frameName[ 256 ]; + + public Ns() { } + + } + + internal struct X11 + { + + public fixed byte className[ 256 ]; + public fixed byte instanceName[ 256 ]; + + public X11() { } + + } + + internal struct Win32 + { + + private GLFWbool keymenu; + + } + + internal struct Wl + { + + public fixed byte appId[ 256 ]; + + public Wl() { } + + } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWctxconfig + { + + private GLFWbool debug; + private GLFWbool forward; + private GLFWbool noerror; + + private int client; + private int major; + private int minor; + private int profile; + private int release; + private int robustness; + private int source; + + //glfwWindow* share; + private IntPtr share; + + internal Nsgl nsgl = new Nsgl(); + + public GLFWctxconfig() { } + + internal struct Nsgl + { + + private GLFWbool offline; + + } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWfbconfig + { + + private GLFWbool doublebuffer; + private GLFWbool sRGB; + private GLFWbool stereo; + private GLFWbool transparent; + + private int accumAlphaBits; + private int accumBlueBits; + private int accumGreenBits; + private int accumRedBits; + private int alphaBits; + private int auxBuffers; + private int blueBits; + private int depthBits; + private int greenBits; + + private int redBits; + private int samples; + private int stencilBits; + private uintptr_t handle; + + } + + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct GLFWlibrary + { + + [MarshalAs( + UnmanagedType.ByValArray, + SizeConst = glConst.GLFW_JOYSTICK_LAST + 1 )] + private GLFWjoystick[] joysticks = new GLFWjoystick[glConst.GLFW_JOYSTICK_LAST + 1]; + + private GLFWallocator allocator; + + private GLFWbool initialized; + + private GLFWbool joysticksInitialized; + private GLFWls contextSlot; + + private GLFWls errorSlot; + private GLFWmutex errorLock; + + private GLFWplatform platform; + + private int mappingCount; + + private int monitorCount; + + //GLFWcursor* cursorListHead; + private IntPtr cursorListHead; + + //GLFWerror* errorListHead; + private IntPtr errorListHead; + + //GLFWmapping* mappings; + private IntPtr mappings; + + //GLFWmonitor** monitors; + private IntPtr monitors; + + //glfwWindow* windowListHead; + private IntPtr windowListHead; + + internal Callbacks callbacks = new Callbacks(); + + internal Egl egl = new Egl(); + + internal Hints hints = new Hints(); + + internal Osmesa osmesa = new Osmesa(); + + public GLFWlibrary() { } + + internal unsafe struct Hints + { + + private GLFWctxconfig context; + private GLFWfbconfig framebuffer; + + private GLFWinitconfig init; + private GLFWwndconfig window; + private int refreshRate; + + } + + internal unsafe struct timer + { + + private ulong offset; + + // This is defined in platform.h + + //not transformed function defination + //GLFW_PLATFORM_LIBRARY_TIMER_STATE + } + + internal unsafe struct Egl + { + + internal void* display; + + internal void* handle; + + internal bool ANGLE_platform_angle; + internal bool ANGLE_platform_angle_d3d; + internal bool ANGLE_platform_angle_metal; + internal bool ANGLE_platform_angle_opengl; + internal bool ANGLE_platform_angle_vulkan; + internal bool EXT_client_extensions; + internal bool EXT_platform_base; + internal bool EXT_platform_wayland; + internal bool EXT_platform_x11; + internal bool EXT_present_opaque; + internal bool KHR_colorSpace; + internal bool KHR_context_flush_control; + + internal bool KHR_create_context; + internal bool KHR_create_context_no_error; + internal bool KHR_get_all_proc_addresses; + internal bool prefix; + internal int major, minor; + + internal int platform; + internal IntPtr BindAPI; + internal IntPtr CreateContext; + internal IntPtr CreatePlatformWindowSurfaceEXT; + internal IntPtr CreateWindowSurface; + internal IntPtr DestroyContext; + internal IntPtr DestroySurface; + + internal IntPtr GetConfigAttrib; + internal IntPtr GetConfigs; + internal IntPtr GetDisplay; + internal IntPtr GetError; + + internal IntPtr GetPlatformDisplayEXT; + internal IntPtr GetProcAddress; + internal IntPtr Initialize; + internal IntPtr MakeCurrent; + internal IntPtr QueryString; + internal IntPtr SwapBuffers; + internal IntPtr SwapInterval; + internal IntPtr Terminate; + + } + + internal unsafe struct Osmesa + { + + private void* handle; + + private IntPtr CreateContextAttribs; + + private IntPtr CreateContextExt; + private IntPtr DestroyContext; + private IntPtr GetColorBuffer; + private IntPtr GetDepthBuffer; + private IntPtr GetProcAddress; + private IntPtr MakeCurrent; + + } + + internal unsafe struct vk + { + + private void* handle; + + private GLFWbool available; + private GLFWbool EXT_metal_surface; + private GLFWbool KHR_surface; + private GLFWbool KHR_wayland_surface; + private GLFWbool KHR_win32_surface; + private GLFWbool KHR_xcb_surface; + private GLFWbool KHR_xlib_surface; + private GLFWbool MVK_macos_surface; + private IntPtr GetInstanceProcAddr; + private fixed ulong extensions[ 2 ]; + + public vk() { } + + } + + internal unsafe struct Callbacks + { + + private IntPtr joystick; + + private IntPtr monitor; + + } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWmapelement + { + + private byte index; + + private byte type; + + private sbyte axisOffset; + private sbyte axisScale; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWmapping + { + + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 6 )] + private GLFWmapelement[] axes = new GLFWmapelement[6]; + + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 15 )] + private GLFWmapelement[] buttons = new GLFWmapelement[15]; + private fixed byte guid[ 33 ]; + + private fixed byte name[ 128 ]; + + public GLFWmapping() { } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWjoystick + { + + private float* axes; + private byte* buttons; + private byte* hats; + private void* userPointer; + private fixed byte guid[ 33 ]; + private fixed byte name[ 128 ]; + + private GLFWbool allocated; + private GLFWbool connected; + private int axisCount; + private int buttonCount; + private int hatCount; + + //GLFWmapping* mapping; + private IntPtr mapping; + + // This is defined in platform.h + // not completed in transforming + // GLFW_PLATFORM_JOYSTICK_STATE; + + public GLFWjoystick() { } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWls + { + + // This is defined in platform.h + + //GLFW_PLATFORM_TLS_STATE + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWplatform + { + + private int platformID; + + // init + //GLFWbool(*init)(void); + private IntPtr init; + + //void (* terminate) (void); + private IntPtr terminate; + internal IntPtr createCursor; + internal IntPtr createStandardCursor; + + // window + internal IntPtr createWindow; + internal IntPtr destroyCursor; + + internal IntPtr destroyWindow; + internal IntPtr focusWindow; + internal IntPtr framebufferTransparent; + + // monitor + internal IntPtr freeMonitor; + internal IntPtr getClipboardString; + + internal IntPtr getEGLNativeDisplay; + internal IntPtr getEGLNativeWindow; + + // EGL + //EGLenum(*getEGLPlatform)(EGLint**); + //EGLNativeDisplayType(*getEGLNativeDisplay)(void); + //EGLNativeWindowType(*getEGLNativeWindow)(glfwWindow*); + internal IntPtr getEGLPlatform; + internal IntPtr getFramebufferSize; + internal IntPtr getGammaRamp; + internal IntPtr getKeyScancode; + internal IntPtr getMappingName; + internal IntPtr getMonitorContentScale; + + internal IntPtr getMonitorPos; + internal IntPtr getMonitorWorkarea; + + // vulkan + //void (* getRequiredInstanceExtensions) (byte**); + //GLFWbool(*getPhysicalDevicePresentationSupport)(VkInstance, VkPhysicalDevice, uint32_t); + //VkResult(*createWindowSurface)(VkInstance, glfwWindow*,const VkAllocationCallbacks*, VkSurfaceKHR*); + internal IntPtr getRequiredInstanceExtensions; + internal IntPtr getScancodeName; + internal IntPtr getVideoMode; + internal IntPtr getVideoModes; + internal IntPtr getWindowContentScale; + internal IntPtr getWindowFrameSize; + internal IntPtr getWindowOpacity; + internal IntPtr getWindowPos; + internal IntPtr getWindowSize; + internal IntPtr GLFWwindow; + internal IntPtr hideWindow; + internal IntPtr iconifyWindow; + internal IntPtr initJoysticks; + internal IntPtr maximizeWindow; + internal IntPtr pollEvents; + internal IntPtr pollJoystick; + internal IntPtr postEmptyEvent; + internal IntPtr rawMouseMotionSupported; + internal IntPtr requestWindowAttention; + internal IntPtr restoreWindow; + internal IntPtr setClipboardString; + internal IntPtr setCursor; + internal IntPtr setCursorMode; + + #region input + + /* void (* getCursorPos) (glfwWindow*, double*, double*); + void (* setCursorPos) (glfwWindow*, double, double); + void (* setCursorMode) (glfwWindow*, int); + void (* setRawMouseMotion) (glfwWindow*, GLFWbool); + GLFWbool(*rawMouseMotionSupported)(void); + GLFWbool(*createCursor)(GLFWcursor*,const GLFWimage*,int,int); + GLFWbool(*createStandardCursor)(GLFWcursor*, int); + void (* destroyCursor) (GLFWcursor*); + void (* setCursor) (glfwWindow*, GLFWcursor*); + const byte* (*getScancodeName)(int); + int (* getKeyScancode) (int); + void (* setClipboardString) (const byte*); + const byte* (*getClipboardString)(void); + GLFWbool(*initJoysticks)(void); + void (* terminateJoysticks) (void); + GLFWbool(*pollJoystick)(GLFWjoystick*, int); + const byte* (*getMappingName)(void); + void (* updateGamepadGUID) (byte*); + // monitor + void (* freeMonitor) (GLFWmonitor*); + void (* getMonitorPos) (GLFWmonitor*, int*, int*); + void (* getMonitorContentScale) (GLFWmonitor*, float*, float*); + void (* getMonitorWorkarea) (GLFWmonitor*, int*, int*, int*, int*); + glfwVideomode* (* getVideoModes) (GLFWmonitor*, int*); + void (* getVideoMode) (GLFWmonitor*, glfwVideomode*); + GLFWbool(*getGammaRamp)(GLFWmonitor*, glfwGammaramp*); + void (* setGammaRamp) (GLFWmonitor*,const glfwGammaramp*); + // window + GLFWbool(*createWindow)(glfwWindow*,const GLFWwndconfig*,const GLFWctxconfig*,const GLFWfbconfig*); + void (* destroyWindow) (glfwWindow*); + void (* setWindowTitle) (glfwWindow*,const byte*); + void (* setWindowIcon) (glfwWindow*, int,const GLFWimage*); + void (* getWindowPos) (glfwWindow*, int*, int*); + void (* setWindowPos) (glfwWindow*, int, int); + void (* getWindowSize) (glfwWindow*, int*, int*); + void (* setWindowSize) (glfwWindow*, int, int); + void (* setWindowSizeLimits) (glfwWindow*, int, int, int, int); + void (* setWindowAspectRatio) (glfwWindow*, int, int); + void (* getFramebufferSize) (glfwWindow*, int*, int*); + void (* getWindowFrameSize) (glfwWindow*, int*, int*, int*, int*); + void (* getWindowContentScale) (glfwWindow*, float*, float*); + void (* iconifyWindow) (glfwWindow*); + void (* restoreWindow) (glfwWindow*); + void (* maximizeWindow) (glfwWindow*); + void (* showWindow) (glfwWindow*); + void (* hideWindow) (glfwWindow*); + void (* requestWindowAttention) (glfwWindow*); + void (* focusWindow) (glfwWindow*); + void (* setWindowMonitor) (glfwWindow*, GLFWmonitor*, int, int, int, int, int); + GLFWbool(*windowFocused)(glfwWindow*); + GLFWbool(*windowIconified)(glfwWindow*); + GLFWbool(*windowVisible)(glfwWindow*); + GLFWbool(*windowMaximized)(glfwWindow*); + GLFWbool(*windowHovered)(glfwWindow*); + GLFWbool(*framebufferTransparent)(glfwWindow*); + float (* getWindowOpacity) (glfwWindow*); + void (* setWindowResizable) (glfwWindow*, GLFWbool); + void (* setWindowDecorated) (glfwWindow*, GLFWbool); + void (* setWindowFloating) (glfwWindow*, GLFWbool); + void (* setWindowOpacity) (glfwWindow*, float); + void (* setWindowMousePassthrough) (glfwWindow*, GLFWbool); + void (* pollEvents) (void); + void (* waitEvents) (void); + void (* waitEventsTimeout) (double); + void (* postEmptyEvent) (void); + */ + + #endregion + + internal IntPtr setCursorPos; + internal IntPtr setGammaRamp; + internal IntPtr setRawMouseMotion; + internal IntPtr setWindowAspectRatio; + internal IntPtr setWindowDecorated; + internal IntPtr setWindowFloating; + internal IntPtr setWindowIcon; + internal IntPtr setWindowMonitor; + internal IntPtr setWindowMousePassthrough; + internal IntPtr setWindowOpacity; + internal IntPtr setWindowPos; + internal IntPtr setWindowResizable; + internal IntPtr setWindowSize; + internal IntPtr setWindowSizeLimits; + internal IntPtr setWindowTitle; + internal IntPtr showWindow; + internal IntPtr terminateJoysticks; + internal IntPtr updateGamepadGUID; + + internal IntPtr VkPhysicalDevice; + internal IntPtr waitEvents; + internal IntPtr waitEventsTimeout; + internal IntPtr windowFocused; + internal IntPtr windowHovered; + internal IntPtr windowIconified; + internal IntPtr windowMaximized; + internal IntPtr windowVisible; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWmutex + { + + // This is defined in platform.h + //GLFW_PLATFORM_MUTEX_STATE + } + + //public unsafe struct VkAllocationCallbacks { } + + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct VkExtensionProperties + { + + private fixed byte extensionName[ 256 ]; + private uint specVersion; + + public VkExtensionProperties() { } + + } + + /* + [StructLayout(LayoutKind.Sequential)] + internal unsafe struct GLFWerror + { + IntPtr next; + int code; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] + byte[] description = new byte[1024]; + + public GLFWerror() + { + } + } + */ + + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct uintptr_t + { + + [FieldOffset( 0 )] + private long part1; + + [FieldOffset( 8 )] + private long part2; + + } + + #endregion GLFW3 struct + + #region glad struct + + [StructLayout( LayoutKind.Sequential )] + internal struct GLsync + { + + public IntPtr Handle; + + } + + #endregion glad struct +} + +/**/ \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Internal/VisibaleRegulation.cs b/内核源代码/StgSharp.Common/Internal/VisibaleRegulation.cs new file mode 100644 index 00000000..df586253 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/VisibaleRegulation.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="VisibaleRegulation.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; + +[assembly: InternalsVisibleTo( "StgSharp" )] +[assembly: InternalsVisibleTo( "StgSharp.Model" )] +[assembly: InternalsVisibleTo( "StgSharp.Generator" )] + +namespace StgSharp.Internal +{ + internal class VisibaleRegulation { } +} diff --git a/内核源代码/StgSharp.Common/Internal/glfw.cs b/内核源代码/StgSharp.Common/Internal/glfw.cs new file mode 100644 index 00000000..79ea07f2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/glfw.cs @@ -0,0 +1,579 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glfw.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 System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal +{ + internal partial class InternalIO + { + + #region api call + + [DllImport( SSC_libName, EntryPoint = "glfwInit" )] + internal static extern unsafe int glfwInit(); + + [DllImport( SSC_libName, EntryPoint = "glfwTerminate" )] + internal static extern unsafe void glfwTerminate(); + + [DllImport( SSC_libName, EntryPoint = "glfwInitHint" )] + internal static extern unsafe void glfwInitHint( int hint, int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetVersion" )] + internal static extern unsafe void glfwGetVersion( + int* major, + int* minor, + int* rev ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetVersionString" )] + internal static extern unsafe byte* glfwGetVersionString(); + + [DllImport( SSC_libName, EntryPoint = "glfwGetError" )] + internal static extern unsafe int glfwGetError( byte** description ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetErrorCallback" )] + internal static extern unsafe GLFWerrorfun glfwSetErrorCallback( + GLFWerrorfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitors" )] + internal static extern unsafe IntPtr* glfwGetMonitors( int* count ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetPrimaryMonitor" )] + internal static extern unsafe IntPtr glfwGetPrimaryMonitor(); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorPos" )] + internal static extern unsafe void glfwGetMonitorPos( + IntPtr monitor, + int* xpos, + int* ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorWorkarea" )] + internal static extern unsafe void glfwGetMonitorWorkarea( + IntPtr monitor, + int* xpos, + int* ypos, + int* width, + int* height ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorPhysicalSize" )] + internal static extern unsafe void glfwGetMonitorPhysicalSize( + IntPtr monitor, + int* widthMM, + int* heightMM ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorContentScale" )] + internal static extern unsafe void glfwGetMonitorContentScale( + IntPtr monitor, + float* xscale, + float* yscale ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorName" )] + internal static extern unsafe byte* glfwGetMonitorName( IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetMonitorUserPointer" )] + internal static extern unsafe void glfwSetMonitorUserPointer( + IntPtr monitor, + void* pointer ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorUserPointer" )] + internal static extern unsafe void* glfwGetMonitorUserPointer( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetMonitorCallback" )] + internal static extern unsafe GLFWmonitorfun glfwSetMonitorCallback( + GLFWmonitorfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetVideoModes" )] + internal static extern unsafe glfwVideomode* glfwGetVideoModes( + IntPtr monitor, + int* count ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetVideoMode" )] + internal static extern unsafe glfwVideomode* glfwGetVideoMode( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetGamma" )] + internal static extern unsafe void glfwSetGamma( + IntPtr monitor, + float gamma ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetGammaRamp" )] + internal static extern unsafe glfwGammaramp* glfwGetGammaRamp( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetGammaRamp" )] + internal static extern unsafe void glfwSetGammaRamp( + IntPtr monitor, + glfwGammaramp* ramp ); + + [DllImport( SSC_libName, EntryPoint = "glfwDefaultWindowHints" )] + internal static extern unsafe void glfwDefaultWindowHints(); + + [DllImport( SSC_libName, EntryPoint = "glfwWindowHint" )] + internal static extern unsafe void glfwWindowHint( int hint, int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwWindowHintString" )] + internal static extern unsafe void glfwWindowHintString( + int hint, + byte* value ); + + [DllImport( SSC_libName, EntryPoint = "glfwCreateWindow" )] + internal static extern unsafe IntPtr glfwCreateWindow( + int width, + int height, + byte[] title, + IntPtr monitor, + IntPtr share ); + + [DllImport( SSC_libName, EntryPoint = "glfwDestroyWindow" )] + internal static extern unsafe void glfwDestroyWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwWindowShouldClose" )] + internal static extern unsafe int glfwWindowShouldClose( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowShouldClose" )] + internal static extern unsafe void glfwSetWindowShouldClose( + IntPtr window, + int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowTitle" )] + internal static extern unsafe void glfwSetWindowTitle( + IntPtr window, + byte* title ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowIcon" )] + internal static extern unsafe void glfwSetWindowIcon( + IntPtr window, + int count, + GLFWimage* images ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowPos" )] + internal static extern unsafe void glfwGetWindowPos( + IntPtr window, + int* xpos, + int* ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowPos" )] + internal static extern unsafe void glfwSetWindowPos( + IntPtr window, + int xpos, + int ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowSize" )] + internal static extern unsafe void glfwGetWindowSize( + IntPtr window, + int* width, + int* height ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowSizeLimits" )] + internal static extern unsafe void glfwSetWindowSizeLimits( + IntPtr window, + int minwidth, + int minheight, + int maxwidth, + int maxheight ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowAspectRatio" )] + internal static extern unsafe void glfwSetWindowAspectRatio( + IntPtr window, + int numer, + int denom ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowSize" )] + internal static extern unsafe void glfwSetWindowSize( + IntPtr window, + int width, + int height ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetFramebufferSize" )] + internal static extern unsafe void glfwGetFramebufferSize( + IntPtr window, + int* width, + int* height ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowFrameSize" )] + internal static extern unsafe void glfwGetWindowFrameSize( + IntPtr window, + int* left, + int* top, + int* right, + int* bottom ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowContentScale" )] + internal static extern unsafe void glfwGetWindowContentScale( + IntPtr window, + float* xscale, + float* yscale ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowOpacity" )] + internal static extern unsafe float glfwGetWindowOpacity( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowOpacity" )] + internal static extern unsafe void glfwSetWindowOpacity( + IntPtr window, + float opacity ); + + [DllImport( SSC_libName, EntryPoint = "glfwIconifyWindow" )] + internal static extern unsafe void glfwIconifyWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwRestoreWindow" )] + internal static extern unsafe void glfwRestoreWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwMaximizeWindow" )] + internal static extern unsafe void glfwMaximizeWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwShowWindow" )] + internal static extern unsafe void glfwShowWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwHideWindow" )] + internal static extern unsafe void glfwHideWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwFocusWindow" )] + internal static extern unsafe void glfwFocusWindow( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwRequestWindowAttention" )] + internal static extern unsafe void glfwRequestWindowAttention( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowMonitor" )] + internal static extern unsafe IntPtr glfwGetWindowMonitor( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowMonitor" )] + internal static extern unsafe void glfwSetWindowMonitor( + IntPtr window, + IntPtr monitor, + int xpos, + int ypos, + int width, + int height, + int refreshRate ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowAttrib" )] + internal static extern unsafe int glfwGetWindowAttrib( + IntPtr window, + int attrib ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowAttrib" )] + internal static extern unsafe void glfwSetWindowAttrib( + IntPtr window, + int attrib, + int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowUserPointer" )] + internal static extern unsafe void glfwSetWindowUserPointer( + IntPtr window, + void* pointer ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowUserPointer" )] + internal static extern unsafe void* glfwGetWindowUserPointer( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowPosCallback" )] + internal static extern unsafe GLFWwindowposfun glfwSetWindowPosCallback( + IntPtr window, + IntPtr callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowSizeCallback" )] + internal static extern unsafe GLFWwindowsizefun glfwSetWindowSizeCallback( + IntPtr window, + GLFWwindowsizefun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowCloseCallback" )] + internal static extern unsafe GLFWwindowclosefun glfwSetWindowCloseCallback( + IntPtr window, + GLFWwindowclosefun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowRefreshCallback" )] + internal static extern unsafe GLFWwindowrefreshfun glfwSetWindowRefreshCallback( + IntPtr window, + GLFWwindowrefreshfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowFocusCallback" )] + internal static extern unsafe GLFWwindowfocusfun glfwSetWindowFocusCallback( + IntPtr window, + GLFWwindowfocusfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowIconifyCallback" )] + internal static extern unsafe GLFWwindowiconifyfun glfwSetWindowIconifyCallback( + IntPtr window, + GLFWwindowiconifyfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowMaximizeCallback" )] + internal static extern unsafe GLFWwindowmaximizefun glfwSetWindowMaximizeCallback( + IntPtr window, + GLFWwindowmaximizefun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetFramebufferSizeCallback" )] + internal static extern unsafe FrameBufferSizeHandler glfwSetFramebufferSizeCallback( + IntPtr window, + IntPtr callback ); + + [DllImport( + SSC_libName, + EntryPoint = "glfwSetWindowContentScaleCallback" )] + internal static extern unsafe GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback( + IntPtr window, + GLFWwindowcontentscalefun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwPollEvents" )] + internal static extern unsafe void glfwPollEvents(); + + [DllImport( SSC_libName, EntryPoint = "glfwWaitEvents" )] + internal static extern unsafe void glfwWaitEvents(); + + [DllImport( SSC_libName, EntryPoint = "glfwWaitEventsTimeout" )] + internal static extern unsafe void glfwWaitEventsTimeout( + double timeout ); + + [DllImport( SSC_libName, EntryPoint = "glfwPostEmptyEvent" )] + internal static extern unsafe void glfwPostEmptyEvent(); + + [DllImport( SSC_libName, EntryPoint = "glfwGetInputMode" )] + internal static extern unsafe int glfwGetInputMode( + IntPtr window, + int mode ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetInputMode" )] + internal static extern unsafe void glfwSetInputMode( + IntPtr window, + int mode, + int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwRawMouseMotionSupported" )] + internal static extern unsafe int glfwRawMouseMotionSupported(); + + [DllImport( SSC_libName, EntryPoint = "glfwGetKeyName" )] + internal static extern unsafe byte* glfwGetKeyName( + int key, + int scancode ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetKeyScancode" )] + internal static extern unsafe int glfwGetKeyScancode( int key ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetKey" )] + internal static extern unsafe KeyStatus glfwGetKey( + IntPtr window, + int key ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMouseButton" )] + internal static extern unsafe int glfwGetMouseButton( + IntPtr window, + int button ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetCursorPos" )] + internal static extern unsafe void glfwGetCursorPos( + IntPtr window, + double* xpos, + double* ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetCursorPos" )] + internal static extern unsafe void glfwSetCursorPos( + IntPtr window, + double xpos, + double ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwCreateCursor" )] + internal static extern unsafe GLFWcursor* glfwCreateCursor( + GLFWimage* image, + int xhot, + int yhot ); + + [DllImport( SSC_libName, EntryPoint = "glfwCreateStandardCursor" )] + internal static extern unsafe GLFWcursor* glfwCreateStandardCursor( + int shape ); + + [DllImport( SSC_libName, EntryPoint = "glfwDestroyCursor" )] + internal static extern unsafe void glfwDestroyCursor( + GLFWcursor* cursor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetCursor" )] + internal static extern unsafe void glfwSetCursor( + IntPtr window, + GLFWcursor* cursor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetKeyCallback" )] + internal static extern unsafe GLFWkeyfun glfwSetKeyCallback( + IntPtr window, + GLFWkeyfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetCharCallback" )] + internal static extern unsafe GLFWcharfun glfwSetCharCallback( + IntPtr window, + GLFWcharfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetCharModsCallback" )] + internal static extern unsafe GLFWcharmodsfun glfwSetCharModsCallback( + IntPtr window, + GLFWcharmodsfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetMouseButtonCallback" )] + internal static extern unsafe GLFWmousebuttonfun glfwSetMouseButtonCallback( + IntPtr window, + GLFWmousebuttonfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetCursorPosCallback" )] + internal static extern unsafe GLFWcursorposfun glfwSetCursorPosCallback( + IntPtr window, + GLFWcursorposfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetCursorEnterCallback" )] + internal static extern unsafe GLFWcursorenterfun glfwSetCursorEnterCallback( + IntPtr window, + GLFWcursorenterfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetScrollCallback" )] + internal static extern unsafe GLFWscrollfun glfwSetScrollCallback( + IntPtr window, + GLFWscrollfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetDropCallback" )] + internal static extern unsafe GLFWdropfun glfwSetDropCallback( + IntPtr window, + GLFWdropfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwJoystickPresent" )] + internal static extern unsafe int glfwJoystickPresent( int jid ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickAxes" )] + internal static extern unsafe float* glfwGetJoystickAxes( + int jid, + int* count ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickButtons" )] + internal static extern unsafe byte* glfwGetJoystickButtons( + int jid, + int* count ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickHats" )] + internal static extern unsafe byte* glfwGetJoystickHats( + int jid, + int* count ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickName" )] + internal static extern unsafe byte* glfwGetJoystickName( int jid ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickGUID" )] + internal static extern unsafe byte* glfwGetJoystickGUID( int jid ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetJoystickUserPointer" )] + internal static extern unsafe void glfwSetJoystickUserPointer( + int jid, + void* pointer ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickUserPointer" )] + internal static extern unsafe void* glfwGetJoystickUserPointer( + int jid ); + + [DllImport( SSC_libName, EntryPoint = "glfwJoystickIsGamepad" )] + internal static extern unsafe int glfwJoystickIsGamepad( int jid ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetJoystickCallback" )] + internal static extern unsafe GLFWjoystickfun glfwSetJoystickCallback( + GLFWjoystickfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwUpdateGamepadMappings" )] + internal static extern unsafe int glfwUpdateGamepadMappings( byte* str ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetGamepadName" )] + internal static extern unsafe byte* glfwGetGamepadName( int jid ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetGamepadState" )] + internal static extern unsafe int glfwGetGamepadState( + int jid, + GLFWgamepadstate* state ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetClipboardString" )] + internal static extern unsafe void glfwSetClipboardString( + IntPtr window, + byte* str ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetClipboardString" )] + internal static extern unsafe byte* glfwGetClipboardString( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetTime" )] + internal static extern unsafe double glfwGetTime(); + + [DllImport( SSC_libName, EntryPoint = "glfwSetTime" )] + internal static extern unsafe void glfwSetTime( double time ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetTimerValue" )] + internal static extern unsafe ulong* glfwGetTimerValue(); + + [DllImport( SSC_libName, EntryPoint = "glfwGetTimerFrequency" )] + internal static extern unsafe ulong* glfwGetTimerFrequency(); + + [DllImport( SSC_libName, EntryPoint = "glfwMakeContextCurrent" )] + internal static extern unsafe void glfwMakeContextCurrent( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetCurrentContext" )] + internal static extern unsafe IntPtr glfwGetCurrentContext(); + + [DllImport( SSC_libName, EntryPoint = "glfwSwapBuffers" )] + internal static extern unsafe void glfwSwapBuffers( IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSwapInterval" )] + internal static extern unsafe void glfwSwapInterval( int interval ); + + [DllImport( SSC_libName, EntryPoint = "glfwExtensionSupported" )] + internal static extern unsafe int glfwExtensionSupported( + byte* extension ); + + [DllImport( + SSC_libName, + EntryPoint = "glfwGetProcAddress", + CharSet = CharSet.Ansi )] + internal static extern unsafe IntPtr glfwGetProcAddress( + string procname ); + + [DllImport( SSC_libName, EntryPoint = "glfwVulkanSupported" )] + internal static extern unsafe int glfwVulkanSupported(); + + [DllImport( + SSC_libName, + EntryPoint = "glfwGetRequiredInstanceExtensions" )] + internal static extern unsafe byte** glfwGetRequiredInstanceExtensions( + uint* count ); + + //[DllImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal extern unsafe static GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, byte* procname); + //[DllImport(InternalIO.SSC_libname, EntryPoint = "glfwGetPhysicalDevicePresentationSupport")] internal extern unsafe static int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint* queuefamily); + //[DllImport(InternalIO.SSC_libname, EntryPoint = "glfwCreateWindowSurface")] internal extern unsafe static VkResult glfwCreateWindowSurface(VkInstance instance, glfwWindow* window, VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + + #endregion api call + } +} diff --git a/内核源代码/StgSharp.Common/Internal/publicType.cs b/内核源代码/StgSharp.Common/Internal/publicType.cs new file mode 100644 index 00000000..8aaf866c --- /dev/null +++ b/内核源代码/StgSharp.Common/Internal/publicType.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="publicType.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.Runtime.InteropServices; +using System.Text; + +namespace StgSharp +{ + public enum LogType + { + + Error, + Warning, + Info, + InfoError, + InfoWarning, + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/Blueprint.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/Blueprint.cs new file mode 100644 index 00000000..e4540b9c --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/Blueprint.cs @@ -0,0 +1,188 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintSchedueler.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 System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace StgSharp.Blueprint +{ + /// + /// A sets of complex logic designed for running in multi threads environment. Warning: do not + /// run a instance in multi threads more than once. + /// + public partial class BlueprintSchedueler : IConvertableToBlueprintNode + { + + private BeginningNode beginNode; + private Dictionary allNode; + private EndingNode endNode; + + private Func terminate; + private List globalNodeList; + private List nativeNodeList; + + private SemaphoreSlim runningStat; + + internal int currentGlobalNodeIndex; + internal int currentNativeNodeIndex; + + public BlueprintSchedueler() + { + allNode = new Dictionary(); + globalNodeList = new List(); + nativeNodeList = new List(); + runningStat = new SemaphoreSlim( 1, 1 ); + beginNode = new BeginningNode( this ); + endNode = new EndingNode( this ); + } + + public BlueprintNode BeginLayer => beginNode; + + public BlueprintNode EndLayer => endNode; + + public bool IsRunning + { + get => runningStat.CurrentCount == 0; + } + + public ReadOnlySpan InputInterfacesName + { + get { return beginNode.OutputInterfaces + .Select( p => p.Key ) + .ToArray(); } + } + + public ReadOnlySpan OutputInterfacesName + { + get { return beginNode.OutputInterfaces + .Select( p => p.Key ) + .ToArray(); } + } + + /**/ + + internal SemaphoreSlim RunningStat + { + get => runningStat; + } + /**/ + + public void AddNode( BlueprintNode node, bool isNative ) + { + _ = node ?? throw new ArgumentNullException( nameof( node ) ); + node.IsNative = isNative; + allNode.Add( node.Name, node ); + } + + + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) + { + BlueprintRunner.Run( this ); + } + + public BlueprintNodeOperation Operation + { + get => ExecuteMain; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public (string name, BlueprintPipelineArgs arg)[] GetOutput() + { + return endNode.OutputData; + } + + public void Init() + { + foreach( KeyValuePair item in allNode ) { + if( item.Value.IsNative ) { + nativeNodeList.Add( item.Value ); + } else { + globalNodeList.Add( item.Value ); + } + } + nativeNodeList.Sort(); + globalNodeList.Sort(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetInput( + params (string name, BlueprintPipelineArgs arg)[] parameters ) + { + beginNode.InputData = parameters; + } + + public void Terminate() + { + Interlocked.Exchange( ref currentGlobalNodeIndex, int.MaxValue ); + Interlocked.Exchange( ref currentNativeNodeIndex, int.MaxValue ); + } + + internal bool RequestNexGlobalNode( out BlueprintNode node ) + { + if( currentGlobalNodeIndex < globalNodeList.Count ) { + node = globalNodeList[ currentGlobalNodeIndex ]; + Interlocked.Increment( ref currentGlobalNodeIndex ); + return true; + } + node = default!; + return false; + } + + internal bool RequestNextNativeNode( out BlueprintNode node ) + { + if( currentNativeNodeIndex < nativeNodeList.Count ) { + node = nativeNodeList[ currentNativeNodeIndex ]; + Interlocked.Increment( ref currentNativeNodeIndex ); + return true; + } + node = default!; + return false; + } + + ~BlueprintSchedueler() + { + runningStat.Dispose(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintNode.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintNode.cs new file mode 100644 index 00000000..7e198ba1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintNode.cs @@ -0,0 +1,303 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintNode.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.Entities; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.Serialization; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + /// + /// + /// + /// + /// Reset pipeline has risk, this operation is a direct operation to port in current node, the + /// port on the other node cannot get the change. + /// +#pragma warning disable CA1036 + public class BlueprintNode : IComparable + #pragma warning restore CA1036 + { + + private static BlueprintNode _emptyNode = new BlueprintNode( + string.Empty, null!, false ); + + private static Dictionary _emptyLayer = new(); + private protected bool _levelAvailable, _nativeRequested; + private protected Dictionary _inputInterfaces; + private protected Dictionary _outputInterfaces; + private protected int _level; + private IConvertableToBlueprintNode _mainOperation; + private string _name; + + internal BlueprintNode( + string name, + IConvertableToBlueprintNode node, + bool isNative ) + { + _levelAvailable = false; + _name = name; + _nativeRequested = isNative; + _mainOperation = node; + _inputInterfaces = new Dictionary(); + _outputInterfaces = new Dictionary(); + foreach( string portName in node.InputInterfacesName ) { + _inputInterfaces.Add( portName, null! ); + } + + foreach( string portName in node.OutputInterfacesName ) { + _outputInterfaces.Add( portName, null! ); + } + } + + #pragma warning disable CS8618 + internal BlueprintNode( + BlueprintNodeOperation operation, + string name, + bool isNative, + string[] inputPorts, + string[] outputPorts ) + #pragma warning restore CS8618 + { + if( ( inputPorts == null ) || ( inputPorts.Length == 0 ) ) { + throw new ArgumentNullException( nameof( inputPorts ) ); + } + if( ( outputPorts == null ) || ( outputPorts.Length == 0 ) ) { + throw new ArgumentNullException( nameof( outputPorts ) ); + } + _levelAvailable = false; + _name = name; + _nativeRequested = isNative; + operation = operation ?? DefaultOperation; + _mainOperation = new DefaultConvertableToBlueprintNode( + operation, + inputPorts, + outputPorts); + _inputInterfaces = new Dictionary(); + _outputInterfaces = new Dictionary(); + foreach( string portName in inputPorts ) { + _inputInterfaces.Add( + portName, + SealedBlueprintPiipeline.SealOutput( this, name ) ); + } + foreach( string portName in outputPorts ) { + _outputInterfaces.Add( portName, null! ); + } + } + + protected static void DefaultOperation( + in Dictionary input, + in Dictionary output) + { + BlueprintPipeline.SkipAll(output); + } + + public static BlueprintNode Empty + { + get => _emptyNode; + } + + public bool IsNative + { + get => _nativeRequested; + internal set => _nativeRequested = value; + } + + public static Dictionary EmptyPortLayer + { + get => _emptyLayer; + } + + public int Level + { + get + { + if( _levelAvailable ) { + return _level; + } + _level = 0; + foreach( KeyValuePair item in _inputInterfaces ) { + if( item.Value == null ) { + continue; + } + if( _level < item.Value.Level ) { + _level = item.Value.Level; + } + } + _level += 1; + _levelAvailable = true; + return _level; + } + } + + public string Name => _name; + + internal Dictionary InputInterfaces => _inputInterfaces; + + internal Dictionary OutputInterfaces => _outputInterfaces; + + internal IConvertableToBlueprintNode Value + { + get => _mainOperation; + } + + public void Append( + [NotNull] BlueprintNode next, + string thisOutputPortName, + string afterInputPortName ) + { + this._levelAvailable = false; + BlueprintPipeline pipeline = new BlueprintPipeline( this, next ); + if( next is EndingNode enode ) { + enode.SetCertainInputPort( afterInputPortName, pipeline ); + } else { + next.SetCertainInputPort( afterInputPortName, pipeline ); + } + SetCertainOutputPort( thisOutputPortName, pipeline ); + } + + public int CompareTo( BlueprintNode other ) + { + if( null == other ) { + throw new ArgumentNullException( nameof( other ) ); + } + + return this.Level.CompareTo( other.Level ); + } + + public void Prepend( + [NotNull] BlueprintNode former, + string formerOutputPortName, + string thisInputPortName ) + { + this._levelAvailable = false; + BlueprintPipeline pipeline = new BlueprintPipeline( former, this ); + if( former is BeginningNode bnode ) { + bnode.SetCertainOutputPort( formerOutputPortName, pipeline ); + } else { + former.SetCertainOutputPort( formerOutputPortName, pipeline ); + } + SetCertainInputPort( thisInputPortName, pipeline ); + } + + public virtual void Run() + { + try { + //Console.WriteLine(_name); + BlueprintPipeline.WaitAll( _inputInterfaces ); + if( _mainOperation != null ) { + _mainOperation.Operation( + in _inputInterfaces, in _outputInterfaces ); + } + } + catch( Exception ) { + throw; + } + } + + #region port operation + + public BlueprintPipeline GetInputPort( string name ) + { + BlueprintPipeline ret; + if( !_inputInterfaces.TryGetValue( name, out ret ) ) { + throw new ArgumentOutOfRangeException( + $"Cannot find the interface named {name} in node {Name}." ); + } + return ret; + } + + public BlueprintPipeline GetOutputPort( string name ) + { + BlueprintPipeline ret; + if( !_outputInterfaces.TryGetValue( name, out ret ) ) { + throw new ArgumentOutOfRangeException( + $"Cannot find the interface named {name} in node {Name}." ); + } + return ret; + } + + public void SetCertainInputPort( + string name, + BlueprintPipeline pipeline ) + { + if( !_inputInterfaces.ContainsKey( name ) ) { + throw new ArgumentException( + $"Cannot find the interface named {name} in node {Name}." ); + } + _inputInterfaces[ name ] = pipeline; + } + + public void SetCertainOutputPort( + string name, + BlueprintPipeline pipeline ) + { + if( !_outputInterfaces.ContainsKey( name ) ) { + throw new ArgumentOutOfRangeException( + $"Cannot find the interface named {name} in node {Name}." ); + } + _outputInterfaces[ name ] = pipeline; + } + + #endregion + }//--------------------------------- end of class ----------------------------------- + + public class BlueprintNodeRunException : Exception + { + + protected BlueprintNodeRunException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + public BlueprintNodeRunException() { } + + public BlueprintNodeRunException( Exception ex ) + : base( string.Empty, ex ) { } + + public BlueprintNodeRunException( string message ) : base( message ) { } + + public BlueprintNodeRunException( + string message, + Exception innerException ) + : base( message, innerException ) { } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintNodeCraeater.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintNodeCraeater.cs new file mode 100644 index 00000000..0f6826a2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintNodeCraeater.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintNodeCraeater.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.Blueprint +{ + public partial class BlueprintSchedueler + { + + public BlueprintNode CreateBlueprintNode( + string name, + BlueprintNodeOperation operation, + string[] inputPort, + string[] outputPort, + bool isNative ) + { + BlueprintNode node = new BlueprintNode( + operation, name, isNative, inputPort, outputPort ); + if( isNative ) { + nativeNodeList.Add( node ); + } else { + globalNodeList.Add( node ); + } + return node; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintRunner.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintRunner.cs new file mode 100644 index 00000000..e2209255 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/BlueprintRunner.cs @@ -0,0 +1,226 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintRunner.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.Threading; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; + +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + public static class BlueprintRunner + { + + private static NodeRunner[] allAvailableTask = CreateBlueprintRunnerArray(); + private static CancellationTokenSource cts = new CancellationTokenSource(); + private static ConcurrentStack blueprintInWaiting + = new ConcurrentStack(); + private static int _callingThread; + private static SemaphoreSlim bpLock = new SemaphoreSlim( 0, 1 ); + + private static NodeRunner[] CreateBlueprintRunnerArray() + { + int count = Environment.ProcessorCount; + return new NodeRunner[ count < 2 ? count : count - 2]; + } + + /// + /// Only the fallowing occasions of calling are valid: + /// 1. no bp is running or the only bp is quitting. + /// 2. calling from the main thread and the current running bp. + /// + internal static bool IsValidCalling + { + get + { + if( ( NodeRunner.CurrentBlueprint == null ) || //no bp running at all + ( ( blueprintInWaiting.IsEmpty ) && ( NodeRunner.CurrentBlueprint.IsRunning == false ) ) ) + // a bp is quiting + { + //in case no bp is running + return true; + } + int? id = Task.CurrentId; + if( id is null ) { + // in case calling from main thread and current running bp + return _callingThread == Environment.CurrentManagedThreadId; + } + foreach( NodeRunner item in allAvailableTask ) { + if( item.Id == id ) { + //if calling from any bp running task + return true; + } + } + return false; + } + } + + public static void Run(BlueprintSchedueler blueprint) + { + //Console.WriteLine(); + if( blueprint == null ) { + return; + } + if( blueprint.IsRunning ) { + throw new InvalidOperationException( + "Attempt to run a blueprint instance twice." ); + } + if( IsValidCalling ) { + //Console.WriteLine("valid and run"); + if( InterruptAndRunNewBp( blueprint ) ) { + while (InterruptAndRunNewBp( + NodeRunner.CurrentBlueprint )){ }; + } + } else { + bpLock.Wait(); + if( InterruptAndRunNewBp( blueprint ) ) { + while (InterruptAndRunNewBp( + NodeRunner.CurrentBlueprint)) { } + } + + bpLock.Release(); + } + Interlocked.Exchange( ref _callingThread, -1 ); + } + + public static void SetMaxTaskCount( int size ) + { + if( size < 1 ) { + size = 1; + } + if( allAvailableTask.Length >= size ) { + for( int i = size; i < allAvailableTask.Length; i++ ) { + if( allAvailableTask[ i ] != null ) { + allAvailableTask[ i ].Cancel(); + } + } + } + Array.Resize( ref allAvailableTask, size ); + } + + public static void Terminate() + { + cts.Cancel(); + NodeRunner.CurrentBlueprint.Terminate(); + foreach( NodeRunner task in allAvailableTask ) { + task.Cts.Cancel(); + } + foreach( BlueprintSchedueler bp in blueprintInWaiting ) { + bp.Terminate(); + } + blueprintInWaiting.Clear(); + } + + internal static bool InterruptAndRunNewBp( BlueprintSchedueler newBp ) + { + Debug.Assert( newBp != null ); + if( ( newBp != NodeRunner.CurrentBlueprint ) && ( NodeRunner.CurrentBlueprint != null ) ) { + //if a running bp exists + blueprintInWaiting.Push( NodeRunner.CurrentBlueprint ); + } + + //load new bp to current bp + Interlocked.Exchange( ref NodeRunner.CurrentBlueprint!, newBp ); + Interlocked.Exchange( + ref _callingThread, Environment.CurrentManagedThreadId ); + + //run beginning node to init it first. + if( !NodeRunner.CurrentBlueprint.IsRunning ) { + ( NodeRunner.CurrentBlueprint.BeginLayer as BeginningNode )!.Run(); + } + + //refresh all tasks + for( int i = 0; i < allAvailableTask.Length; i++ ) { + NodeRunner item = allAvailableTask[ i ]; + if( ( item is null ) || item.IsCompleted ) { + allAvailableTask[ i ] = NodeRunner.Run(); + } + } + BlueprintNode node; + while( !cts.Token.IsCancellationRequested && NodeRunner.CurrentBlueprint + .RequestNextNativeNode( out node ) ) { + node.Run(); + if( !NodeRunner.CurrentBlueprint.IsRunning ) { + break; + } + } + ( NodeRunner.CurrentBlueprint.EndLayer as EndingNode )!.Run(); + return blueprintInWaiting.TryPeek( out NodeRunner.CurrentBlueprint ); + } + + } + + internal class NodeRunner : CancellableTask + { + + private static BlueprintSchedueler _current; + + internal NodeRunner() + : base() + { + _startup = InternalRun; + } + + internal static ref BlueprintSchedueler CurrentBlueprint + { + get => ref _current; + } + + internal static NodeRunner Run() + { + NodeRunner ret = new NodeRunner { _startup = InternalRun }; + ret._internalTask = Task.Run( ret.InternalAction ); + return ret; + } + + private static void InternalRun( CancellationToken token ) + { + //Console.WriteLine("Task Begin"); + BlueprintNode item; + while( ( CurrentBlueprint != null ) && CurrentBlueprint.IsRunning && !token.IsCancellationRequested && CurrentBlueprint.RequestNexGlobalNode( + out item ) ) { + //Console.WriteLine($"Get node of {item.Name}, going to run."); + item.Run(); + } + + //Console.WriteLine("Task Completed"); + } + + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/CrossFrameBlueprintNode.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/CrossFrameBlueprintNode.cs new file mode 100644 index 00000000..56039604 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/CrossFrameBlueprintNode.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CrossFrameBlueprintNode.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.Blueprint; + +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + public class CrossFrameOperation : IConvertableToBlueprintNode + { + private int currentCount; + private readonly int cycleCount; + private Action _mainExecution; + + public CrossFrameOperation( Action startup, int cycleCount ) + { + MainExecution = startup; + this.cycleCount = ( cycleCount > 1 ) ? + cycleCount : throw new ArgumentException( + $"{$"The {typeof(CrossFrameOperation).Name} crosses only one cycle, "}{$"please use a {typeof(BlueprintNode).Name} instead."}" ); + this.cycleCount = cycleCount; + currentCount = cycleCount; + } + + public Action MainExecution + { + get => _mainExecution; + private protected set => _mainExecution = value; + } + + private static string[] _inputName = ["TaskIn"]; + private static string[] _outputName = ["TaskOut"]; + + public BlueprintNodeOperation Operation + { + get => ExecuteMain; + } + + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) + { + if( currentCount < cycleCount ) { + Interlocked.Increment( ref currentCount ); + } else { + Interlocked.Exchange( ref currentCount, 0 ); + Task.Run( MainExecution ); + } + + //Console.WriteLine(currentCount); + BlueprintPipeline.SkipAll( output ); + } + + public ReadOnlySpan InputInterfacesName => _inputName; + + public ReadOnlySpan OutputInterfacesName => _outputName; + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/IConvertableToBlueprintNode.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/IConvertableToBlueprintNode.cs new file mode 100644 index 00000000..0b58561e --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/IConvertableToBlueprintNode.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IConvertableToBlueprintNode.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.Blueprint +{ + public delegate void BlueprintNodeOperation( + in Dictionary input, + in Dictionary output ); + + public interface IConvertableToBlueprintNode + { + public ReadOnlySpan InputInterfacesName + { + get; + } + + public ReadOnlySpan OutputInterfacesName + { + get; + } + + BlueprintNodeOperation Operation { get; } + + } + + internal class DefaultConvertableToBlueprintNode : IConvertableToBlueprintNode + { + + private string[] _input; + private string[] _output; + private BlueprintNodeOperation _execution; + + public DefaultConvertableToBlueprintNode( + BlueprintNodeOperation execution, + string[] input, + string[] output ) + { + _input = input; + _output = output; + _execution = execution; + } + + public BlueprintNodeOperation Operation => _execution; + + public ReadOnlySpan InputInterfacesName => _input; + + public ReadOnlySpan OutputInterfacesName => _output; + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/PipeLine.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/PipeLine.cs new file mode 100644 index 00000000..718c6cef --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/PipeLine.cs @@ -0,0 +1,164 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PipeLine.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.Numerics; +using System.Runtime.CompilerServices; +using System.Security.Authentication.ExtendedProtection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + public class BlueprintPipeline + { + + private protected BlueprintNode after; + private protected BlueprintNode former; + private protected BlueprintPipelineArgs args; + private protected SemaphoreSlim formerCompleteSemaphore; + + public BlueprintPipeline( BlueprintNode former, BlueprintNode after ) + { + this.former = former; + this.after = after; + formerCompleteSemaphore = new SemaphoreSlim( + initialCount: 0, maxCount: 1 ); + } + + public BlueprintNode After => after; + + public BlueprintNode Former => former; + + public BlueprintPipelineArgs Args + { + get => args; + set => args = value; + } + + public int Level => former.Level; + + public static void SkipAll( + Dictionary ports ) + { + if( ports == null ) { + return; + } + foreach( KeyValuePair item in ports ) { + if( item.Value != null ) { + item.Value.CompleteAndSkip(); + } + } + } + + public static void WaitAll( + Dictionary ports ) + { + if( ports == null ) { + return; + } + foreach( KeyValuePair item in ports ) { + if( item.Value != null ) { + item.Value.WaitForStart(); + } + } + } + + public virtual void WaitForStart() + { + //Console.WriteLine($"Waiting \t{former.ContextName}\t->\t{after.ContextName}"); + formerCompleteSemaphore.Wait(); + } + + ~BlueprintPipeline() + { + formerCompleteSemaphore.Dispose(); + } + + #region pipline op + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompleteAndSkip() + { + //Console.WriteLine($"Complete\t{former.Name}\t->\t{after.Name}"); + formerCompleteSemaphore.Release(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompleteAndWriteData( BlueprintPipelineArgs args ) + { + this.args = args; + CompleteAndSkip(); + } + + #endregion + } + + public abstract class BlueprintPipelineArgs + { + public object? Value + { + get; + set; + } + + public object? ValueDefault + { + get; + } + } + + public sealed class SealedBlueprintPiipeline:BlueprintPipeline + { + internal SealedBlueprintPiipeline(BlueprintNode former, BlueprintNode after): + base(former, after) + { + + } + + public static SealedBlueprintPiipeline SealOutput(BlueprintNode node, string portName) + { + return new SealedBlueprintPiipeline(node, BlueprintNode.Empty); + } + + public static SealedBlueprintPiipeline SealInput(BlueprintNode node, string portName) + { + return new SealedBlueprintPiipeline(BlueprintNode.Empty, node); + } + + public sealed override void WaitForStart() + { + + } + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/RouteSwitch.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/RouteSwitch.cs new file mode 100644 index 00000000..673ab96d --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/RouteSwitch.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RouteSwitch.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.Reflection.Emit; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace StgSharp.Blueprint +{ + public class RouteSwitch : BlueprintNode + { + + private protected Dictionary openingRule)> outputDictionary; + + public RouteSwitch( string name, bool isNative, string inputPorts ) + : base(DefaultOperation, name, isNative, [inputPorts], [string.Empty] ) + { + outputDictionary = new Dictionary openingRule)>( + ); + } + + public new int Level + { + get + { + if( _levelAvailable ) { + return _level; + } + _level = 0; + KeyValuePair item = _inputInterfaces.First( + ); + if( item.Value == null ) { + throw new InvalidOperationException(); + } + if( _level <= item.Value.Level ) { + _level = item.Value.Level; + } + return _level; + } + } + + public new void AddBefore( + BlueprintNode after, + string thisOutputPortName, + string afterInputPortName ) + { + this.AppendNode( after, afterInputPortName, () => true ); + } + + public void AppendNode( + BlueprintNode node, + string portName, + Func openningRule ) + { + if( node == null ) { + throw new ArgumentNullException( nameof( node ) ); + } + string indexName = $"{node.Name}.{portName}"; + BlueprintPipeline p = new BlueprintPipeline( this, node ); + node.InputInterfaces[ portName ] = p; + outputDictionary.Add( indexName, (p, openningRule) ); + } + + public new void Run() + { + try { + BlueprintPipeline input = InputInterfaces.First().Value; + input.WaitForStart(); + foreach( KeyValuePair openingRule)> item in outputDictionary ) { + if( item.Value.openingRule() ) { + item.Value.pipeline.CompleteAndWriteData( input.Args ); + } + } + } + catch( Exception ) { + throw; + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Blueprint/SideNode.cs b/内核源代码/StgSharp.Common/Logic/Blueprint/SideNode.cs new file mode 100644 index 00000000..131716a5 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Blueprint/SideNode.cs @@ -0,0 +1,121 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SideNode.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.Globalization; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + internal sealed class BeginningNode : BlueprintNode + { + + private BlueprintSchedueler _bp; + + public BeginningNode( BlueprintSchedueler bp ) + : base(DefaultOperation, name: "BeginningNode", true, ["default"], ["default"] ) + { + _bp = bp; + } + + internal (string name, BlueprintPipelineArgs arg)[] InputData + { + set + { + if( value == null ) { + return; + } + foreach( (string name, BlueprintPipelineArgs arg) parameter in value ) { + OutputInterfaces[ parameter.name ].Args = parameter.arg; + } + } + } + + public override void Run() + { + _bp.RunningStat.Wait(); + BlueprintPipeline.SkipAll( _outputInterfaces ); + } + + public new void SetCertainOutputPort( + string name, + BlueprintPipeline pipeline ) + { + if( _outputInterfaces.ContainsKey( name ) ) { + _outputInterfaces[ name ] = pipeline; + } + _outputInterfaces.Add( name, pipeline ); + } + + } + + internal sealed class EndingNode : BlueprintNode + { + + private BlueprintSchedueler _bp; + + public EndingNode( BlueprintSchedueler bp ) + : base(DefaultOperation, name: "EndingNode", true, ["default"], ["default"] ) + { + _bp = bp; + } + + internal (string name, BlueprintPipelineArgs arg)[] OutputData + { + get { return InputInterfaces.Select( + key => (key.Key, key.Value.Args) ) + .ToArray(); } + } + + public override void Run() + { + BlueprintPipeline.WaitAll( _inputInterfaces ); + Interlocked.Exchange( ref _bp.currentGlobalNodeIndex, 0 ); + Interlocked.Exchange( ref _bp.currentNativeNodeIndex, 0 ); + _bp.RunningStat.Release(); + } + + public new void SetCertainInputPort( + string name, + BlueprintPipeline pipeline ) + { + if( _inputInterfaces.ContainsKey( name ) ) { + _inputInterfaces[ name ] = pipeline; + } + _inputInterfaces.Add( name, pipeline ); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Logic/Counter.cs b/内核源代码/StgSharp.Common/Logic/Counter.cs new file mode 100644 index 00000000..3295b105 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Counter.cs @@ -0,0 +1,131 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Counter.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; + +namespace StgSharp +{ + public class Counter + where T: struct, IConvertible, IFormattable, IComparable + #if NET8_OR_GREATER + ,INumber + #endif + { + internal dynamic _value; + + internal readonly T _defualtIncreament; + internal readonly T _defualtDecreament; + internal readonly T _defaultValue; + + public Counter( T defualtValue, T defualtIncreament, T defualtDecreament ) + { + Type tType = typeof( T ); + if ( + tType != typeof(byte) && + tType != typeof(short) && + tType != typeof(int) && + tType != typeof(long) && + tType != typeof(sbyte) && + tType != typeof(ushort) && + tType != typeof(uint) && + tType != typeof(ulong) && + tType != typeof(float) && + tType != typeof(double)) + { + throw new ArgumentException( + "Input is not number value type"); + } + + _value = defualtValue; + _defaultValue = defualtValue; + _defualtIncreament = defualtIncreament; + _defualtDecreament = defualtDecreament; + } + + public T DecreamentSoan => _defualtDecreament; + + public T IncreamentSpan => _defualtIncreament; + + public T CurrentSpan => _value - _defaultValue; + + public T Value + { + get => _value; + set => _value = value; + } + + public void Add( T value ) + { + _value += value; + } + + public void QuickAdd() + { + _value += _defualtIncreament; + } + + public void QuickSub() + { + _value -= _defualtDecreament; + } + + public void Reset() + { + _value = _defaultValue; + } + + public void Sub( T value ) + { + _value -= value; + } + + public override string ToString() + { + return Value.ToString(); + } + + public static Counter operator --( Counter counter ) + { + counter.QuickSub(); + return counter; + } + + public static Counter operator ++( Counter counter ) + { + counter.QuickAdd(); + return counter; + } + + public static implicit operator T( Counter counter ) + { + return counter.Value; + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Logic/PlainGeometryCollisionSensor.cs b/内核源代码/StgSharp.Common/Logic/PlainGeometryCollisionSensor.cs new file mode 100644 index 00000000..e8f2bfba --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/PlainGeometryCollisionSensor.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainGeometryCollisionSensor.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 System; + +namespace StgSharp +{ + public class CollisionEventArgs:EventArgs + { + public CollisionEventArgs(IGeometry target, IGeometry boarder) + { + Target = target; + Boarder = boarder; + } + + public IGeometry Target { get; set; } + public IGeometry Boarder { get; set; } + } + + public class PlainGeometryCollisionSensor + where TBoarder : IGeometry + where TTarget : IGeometry + { + internal PlainGeometry _boarder; + internal PlainGeometry _target; + internal EventHandler _rule; + + public event EventHandler Rule + { + add { _rule += value; } + remove + { + if (value == null) + { + return; + } +#pragma warning disable CS8601 + _rule -= value; +#pragma warning restore CS8601 + } + } + + public PlainGeometry boarder => _boarder; + + public PlainGeometry target + { + get => _target; + set => _target = value; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/StateMachine.cs b/内核源代码/StgSharp.Common/Logic/StateMachine.cs new file mode 100644 index 00000000..a3599e21 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/StateMachine.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StateMachine.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.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public interface IStateMachine where T: Enum + { + + public T LastStableState + { + get; + } + + public bool TryEnterState(); + + public bool TryExitState(); + + public bool TrySwitchState(); + + } + + public interface IStateMachineWithSwitchSpan : IStateMachine + where TState: Enum + { + + public bool IsInStabelState + { + get; + } + + public TState NextStableState + { + get; + } + + public bool TrySwitchState(); + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Threading/CancellableTask.cs b/内核源代码/StgSharp.Common/Logic/Threading/CancellableTask.cs new file mode 100644 index 00000000..092ba2c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Threading/CancellableTask.cs @@ -0,0 +1,122 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CancellableTask.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; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + internal class CancellableTask + { + + private protected Action _startup; + private protected Task _internalTask; + private CancellationTokenSource cts; + + private protected CancellableTask() + { + cts = new CancellationTokenSource(); + } + + private protected CancellableTask( Action action ) + { + _internalTask = new Task( InternalAction ); + cts = new CancellationTokenSource(); + } + + public bool IsCompleted + { + get => _internalTask.IsCompleted; + } + + public CancellationTokenSource Cts + { + get => cts; + } + + public int Id + { + get => _internalTask.Id; + } + + public void Cancel() + { + Cts.Cancel(); + } + + public void CancelAndWait() + { + Cts.Cancel(); + _internalTask.Wait(); + } + + public static CancellableTask Run( Action startup ) + { + CancellableTask ret = new CancellableTask { _startup = startup }; + ret._internalTask = Task.Run( ret.InternalAction ); + return ret; + } + + public void Wait() + { + _internalTask.Wait(); + } + + public static void WaitAll( IEnumerable tasks ) + { + IEnumerable convertedTasks = tasks.Select( + ct => ct._internalTask ); + Task.WaitAll( convertedTasks.ToArray() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void InternalAction() + { + //Console.WriteLine($"Task {Task.CurrentId} is running."); + _startup( Cts.Token ); + } + + public static implicit operator Task( CancellableTask task ) + { + return task._internalTask; + } + + ~CancellableTask() + { + Cts.Dispose(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Threading/EmptyThread.cs b/内核源代码/StgSharp.Common/Logic/Threading/EmptyThread.cs new file mode 100644 index 00000000..1340b9f2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Threading/EmptyThread.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EmptyThread.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.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public static partial class ThreadHelper + { + + private static readonly Thread _emptyThreadCache = new Thread( + () => { } ); + + static ThreadHelper() + { + _emptyThreadCache.Start(); + } + + /// + /// An individual thread doing nothing, and its always returns false. + /// + public static Thread EmptyThread + { + get => _emptyThreadCache; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Threading/MainThreadAssert.cs b/内核源代码/StgSharp.Common/Logic/Threading/MainThreadAssert.cs new file mode 100644 index 00000000..f7dd494d --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Threading/MainThreadAssert.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MainThreadAssert.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.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public static partial class ThreadHelper + { + + private static readonly int mainThreadId = Environment.CurrentManagedThreadId; + private static readonly ThreadLocal isNotMainThread = new ThreadLocal( + () => Environment.CurrentManagedThreadId != mainThreadId ); + + [Conditional( "DEBUG" )] + internal static void MainThreadAssert() + { + if( isNotMainThread.Value ) { + throw new InvalidOperationException( + $"Attempt to call sensitive operation which can be only called from main thread " + + $"from thread {Environment.CurrentManagedThreadId}." ); + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Timing/TimeFunction.cs b/内核源代码/StgSharp.Common/Logic/Timing/TimeFunction.cs new file mode 100644 index 00000000..388f07c3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Timing/TimeFunction.cs @@ -0,0 +1,164 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeFunction.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.Timing +{ + public class TimeFunction + { + + private float _beginning, _ending; + private Func _timeRelatedCalculation; + private TimeSpanProvider _timeProvider; + + internal TimeFunction() { } + + public TimeFunction( + TimeSpanProvider timeSpanProvider, + Func timeRelatedCalculation, + float range ) + { + _timeProvider = timeSpanProvider; + _timeRelatedCalculation = timeRelatedCalculation; + if( timeSpanProvider == null ) { + return; + } + _beginning = _timeProvider.CurrentSecond; + _ending = _timeProvider.CurrentSecond + range; + } + + public virtual bool IsComplete + { + get => _timeProvider.CurrentSecond > _ending; + } + + public Func TimeRelatedCalculation + { + get { return _timeRelatedCalculation; } + set { _timeRelatedCalculation = value; } + } + + public static TimeFunction One + { + get => new TimeFunctionOne(); + } + + public TimeSpanProvider TimeSpanProvider + { + get { return _timeProvider; } + set { _timeProvider = value; } + } + + public virtual float Calculate() + { + if( _timeProvider.CurrentSecond < _ending ) { + return 0; + } + return _timeRelatedCalculation( + _timeProvider.CurrentSecond - _beginning ); + } + + public static TimeFunction Proportional( + TimeSpanProvider time, + float begin, + float range ) + { + return new TimeFunction( time, ( float t ) => t + begin, range ); + } + + public virtual TimeFunction Renew( + (Func func, float range) funcPair ) + { + return new TimeFunction( + _timeProvider, funcPair.func, funcPair.range ); + } + + public virtual TimeFunction Renew( + Func func, + float range ) + { + return new TimeFunction( _timeProvider, func, range ); + } + + public void Reset() + { + float range = _ending - _beginning; + _beginning = _timeProvider.CurrentSecond; + _ending = _beginning + range; + } + + public virtual TimeFunction Reverse() + { + float range = _ending - _beginning; + return new TimeFunction( + _timeProvider, p => _timeRelatedCalculation( range - p ), + range ); + } + + } + + public sealed class TimeFunctionOne : TimeFunction + { + + internal TimeFunctionOne() : base() { } + + public override bool IsComplete + { + get => true; + } + + public override float Calculate() + { + return 1; + } + + public override TimeFunction Renew( + (Func func, float range) funcPair ) + { + throw new NotSupportedException(); + } + + public override TimeFunction Renew( + Func func, + float range ) + { + throw new NotSupportedException(); + } + + #pragma warning disable CA1822 + public new void Reset() + #pragma warning restore CA1822 + { } + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Timing/TimeProvider.cs b/内核源代码/StgSharp.Common/Logic/Timing/TimeProvider.cs new file mode 100644 index 00000000..f045b73c --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Timing/TimeProvider.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeProvider.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.Timing; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Threading; + +namespace StgSharp +{ + public static partial class StgSharp + { + + internal static StgSharpTime mainTimeProvider = new StgSharpTime(); + + internal static TimeSourceProviderBase MainTimeProvider => mainTimeProvider; + + } + + public sealed class StgSharpTime : TimeSourceProviderBase + { + + private static List subscriberList = new List( + ); + private static long accuracy; + private static Stopwatch mainProvider = new Stopwatch(); + private static Thread timeProvideThread; + + internal StgSharpTime() { } + + public static TimeSourceProviderBase OnlyInstance => StgSharp.MainTimeProvider; + + public override sealed void StartProvidingTime() + { + if( mainProvider.IsRunning ) { + return; + } + mainProvider.Start(); + + //speed test + long totalMS, internalFrequncy = Stopwatch.Frequency; + for( int i = 0; i < 100; i++ ) { + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); + for( int t = 0; t < 10; t++ ) { + if( totalMS < 1000 ) { + subscriberList.Add( + new TimeSpanProvider( + 100L, TimeSpanProvider.DefaultProvider ) ); + } + } + } + mainProvider.Stop(); + subscriberList.Clear(); + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ) / 100L; + accuracy = ( totalMS * 2 ) / 3; + mainProvider.Reset(); + timeProvideThread = new Thread( new ThreadStart( ProvideTime ) ); + timeProvideThread.Start(); + } + + public override void StopProvidingTime() + { + lock( mainProvider ) { + mainProvider.Stop(); + } + } + + public void Terminate() + { + lock( mainProvider ) { + mainProvider.Stop(); + } + } + + protected override sealed void AddSubscriberUnsynced( + TimeSpanProvider subscriber ) + { + subscriberList.Add( subscriber ); + } + + protected override sealed void RemoveSubscriberUnsynced( + TimeSpanProvider subscriber ) + { + subscriberList.Remove( subscriber ); + } + + private void ProvideTime() + { + long totalMS, internalFrequncy = Stopwatch.Frequency; + lock( mainProvider ) { + mainProvider.Restart(); + } + while( mainProvider.IsRunning ) { + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); + if( subscriberList.Count == 0 ) { + continue; + } + CheckSubscriberSemaphore.Wait(); + List toRemoveList = new List( + ); + foreach( TimeSpanProvider subscriber in subscriberList ) { + if( !subscriber.CheckTime( totalMS ) ) { + toRemoveList.Add( subscriber ); + InternalIO.InternalWriteLog( + $"Time subscriber {subscriber} is to be removed.", + LogType.Info ); + } + ; + } + if( toRemoveList.Count != 0 ) { + foreach( TimeSpanProvider subscriber in toRemoveList ) { + subscriberList.Remove( subscriber ); + } + } + CheckSubscriberSemaphore.Release(); + } + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Logic/Timing/TimeSourceProvider.cs b/内核源代码/StgSharp.Common/Logic/Timing/TimeSourceProvider.cs new file mode 100644 index 00000000..ea1fdacc --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Timing/TimeSourceProvider.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSourceProvider.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 System; +using System.Linq; +using System.Threading; + +namespace StgSharp.Timing +{ + public abstract class TimeSourceProviderBase + { + + private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( + 1, 1 ); + + protected SemaphoreSlim CheckSubscriberSemaphore + { + get => _addSubscriberSemaphore; + } + + public void AddSubscriber( TimeSpanProvider subscriber ) + { + try { + _addSubscriberSemaphore.Wait(); + AddSubscriberUnsynced( subscriber ); + } + catch( Exception ) { + throw; + } + finally { + _addSubscriberSemaphore.Release(); + } + } + + public void RemoveSubscriber( TimeSpanProvider subscriber ) + { + _addSubscriberSemaphore.Wait(); + try { + RemoveSubscriberUnsynced( subscriber ); + } + catch( Exception ) { + throw; + } + finally { + _addSubscriberSemaphore.Release(); + } + } + + public abstract void StartProvidingTime(); + + public abstract void StopProvidingTime(); + + protected abstract void AddSubscriberUnsynced( + TimeSpanProvider subscriber ); + + protected abstract void RemoveSubscriberUnsynced( + TimeSpanProvider subscriber ); + + } +} diff --git a/内核源代码/StgSharp.Common/Logic/Timing/TimeSpanAwaitingToken.cs b/内核源代码/StgSharp.Common/Logic/Timing/TimeSpanAwaitingToken.cs new file mode 100644 index 00000000..7621d81c --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Timing/TimeSpanAwaitingToken.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSpanAwaitingToken.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Timing +{ + #nullable enable + + public sealed class TimeSpanAwaitingToken : IDisposable + { + + private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( + [0] ); + private static int s_maxID; + private static readonly object s_lock = new object(); + + private EventHandler? _refreshHandler,_missHandler; + private int _size, _id; + + private object _participantObject = new object(); + private SemaphoreSlim _awaitingSemaphore; + + private TimeSpanProvider _provider; + + internal TimeSpanAwaitingToken( TimeSpanProvider provider ) + { + if( s_unusedID.Count == 1 ) { + lock( s_lock ) { + s_unusedID.TryPop( out int id ); + TokenID = id; + s_unusedID.Push( s_maxID++ ); + } + } else { + s_unusedID.TryPop( out int id ); + TokenID = id; + } + _provider = provider; + _size = 1; + _awaitingSemaphore = new SemaphoreSlim( 0, 1 ); + } + + internal TimeSpanAwaitingToken( TimeSpanProvider provider, int count ) + { + if( s_unusedID.Count == 1 ) { + lock( s_lock ) { + s_unusedID.TryPop( out int id ); + TokenID = id; + s_unusedID.Push( s_maxID++ ); + } + } else { + s_unusedID.TryPop( out int id ); + TokenID = id; + } + _provider = provider; + _size = count; + _awaitingSemaphore = new SemaphoreSlim( 0, _size ); + } + + public event EventHandler MissTimeSpanRefreshed + { + add { _missHandler += value; } + remove { _missHandler -= value; } + } + + public event EventHandler TimeSpanRefreshed + { + add { _refreshHandler += value; } + remove { _refreshHandler -= value; } + } + + public int TokenID + { + get => _id; + private set => _id = value; + } + + internal SemaphoreSlim AwaitingSemaphoreSlim + { + get => _awaitingSemaphore; + } + + public void Dispose() + { + _provider.QuitSpanAwaiting( this ); + s_unusedID.Push( TokenID ); + _awaitingSemaphore.Dispose(); + GC.SuppressFinalize( this ); + } + + public override int GetHashCode() + { + return _id; + } + + public void Participant() + { + lock( _participantObject ) { + _size++; + SemaphoreSlim newSemaphore = new SemaphoreSlim( + _awaitingSemaphore.CurrentCount, _size ); + Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ) + .Dispose(); + } + } + + public void WaitNextSpan() + { + _awaitingSemaphore.Wait(); + } + + internal void MissRefresh() + { + _missHandler?.Invoke( this, EventArgs.Empty ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void Refresh() + { + _refreshHandler?.Invoke( this, EventArgs.Empty ); + } + + ~TimeSpanAwaitingToken() + { + Dispose(); + } + + } + #nullable restore +} diff --git a/内核源代码/StgSharp.Common/Logic/Timing/TimeSpanProvider.cs b/内核源代码/StgSharp.Common/Logic/Timing/TimeSpanProvider.cs new file mode 100644 index 00000000..a29eb27d --- /dev/null +++ b/内核源代码/StgSharp.Common/Logic/Timing/TimeSpanProvider.cs @@ -0,0 +1,233 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSpanProvider.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading; + +namespace StgSharp.Timing +{ + /// + /// A microsecond-accuracy timer. It will refresh every a certain time span. + /// + public class TimeSpanProvider + { + + private bool _subscribed; + + private ConcurrentQueue _tokenToAdd = new ConcurrentQueue( + ); + private ConcurrentQueue _tokenToQuit; + private Counter timeSpanCount = new Counter( -1, 1, 1 ); + private HashSet _awaitingTokens; + private long _maxSpanCount; + private long _spanBegin; + private readonly long _spanLength; + private readonly TimeSourceProviderBase _timeSource; + + /// + /// Create a new and define the length of time span. Length + /// of a single time span is defined in microseconds. + /// + /// + /// + public TimeSpanProvider( + long spanMicroSeconds, + TimeSourceProviderBase provider ) + { + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); + } + _timeSource = provider; + _spanLength = spanMicroSeconds; + _maxSpanCount = int.MaxValue; + provider.AddSubscriber( this ); + _subscribed = true; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); + } + + /// + /// Create a new and define the length of time span. Length + /// of a single time span is defined in seconds. + /// + /// + /// + public TimeSpanProvider( + double spanSeconds, + TimeSourceProviderBase provider ) + { + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); + } + _timeSource = provider; + _spanLength = ( long )( spanSeconds * 1000L * 1000L ); + _spanBegin = -_spanLength; + _maxSpanCount = long.MaxValue; + provider.AddSubscriber( this ); + _subscribed = true; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); + } + + /// + /// Create a new and define the length of time span. Length + /// of a single time span is defined in microseconds. + /// + /// + /// + /// + public TimeSpanProvider( + long spanLength, + long maxSpan, + TimeSourceProviderBase provider ) + { + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); + } + if( maxSpan <= 0 ) { + throw new ArgumentException( + "Sapn count cannot be smaller than zero" ); + } + _timeSource = provider; + _spanLength = spanLength; + _spanBegin = -_spanLength; + provider.AddSubscriber( this ); + _subscribed = true; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); + } + + public double SpanLength + { + get => ( _spanLength * 1.0 ) / ( 1000L * 1000L ); + } + + public float CurrentSecond + { + get => timeSpanCount.Value * SpanLengthLowPrecession; + } + + public float SpanLengthLowPrecession + { + get => ( _spanLength * 1.0f ) / ( 1000 * 1000 ); + } + + public int CurrentSpan + { + get => timeSpanCount.Value; + } + + /// + /// Time source provider provided in internal framework. + /// + public static TimeSourceProviderBase DefaultProvider => StgSharpTime.OnlyInstance; + + public TimeSpanAwaitingToken ParticipantSpanAwaiting( int count ) + { + TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( + this, count ); + _tokenToAdd.Enqueue( token ); + return token; + } + + public void QuitSpanAwaiting( TimeSpanAwaitingToken token ) + { + _tokenToQuit.Enqueue( token ); + } + + public void StopSpanProviding() + { + Interlocked.Exchange( ref _maxSpanCount, 0 ); + } + + public void SubscribeToTimeSource( + TimeSourceProviderBase serviceHandler ) + { + if( serviceHandler == null ) { + throw new ArgumentNullException( nameof( serviceHandler ) ); + } + if( _subscribed ) { + return; + } + _subscribed = true; + serviceHandler.AddSubscriber( this ); + } + + public int ToInt32() + { + return timeSpanCount.Value; + } + + internal bool CheckTime( long microseconds ) + { + if( microseconds - _spanBegin < _spanLength ) { + return true; + } + while( !_tokenToAdd.IsEmpty ) { + _tokenToAdd.TryDequeue( out TimeSpanAwaitingToken tokenAdd ); + _awaitingTokens.Add( tokenAdd ); + } + while( !_tokenToQuit.IsEmpty ) { + _tokenToQuit.TryDequeue( out TimeSpanAwaitingToken tokenQuit ); + _awaitingTokens.Remove( tokenQuit ); + InternalIO.InternalWriteLog( + $"Awaiting token {tokenQuit!.TokenID} has been removed.", + LogType.Info ); + } + + _spanBegin = microseconds; + timeSpanCount++; + + foreach( TimeSpanAwaitingToken item in _awaitingTokens ) { + if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) { + item.AwaitingSemaphoreSlim.Release(); + item.Refresh(); + } else { + item.MissRefresh(); + } + } + + return timeSpanCount < _maxSpanCount; + } + + public static explicit operator int( + [NotNull]TimeSpanProvider provider ) + { + return provider.ToInt32(); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/MVVM/OpenGLControllingItemRender.cs b/内核源代码/StgSharp.Common/MVVM/OpenGLControllingItemRender.cs new file mode 100644 index 00000000..79f6649e --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/OpenGLControllingItemRender.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="OpenGLControllingItemRender.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.MVVM +{ + public class OpenGLControllingItemRender : glRender + { + + public override bool IsContextSharable => true; + + protected override void CustomizeDeinit() + { + throw new NotImplementedException(); + } + + protected override void CustomizeInit() + { + throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/View/ViewBase.cs b/内核源代码/StgSharp.Common/MVVM/View/ViewBase.cs new file mode 100644 index 00000000..9ac51115 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/View/ViewBase.cs @@ -0,0 +1,208 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewBase.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 StgSharp.MVVM.ViewModel; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +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.MVVM.View +{ + /// + /// ViewBase 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 abstract unsafe partial class ViewBase + { + + private (int x, int y, int z) unitCubeSize; + + private GetDataBindingEntryDelegate getDataBindingEntry; + + private int usedFrame; + private IViewDesigner _design; + private IViewRender _render; + private IViewResponder _responder; + private TimeSpanProvider time; + + private ViewPort context; + + private delegate bool GetDataBindingEntryDelegate( + string name, + out DataBindingEntry entry ); + + public DataBindingEntry this[ string name ] + { + get + { + if( getDataBindingEntry( name, out DataBindingEntry entry ) ) { + return entry; + } + if( TryGetObjectReference( name, out entry ) ) { + return entry; + } + throw new KeyNotFoundException(); + } + } + + public (int x, int y, int z) UnitCubeSize + { + get => unitCubeSize; + } + + public bool Activated + { + get; + internal set; + } + + public int Height + { + get => context.Height; + } + + public int Width + { + get => context.Width; + } + + public IntPtr Monitor => context.Monitor; + + public IntPtr ViewHandle => context.ViewPortID; + + public IViewDesigner Designer + { + get => _design; + protected set => _design = value; + } + + public string ContextName => context.Name; + + public string SelfName + { + get; + set; + } + + public ViewPort Port + { + get => context; + } + + internal TimeSpanProvider TimeProvider + { + get => time; + } + + protected internal IViewRender Render + { + get => _render; + set => _render = value; + } + + protected IViewResponder Responder + { + get => _responder; + set => _responder = value; + } + + public abstract void CustomizedInitialize( + [NotNull]ViewModelBase viewModelBinding ); + + /// + /// 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 void InternalInitialize( + string name, + (int, int, int) cubeSize, + [NotNull]ViewModelBase viewModelBinding ) + { + SelfName = name; + unitCubeSize = cubeSize; + getDataBindingEntry = viewModelBinding.TryGetObjectReference; + context = viewModelBinding.ViewPortBinding; + time = viewModelBinding.frameTimeProvider; + + CustomizedInitialize( viewModelBinding ); + } + + public abstract bool TryGetObjectReference( + string name, + out DataBindingEntry entry ); + + public void Use() + { + if( usedFrame == 0 ) { + if( !ValidateInitialization() ) { + throw new InvalidOperationException( + "This view is not correctly initialized before rendering." ); + } + } + Show(); + usedFrame++; + } + + public bool ValidateInitialization() + { + return ( _design != null ) && ( _render != null ) && ( getDataBindingEntry != null ) && ( _responder != null ) && _design.ValidateInitializing( + ) && _responder.ValidateInitializing() && _render.ValidateInitializing( + ); + } + + protected abstract void Show(); + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/MVVM/View/ViewDesigner.cs b/内核源代码/StgSharp.Common/MVVM/View/ViewDesigner.cs new file mode 100644 index 00000000..c0d1cb9f --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/View/ViewDesigner.cs @@ -0,0 +1,146 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewDesigner.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.Controlling.UsrActivity; +using StgSharp.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; + +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; + +namespace StgSharp.MVVM.View +{ + public abstract partial class ViewBase + { + + public interface IViewDesigner where TView: ViewBase + { + + abstract void CustomizedInitialize(); + + abstract void Initialize(); + + abstract bool ValidateInitializing(); + + } + + /// + /// 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 : IViewDesigner + where TView: ViewBase + { + + private KeyboardButtonGroup currentButtonGroup; + + private List _controlList; + protected TView _binding; + + public ViewDesigner( TView binding ) + { + _binding = binding; + _controlList = new List(); + } + + protected TView Binding + { + get => _binding; + } + + public CharacterLineIndexImage CreateCharacterLine( + int length, + char blankFilling, + PlainGeometryMesh tittle, + IEnumerable<(char, PlainGeometryMesh)> charList ) + { + CharacterLineIndexImage ret = new CharacterLineIndexImage( + length, blankFilling, tittle, charList ); + _controlList.Add( ret ); + return ret; + } + + public TriggerButton CreateKeyboardButton( + Rectangle bonding, + TextureProvider defaultAnimation, + bool isEnable ) + { + TriggerButton ret = new TriggerButton(); + ret.BoundingBox = bonding; + ret.Texture = defaultAnimation; + if( isEnable ) { + ret.IsDisabled = false; + ret.Enable(); + } else { + ret.IsDisabled = true; + ret.Disable(); + } + currentButtonGroup.AddButton( ret ); + return ret; + } + + public TButtonGroup CreateKeyboardButtonGroup( + IClickTrigger leftBidning, + IClickTrigger rightBinding, + IClickTrigger upBinding, + IClickTrigger downBinding, + IClickTrigger confirmBinding ) + where TButtonGroup: KeyboardButtonGroup, new() + { + TButtonGroup 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 abstract void CustomizedInitialize(); + + public void Initialize() + { + CustomizedInitialize(); + } + + public abstract bool ValidateInitializing(); + + }//---------------------------------- End of Class ----------------------------------------- + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/View/ViewRender.cs b/内核源代码/StgSharp.Common/MVVM/View/ViewRender.cs new file mode 100644 index 00000000..43c84326 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/View/ViewRender.cs @@ -0,0 +1,149 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewRender.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.Internal; +using StgSharp.Graphics; + +using StgSharp.Math; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.MVVM.View +{ + public abstract partial class ViewBase + { + + protected internal interface IViewRender + where TView: ViewBase + { + + RenderStream this[ DataLabel renderName ] + { + get; + } + + void CustomizedInitialize(); + + IEnumerator GetEnumerator(); + + void Initialize(); + + bool ValidateInitializing(); + + } + + protected abstract class ViewRender : IViewRender + where TView: ViewBase + { + + protected ViewRender( TView binding ) + { + _binding = binding; + _render = new Dictionary(); + } + + public RenderStream this[ DataLabel renderName ] + { + get => _render.TryGetValue( + renderName, out RenderStream stream ) ? + stream : ( null! ); + protected set + { + if( _render.ContainsKey( renderName ) ) { + _render[ renderName ] = value; + } else { + _render.Add( renderName, value ); + } + } + } + + public TView Binding => _binding; + + protected ViewPort ContextBinding => _binding.context; + + protected ViewDesigner Design => ( _binding.Designer as ViewDesigner )!; + + protected Dictionary Render + { + get => _render; + } + + protected ViewResponder Responder => ( _binding.Responder as ViewResponder )!; + + public T CreateRenderStream() + where T: RenderStream, new() + { + T ret = new T(); + ret.Initialize( + _binding.context, Binding.TimeProvider ); + return ret; + } + + public T CreateRenderStream( ViewPort vp ) + where T: RenderStream, new() + { + T ret = new T(); + ret.Initialize( vp, Binding.TimeProvider ); + return ret; + } + + public abstract void CustomizedInitialize(); + + public IEnumerator GetEnumerator() + { + foreach( RenderStream item in Render.Values ) { + yield return item.BindedViewPortContext; + } + } + + public void Initialize() + { + CustomizedInitialize(); + } + + public abstract bool ValidateInitializing(); + + #pragma warning disable CS8618 + private Dictionary _render; + private TView _binding; +#pragma warning restore CS8618 + } + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/View/ViewResponder.cs b/内核源代码/StgSharp.Common/MVVM/View/ViewResponder.cs new file mode 100644 index 00000000..d7719d27 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/View/ViewResponder.cs @@ -0,0 +1,144 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewResponder.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.Controlling.UsrActivity; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.MVVM.View +{ + public partial class ViewBase + { + + protected interface IViewResponder where TVIew: ViewBase + { + + Action? this[ IClickTrigger trigger ] + { + get; + set; + } + + void CustomizedInitialize( + Func keyRegister ); + + void Initialize( MethodLookUpDelegate methodGetter ); + + void ProcessUserInput(); + + bool ValidateInitializing(); + + } + + protected abstract class ViewResponder : IViewResponder + where TView: ViewBase + { + + private bool _isInitialized; + private Dictionary keyCallbackIndex; + private Dictionary nameToCallbackMap; + private TView _binding; + + protected ViewResponder( TView binding ) + { + keyCallbackIndex = new Dictionary(); + nameToCallbackMap = new Dictionary(); + _binding = binding; + } + + #pragma warning disable CA1043 + public Action? this[ IClickTrigger trigger ] + #pragma warning restore CA1043 + { + get => keyCallbackIndex.TryGetValue( + trigger, out Action callback ) ? + callback : null; + set + { + if( keyCallbackIndex.TryGetValue( + trigger, out Action callback ) ) { + callback += value; + } else { + keyCallbackIndex.Add( + trigger, + value ?? + throw new ArgumentNullException( + nameof( value ) ) ); + } + } + } + + protected TView Binding => _binding; + + public abstract void CustomizedInitialize( + Func keyRegister ); + + public void Initialize( MethodLookUpDelegate methodGetter ) + { + if( _isInitialized ) { + return; + } + CustomizedInitialize( + ( trigger, name ) => { + if( !nameToCallbackMap.TryGetValue( + name, out Action ret ) ) { + if( methodGetter( name, out Action lookup ) ) { + this[ trigger ] = lookup; + } else { + throw new InvalidOperationException( + $"Cannot find method named {name} in binded view model" ); + } + } + return ret; + } ); + } + + public void ProcessUserInput() + { + foreach( KeyValuePair pair in keyCallbackIndex ) { + if( InternalIO.glfwGetKey( + _binding.ViewHandle, + pair.Key.TargetKeyOrButtonID ) == pair.Key.TriggeredStatus ) { + pair.Value(); + } + } + } + + public abstract bool ValidateInitializing(); + + } + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/ViewModel/DataBinding.cs b/内核源代码/StgSharp.Common/MVVM/ViewModel/DataBinding.cs new file mode 100644 index 00000000..505982b0 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/ViewModel/DataBinding.cs @@ -0,0 +1,159 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DataBinding.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.MVVM.ViewModel +{ +#nullable enable + + [UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate ref object BindingDataGetter(); +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate void BindingDataSetter( ref object value ); +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate bool MethodLookUpDelegate( + string name, + out Action callback ); + + public abstract partial class ViewModelBase + { + + public bool MethodLookup( string methodName, out Action callback ) + { + MethodInfo method = GetType().GetMethod( methodName )!; + if( method == null ) { + callback = null!; + return false; + } + try { + callback = ( Action )Delegate.CreateDelegate( + typeof( Action ), this, methodName ); + return true; + } + catch( MissingMethodException ) { + callback = null!; + return false; + } + catch( MethodAccessException ) { + callback = null!; + return false; + } + catch( Exception ) { + throw; + } + } + + } + + [StructLayout( LayoutKind.Explicit )] + public unsafe struct DataBindingEntry + { + + [FieldOffset( 0 )] private IntPtr getterPtr; + [FieldOffset( 8 )] private IntPtr setterPtr; + [FieldOffset( 0 )] private M128 _mask; + + public DataBindingEntry( + [NotNull] BindingDataGetter gettingCallback, + [NotNull] BindingDataSetter settingCallback ) + { + getterPtr = Marshal.GetFunctionPointerForDelegate( gettingCallback ); + setterPtr = Marshal.GetFunctionPointerForDelegate( settingCallback ); + } + + public static DataBindingEntry NullBinding + { + get => new DataBindingEntry(); + } + + public bool Equals( DataBindingEntry other ) + { + return ( _mask == other._mask ); + } + + public override bool Equals( object obj ) + { + if( obj is not DataBindingEntry other ) { + return false; + } + return Equals( other ); + } + + public bool ExactEqual( DataBindingEntry other ) + { + return ( getterPtr == other.getterPtr ) && ( setterPtr == other.setterPtr ); + } + + public override int GetHashCode() + { + return _mask.GetHashCode(); + } + + public ref object GetValue() + { + return ref ( ( delegate* unmanaged[Cdecl] )getterPtr )(); + } + + public void SetValue( ref object value ) + { + ( ( delegate* unmanaged[Cdecl] )setterPtr )( + ref value ); + } + + public static bool operator !=( + DataBindingEntry left, + DataBindingEntry right ) + { + return left._mask != right._mask; + } + + public static bool operator ==( + DataBindingEntry left, + DataBindingEntry right ) + { + return left._mask == right._mask; + } + + } + +#nullable restore +} diff --git a/内核源代码/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs b/内核源代码/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs new file mode 100644 index 00000000..c4e737a9 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs @@ -0,0 +1,147 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ShowViewPort.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.Controls; +using StgSharp.Graphics; +using StgSharp.MVVM.View; +using StgSharp.Threading; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; + +namespace StgSharp.MVVM.ViewModel +{ + public abstract partial class ViewModelBase + { + + private volatile bool _closed = true; + private ViewBase _nextView, _currentView; + + protected ViewBase CurrentView + { + get => _currentView; + set => _nextView = value; + } + + /// + /// CustomizeInit this form and render it on screen, and respond with operation + /// + public unsafe void UseViewModel( string viewEntryName ) + { + CustomizeInitialize(); + UseViewInNextFrame( viewEntryName ); + TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( + 1 ); + fpsCountingToken.TimeSpanRefreshed += CountFps; + fpsCountingToken.MissTimeSpanRefreshed += CountFps; + if( _nextView != _currentView ) { + Interlocked.Exchange( ref _currentView, _nextView ); + } + Thread renderThread = new Thread( + ( token ) => { + try { + ProcessFrameWithoutEvent(); + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( + $"Critical error when rendering:\n" + $"{ex}", + LogType.Error ); + ShouldClose = true; + } + } ); + renderThread.Start(); + /**/ + using( TimeSpanAwaitingToken eventAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( + 1 ) ) { + while( _closed ) { + if( _nextView != _currentView ) { + Interlocked.Exchange( ref _currentView, _nextView ); + } + InternalIO.glfwPollEvents(); + eventAwaitingToken.WaitNextSpan(); + _closed = !ShouldClose; + } + } + /**/ + renderThread.Join(); + fpsCountingToken.Dispose(); + fpsCountProvider.StopSpanProviding(); + frameTimeProvider.StopSpanProviding(); + } + + protected void UseViewInNextFrame( string name ) + { + if( !allView.TryGetValue( name, out ViewBase v ) ) { + throw new KeyNotFoundException( + $"{$"Cannot find View named {name} "}{$"in current View Model of {GetType().FullName}"}" ); + } + CurrentView = v; + } + + private void CountFps( object sender, EventArgs e ) + { + Interlocked.Exchange( ref _frameSpeed, _frameCount ); + Interlocked.Exchange( ref _frameCount, 0 ); + /* + Console.Clear(); + Console.WriteLine( FrameSpeed ); + /**/ + } + + private unsafe void PrivateShow() + { + if( 0 == InternalIO.glfwWindowShouldClose( + this.viewPortDisplay.ViewPortID ) ) { + CurrentView.Use(); + RenderStream.PollEvents(); + } + } + + private void ProcessFrameWithoutEvent() + { + using( TimeSpanAwaitingToken renderAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( + 1 ) ) { + renderAwaitingToken.TimeSpanRefreshed += ( _, _ ) => { }; + while( _closed ) { + foreach( ViewPort context in CurrentView.Render ) { + context.FlushSize(); + } + CurrentView.Use(); + renderAwaitingToken.WaitNextSpan(); + Interlocked.Add( ref _frameCount, 1 ); + } + } + } + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/ViewModel/ViewManage.cs b/内核源代码/StgSharp.Common/MVVM/ViewModel/ViewManage.cs new file mode 100644 index 00000000..a8959655 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/ViewModel/ViewManage.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewManage.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.MVVM.View; + +using System; +using System.Collections.Generic; +using System.ComponentModel.Design; +using System.Text; + +namespace StgSharp.MVVM.ViewModel +{ + public partial class ViewModelBase + { + + private Dictionary allView; + + public T CreateAndBindView( + string name, + (int x, int y, int z) unitCubeSize ) + where T: ViewBase, new() + { + T ret = new T(); + ret.SelfName = name; + ret.InternalInitialize( name, unitCubeSize, this ); + allView.Add( name, ret ); + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/ViewModel/ViewModel.cs b/内核源代码/StgSharp.Common/MVVM/ViewModel/ViewModel.cs new file mode 100644 index 00000000..9b073031 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/ViewModel/ViewModel.cs @@ -0,0 +1,261 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewModel.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.Controlling.UsrActivity; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Math; +using StgSharp.MVVM.View; +using StgSharp.MVVM.ViewModel; +using StgSharp.Threading; +using StgSharp.Timing; + +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; +using System.Threading; + +using static StgSharp.Internal.InternalIO; + +namespace StgSharp.MVVM.ViewModel +{ + public abstract partial class ViewModelBase + { + + private FrameBufferSizeHandler _resizeCallback; + private int _frameCount; + private int _frameSpeed; + private ViewPort viewPortDisplay; + + //internal IntPtr monitor; + + internal TimeSpanProvider fpsCountProvider; + internal TimeSpanProvider frameTimeProvider; + internal Vector4 backgroundColor; + + protected ViewModelBase( int frameSpeed ) + { + viewPortDisplay = new ViewPort(); + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long frameLength = ( FrameSpeed > 0 ) ? + ( ( 1000L * 1000L ) / FrameSpeed ) : 0; + frameTimeProvider = new TimeSpanProvider( + frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + protected ViewModelBase( float frameLength ) + { + viewPortDisplay = new ViewPort(); + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long _frameLength = ( FrameSpeed > 0 ) ? + ( ( long )( 1000 * frameLength ) ) : 0; + frameTimeProvider = new TimeSpanProvider( + _frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + public ViewModelBase( ViewPort vBinding, int frameSpeed ) + { + viewPortDisplay = vBinding; + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long frameLength = ( frameSpeed > 0 ) ? + ( ( 1000L * 1000L ) / frameSpeed ) : 0; + frameTimeProvider = new TimeSpanProvider( + frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + public ViewModelBase( ViewPort vBinding, float frameLength ) + { + viewPortDisplay = vBinding; + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long _frameLength = ( frameLength > 0 ) ? + ( ( long )( 1000 * frameLength ) ) : 0; + frameTimeProvider = new TimeSpanProvider( + _frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + public DataBindingEntry this[ string name ] + { + get + { + if( this.TryGetObjectReference( + name, out DataBindingEntry entry ) ) { + return entry; + } + throw new KeyNotFoundException(); + } + } + + public bool ShouldClose + { + get => InternalIO.glfwWindowShouldClose( + viewPortDisplay.ViewPortID ) != 0; + set => InternalIO.glfwSetWindowShouldClose( + viewPortDisplay.ViewPortID, value ? 1 : 0 ); + } + + public int CurrentFrameCount => frameTimeProvider.CurrentSpan; + + public int FrameSpeed => _frameSpeed; + + /// + /// Height of this form, represent in + /// + public int Height + { + get => viewPortDisplay.Height; + } + + /// + /// Width of this form, represent in + /// + public int Width + { + get => viewPortDisplay.Width; + } + + public unsafe IntPtr WindowID + { + get => viewPortDisplay.ViewPortID; + } + + public string Name + { + get => viewPortDisplay.Name; + } + + /// + /// Width of this form, represent in + /// + public Vec2 Size + { + get => new Vec2( Width, Height ); + } + + public ViewPort ViewPortBinding + { + get => viewPortDisplay; + } + + #pragma warning disable CA1044 + protected FrameBufferSizeHandler FrameSizeCallback + { + set + { + _resizeCallback = value; + IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( + value ); + InternalIO.glfwSetFramebufferSizeCallback( + viewPortDisplay.ViewPortID, handlerPtr ); + } + } + #pragma warning restore CA1044 + + public abstract void CustomizeInitialize(); + + /// + /// Set the size limit of current form + /// + /// + /// Minimum size of current form. In form of a of (width,height) + /// + /// + /// Maximum size of current form. In form of a of (width,height) + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetSizeLimit( Vec2 minSize, Vec2 maxSize ) + { + ThreadHelper.MainThreadAssert(); + InternalIO.glfwSetWindowSizeLimits( + this.viewPortDisplay.ViewPortID, ( int )minSize.X, + ( int )minSize.Y, ( int )maxSize.X, ( int )maxSize.Y ); + } + + /// + /// Set the size limit of current form + /// + /// Minimum width of current form + /// Minimum height of current form + /// Maximum width of current form + /// Maximum height of current form + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ) + { + ThreadHelper.MainThreadAssert(); + InternalIO.glfwSetWindowSizeLimits( + this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, + maxHeight ); + } + + public abstract bool TryGetObjectReference( + string name, + out DataBindingEntry entry ); + + private void DefaultFrameRewsizeCallback( + IntPtr windowHandle, + int width, + int height ) + { + ViewPort.GetExistedViewPort( windowHandle, out ViewPort vp ); + vp.RequestFlushSizeInNextFrame( width, height ); + + //Console.WriteLine($"{width} {height}"); + } + + } +} diff --git a/内核源代码/StgSharp.Common/MVVM/ViewPort.cs b/内核源代码/StgSharp.Common/MVVM/ViewPort.cs new file mode 100644 index 00000000..62992c26 --- /dev/null +++ b/内核源代码/StgSharp.Common/MVVM/ViewPort.cs @@ -0,0 +1,141 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewPort.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.Concurrent; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; + +namespace StgSharp.MVVM +{ + public class ViewPort + { + + private static ConcurrentDictionary _handleToViewPortIndex = new ConcurrentDictionary( + ); + private int _shouldCloseMask, _closeRequestedMask; + private int _width, _height, _newWidth, _newHeight; + + internal ViewPort() + { + _newHeight = 600; + _newWidth = 800; + FlushSize(); + Name = new StackFrame( 1, false ). + GetMethod()!.DeclaringType!.Name; + Monitor = IntPtr.Zero; + ViewPortID = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, + IntPtr.Zero ); + if( ViewPortID == IntPtr.Zero ) { + throw new InvalidOperationException( + "Unable to create viewport handle." ); + } + _handleToViewPortIndex.TryAdd( ViewPortID, this ); + } + + public ViewPort(int width, int height, string name, IntPtr monitor ) + { + _newWidth = width; + _newHeight = height; + FlushSize(); + Name = name; + Monitor = monitor; + ViewPortID = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, + IntPtr.Zero ); + if( ViewPortID == IntPtr.Zero ) { + throw new InvalidOperationException( + "Unable to create viewport handle." ); + } + _handleToViewPortIndex.TryAdd( ViewPortID, this ); + } + + public unsafe int Height + { + get { return _height; } + internal set { Interlocked.Exchange( ref _height, value ); } + } + + public unsafe int Width + { + get { return _width; } + internal set { Interlocked .Exchange( ref _width, value ); } + } + + public IntPtr GraphicHandle + { + get; + internal set; + } + + public IntPtr Monitor + { + get; + internal set; + } + + public IntPtr ViewPortID + { + get; + private set; + } + + public string Name + { + get; + set; + } + + //[BlueprintNodeExecution] + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool GetExistedViewPort( + IntPtr handle, + out ViewPort port ) + { + return _handleToViewPortIndex.TryGetValue( handle, out port ); + } + + internal unsafe void FlushSize() + { + Interlocked.Exchange( ref _height, _newHeight ); + Interlocked.Exchange( ref _width, _newWidth ); + } + + internal void RequestFlushSizeInNextFrame( int width, int height ) + { + Interlocked.Exchange( ref _newHeight, height ); + Interlocked .Exchange( ref _newWidth, width ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Graphic/Camera.cs b/内核源代码/StgSharp.Common/Math/Graphic/Camera.cs new file mode 100644 index 00000000..5e9f06bc --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Graphic/Camera.cs @@ -0,0 +1,309 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Camera.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.Graphics.ShaderEdit; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public sealed class Camera : IglConvertable + { + + private bool _isLookAtAvailable; + internal Matrix44 _lookAt; + internal Matrix44 _projection; + internal Matrix44 cameraAtt; + internal Matrix44 rotation; + internal Matrix44 rotationAtt; + internal Radius _pitch; + internal Radius _row; + internal Radius _yaw; + internal Uniform convertedUniform; + internal Vec3 _target, up; + + public Camera() + { + cameraAtt = Matrix44.Unit; + _target = Vec3.Zero; + up = Vec3.Zero; + _isLookAtAvailable = false; + _lookAt = Matrix44.Unit; + rotationAtt = Matrix44.Unit; + _projection = new Matrix44(); + } + + public Camera( Vec3 position, Vec3 target, Vec3 up ) + : this() + { + rotationAtt = Matrix44.Unit; + cameraAtt = new Matrix44(); + SetViewDirection( position, target, up ); + _pitch = Radius.Zero; + _row = Radius.Zero; + _yaw = Radius.Zero; + } + + public Matrix44 Projection => _projection; + + public Matrix44 View + { + get + { + if( _isLookAtAvailable ) { + return _lookAt; + } + Matrix44 move = Matrix44.Unit; + move.colum3.vec -= cameraAtt.colum3.vec; + _lookAt = rotationAtt.Transpose * move; + _isLookAtAvailable = true; + return _lookAt; + } + } + + public void DisplayGLtypeDefinition() + { + Console.WriteLine( "uniform matrix4x4 cameraName;" ); + } + + /// + /// Get all uniform related to this . + /// + /// Shader program requires this camera. + /// + /// ContextName of all related uniforms. If you fallow form from + /// + /// + public unsafe void GainAllUniforms( + ShaderProgram source, + params string[] uniformName ) + { + if( uniformName.Length != 1 ) { + throw new ArgumentException( + "Camera needs only one uniform.", nameof( uniformName ) ); + } + convertedUniform = source.GetUniform( uniformName[ 0 ] ); + } + + public void MoveNear( float distance ) + { + cameraAtt.colum3.Z -= distance; + _isLookAtAvailable = false; + } + + public void MoveRight( float distance ) + { + cameraAtt.colum3.X -= distance; + _isLookAtAvailable = false; + } + + public void MoveUp( float distance ) + { + cameraAtt.colum3.Y -= distance; + _isLookAtAvailable = false; + } + + public unsafe void SetAllUniforms() + { + //Console.WriteLine(Projection * ViewBase); + OpenGL.OpenGLFunction.CurrentGL + .SetUniformValue( convertedUniform, Projection * View ); + } + + public void SetViewDirection( Vec3 position, Vec3 target, Vec3 up ) + { + Vec3 direction = position - target; + if( ( position.vec == cameraAtt.colum3.vec ) && ( this.up == up ) && ( cameraAtt.colum2.vec == direction.vec ) ) { + //no difference with precious value + return; + } + if( direction.GetLength() == 0 ) { + //deadlock + throw new ArgumentException(); + } + if( Vec3.IsParallel( direction, up ) ) { + throw new ArgumentException(); + } + _target = direction; + this.up = up; + + _isLookAtAvailable = false; + + Linear.Orthogonalize( ref direction, ref up ); + + Vec3 right = Linear.Orthogonalize( Linear.Cross( up, direction ) ); + + cameraAtt.colum0.vec = right.vec; + cameraAtt.colum1.vec = up.vec; + cameraAtt.colum2.vec = direction.vec; + cameraAtt.colum3.vec = position.vec; + + InternalPitch(); + InternalRow(); + InternalYaw(); + } + + public void SetViewRange( + Radius fovRadius, + Vec2 size, + Vec2 offset, + (float front, float back) dephRange ) + { + float + distance = _target.GetLength(), + near = distance - dephRange.front, + far = distance + dephRange.back, + offsetX = offset.X, + offsetY = offset.Y, + width = Scaler.Abs( + GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), + height = ( width * size.Y ) / size.X; + + _projection.colum0.X = ( 2 * near ) / width; + _projection.colum1.Y = ( 2 * near ) / height; + _projection.colum2.X = ( 2 * offsetX ) / width; + _projection.colum2.Y = ( 2 * offsetY ) / height; + _projection.colum2.Z = ( far + near ) / ( near - far ); + _projection.colum2.W = -1; + _projection.colum3.Z = ( 2 * near * far ) / ( near - far ); + } + + public void Test( params Vec4[] vec ) + { + Console.WriteLine( View ); + Console.WriteLine( Projection ); + Console.WriteLine( Projection * View ); + Console.WriteLine( View ); + foreach( Vec4 item in vec ) { + Console.Write( $"{Projection * View * item};" ); + } + } + + ShaderStruct IglConvertable.GetConvertedGLtype() + { + throw new NotImplementedException(); + } + + ~Camera() { } + + #region rotation + + public void Yaw( Radius r ) + { + _yaw -= r; + + //Console.WriteLine(_yaw._radius); + //Console.WriteLine(rotationAtt); + InternalYaw(); + } + + public void Pitch( Radius r ) + { + _pitch -= r; + + //Console.WriteLine(_pitch._radius); + //Console.WriteLine(rotationAtt); + InternalPitch(); + } + + public void Row( Radius r ) + { + _row -= r; + + //Console.WriteLine(_row._radius); + //Console.WriteLine(rotationAtt); + InternalRow(); + } + + internal void InternalPitch() + { + _isLookAtAvailable = false; + + Matrix32 partialCoord = new Matrix32( + cameraAtt.colum1.vec, cameraAtt.colum2.vec ); + float angle = _pitch._radius; + + Matrix22 rotation = new Matrix22( + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); + + partialCoord *= rotation; + rotationAtt.colum1.vec = partialCoord.colum0.vec; + rotationAtt.colum2.vec = partialCoord.colum1.vec; + rotationAtt.isTransposed = false; + } + + internal void InternalRow() + { + _isLookAtAvailable = false; + + Matrix32 partialCoord = new Matrix32( + cameraAtt.colum0.vec, cameraAtt.colum1.vec ); + float angle = _row._radius; + + Matrix22 rotation = new Matrix22( + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); + + partialCoord *= rotation; + rotationAtt.colum0.vec = partialCoord.colum0.vec; + rotationAtt.colum1.vec = partialCoord.colum1.vec; + rotationAtt.isTransposed = false; + } + + internal void InternalYaw() + { + _isLookAtAvailable = false; + + Matrix32 partialCoord = new Matrix32( + cameraAtt.colum0.vec, cameraAtt.colum2.vec ); + float angle = _yaw._radius; + Matrix22 rotation = new Matrix22( + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); + + partialCoord *= rotation; + rotationAtt.colum0.vec = partialCoord.colum0.vec; + rotationAtt.colum2.vec = partialCoord.colum1.vec; + rotationAtt.isTransposed = false; + } + + #endregion + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Cordination.cs b/内核源代码/StgSharp.Common/Math/Linear/Cordination.cs new file mode 100644 index 00000000..225ceb3f --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Cordination.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Cordination.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public enum CoordinatePlain + { + + XY, + YZ, + XZ, + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/IVector.cs b/内核源代码/StgSharp.Common/Math/Linear/IVector.cs new file mode 100644 index 00000000..3b65e829 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/IVector.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IVector.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.Numerics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public interface IVector + { + /* + public static T Create(Vector4 source) where T : IVector + { + return T + } + /**/ + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix22.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix22.cs new file mode 100644 index 00000000..84a9b0fb --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix22.cs @@ -0,0 +1,181 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix22.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.Internal.Intrinsic; + +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 2 * 2 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix22 : IMat + { + [FieldOffset( 2 * 2 * 4 * sizeof( float ) )] + internal bool isTransposed = false; + + [FieldOffset( 0 )] + internal ColumnSet2 _mat; + [FieldOffset( 2 * 4 * sizeof( float ) )] + internal ColumnSet2 _transpose; + + public Matrix22() + { + Unsafe.SkipInit( out this ); + isTransposed = false; + } + + internal Matrix22( ColumnSet2 mat ) + { + this._mat = mat; + } + + internal Matrix22( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + _mat.colum0 = c0; + _mat.colum1 = c1; + } + + public Matrix22( float a00, float a01, float a10, float a11 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + _mat.colum0 = new Vector4( a00, a10, 0, 0 ); + _mat.colum1 = new Vector4( a01, a11, 0, 0 ); + } + + public Matrix22 Transpose + { + get + { + InternalTranspose(); + return new Matrix22( this._transpose ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Det() + { + return ( _mat.m00 * _mat.m11 ) - ( _mat.m10 * _mat.m01 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void InternalTranspose() + { + if( !isTransposed ) { + _transpose = _mat; + float cache = _transpose.m10; + _transpose.m10 = _transpose.m01; + _transpose.m01 = cache; + + isTransposed = true; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe Matrix22 operator +(Matrix22 left, Matrix22 right) + { + Matrix22 ret = new Matrix22(); + InternalIO.Intrinsic.add_mat_2( &left._mat, &right._mat, &ret._mat ); + return ret; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator -( Matrix22 left, Matrix22 right ) + { + return new Matrix22( + left._mat.colum0 + right._mat.colum0, + left._mat.colum1 + right._mat.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix22 mat, float value ) + { + return new Matrix22( + mat._mat.colum0 * value, mat._mat.colum1 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix22 left, Matrix22 right ) + { + left.InternalTranspose(); + return new Matrix22( + Vector4.Dot( left._transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right._mat.colum1 ), + + Vector4.Dot( left._transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum1, right._mat.colum1 )); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix22 left, Matrix23 right ) + { + left.InternalTranspose(); + return new Matrix23( + Vector4.Dot( left._transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right._mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right._mat.colum2 ), + + Vector4.Dot( left._transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum1, right._mat.colum1 ), + Vector4.Dot( left._transpose.colum1, right._mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix22 left, Matrix24 right ) + { + left.InternalTranspose(); + return new Matrix24( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left._transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum1, right.mat.colum3 )); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator /( Matrix22 mat, float value ) + { + return new Matrix22( + mat._mat.colum0 / value, mat._mat.colum1 / value ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix23.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix23.cs new file mode 100644 index 00000000..d65fb1c7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix23.cs @@ -0,0 +1,200 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix23.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 3 + 2 ) * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix23 : IMat + { + + [FieldOffset( 5 * 4 * sizeof( float ) )] internal bool isTransposed = false; + [FieldOffset( 3 * 4 * sizeof( float ) )] internal ColumnSet2 _transpose; + [FieldOffset( 0 )] internal ColumnSet3 _mat; + + public Matrix23() + { + Unsafe.SkipInit( out _mat); + Unsafe.SkipInit(out _transpose); + } + + internal Matrix23( Vector4 c0, Vector4 c1, Vector4 c2 ) + { + _mat.colum0 = c0; + _mat.colum1 = c1; + _mat.colum2 = c2; + } + + public Matrix23( + float a00, + float a01, + float a02, + float a10, + float a11, + float a12 ) + { + _mat.colum0 = new Vector4( a00, a10, 0, 0 ); + _mat.colum1 = new Vector4( a01, a11, 0, 0 ); + _mat.colum2 = new Vector4( a02, a12, 0, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this._transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this._transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet3* source = &this._mat ) { + fixed( ColumnSet2* target = &this._transpose ) { + InternalIO.Intrinsic.transpose32( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator -( Matrix23 left, Matrix23 right ) + { + return new Matrix23( + left._mat.colum0 - right._mat.colum0, + left._mat.colum1 - right._mat.colum1, + left._mat.colum2 - right._mat.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix23 mat, float value ) + { + return new Matrix23( + mat._mat.colum0 * value, mat._mat.colum1 * value, + mat._mat.colum2 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix23 left, Matrix32 right ) + { + left.InternalTranspose(); + return new Matrix22( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix23 left, Matrix33 right ) + { + left.InternalTranspose(); + return new Matrix23( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix23 left, Matrix34 right ) + { + left.InternalTranspose(); + return new Matrix24( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator /( Matrix23 mat, float value ) + { + return new Matrix23( + mat._mat.colum0 / value, mat._mat.colum1 / value, + mat._mat.colum2 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix23 operator +( Matrix23 left, Matrix23 right ) + { + Matrix23 ret = new Matrix23(); + InternalIO.Intrinsic.add_mat_3(&left._mat, &right._mat, &ret._mat); + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix24.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix24.cs new file mode 100644 index 00000000..d03d80e2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix24.cs @@ -0,0 +1,220 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix24.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 4 + 2 ) * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix24 : IMat + { + [FieldOffset( 6 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 4 * 4 * sizeof( float ) )] internal ColumnSet2 transpose; + + [FieldOffset( 0 )] internal ColumnSet4 mat; + + [FieldOffset( 0 )] public Vec2 Colum0; + [FieldOffset( 16 )] public Vec2 Colum1; + [FieldOffset( 32 )] public Vec2 Colum2; + [FieldOffset( 48 )] public Vec2 Colum3; + + public Matrix24() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix24( Vector4 c0, Vector4 c1, Vector4 c2, Vector4 c3 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + mat.colum3 = c3; + } + + public Matrix24( + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, 0, 0 ); + mat.colum1 = new Vector4( a01, a11, 0, 0 ); + mat.colum2 = new Vector4( a02, a12, 0, 0 ); + mat.colum3 = new Vector4( a03, a13, 0, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public override string ToString() + { + InternalTranspose(); + return $"{$"[{mat.m00},{mat.m01},{mat.m02},{mat.m03}],"}{$"[{mat.m10},{mat.m11},{mat.m12},{mat.m13}]"}"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet4* source = &this.mat ) { + fixed( ColumnSet2* target = &this.transpose ) { + InternalIO.Intrinsic.transpose42( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator -( Matrix24 left, Matrix24 right ) + { + return new Matrix24( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 - right.mat.colum2, + left.mat.colum3 - right.mat.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix24 mat, float value ) + { + return new Matrix24( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix24 left, Matrix42 right ) + { + left.InternalTranspose(); + return new Matrix22( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix24 left, Matrix43 right ) + { + left.InternalTranspose(); + return new Matrix23( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix24 left, Matrix44 right ) + { + left.InternalTranspose(); + return new Matrix24( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator /( Matrix24 mat, float value ) + { + return new Matrix24( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value, mat.mat.colum3 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix24 operator +( Matrix24 left, Matrix24 right ) + { + Matrix24 ret = new Matrix24(); + InternalIO.Intrinsic.add_mat_4(&left.mat,&right.mat,&ret.mat); + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix32.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix32.cs new file mode 100644 index 00000000..b07ce0a7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix32.cs @@ -0,0 +1,220 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix32.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 5 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix32 : IMat + { + + [FieldOffset( 5 * 4 * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet2 mat; + [FieldOffset( 2 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + + [FieldOffset( 0 )] internal Vec3 colum0; + [FieldOffset( 4 * 4 )] internal Vec3 colum1; + + public Matrix32() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix32( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + } + + public unsafe Matrix32( + float a00, + float a01, + float a10, + float a11, + float a20, + float a21 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum1 = new Vector4( a01, a11, a21, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public Vec3 VerticalVecMultiply( Vec2 vec ) + { + return ( colum0 * vec.X ) + ( colum1 * vec.Y ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet2* source = &this.mat ) { + fixed( ColumnSet3* target = &this.transpose ) { + InternalIO.Intrinsic.transpose23( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator -( Matrix32 left, Matrix32 right ) + { + return new Matrix32( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix32 mat, float value ) + { + return new Matrix32( + mat.mat.colum0 * value, mat.mat.colum1 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix32 left, Matrix22 right ) + { + left.InternalTranspose(); + return new Matrix32( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix32 left, Matrix23 right ) + { + left.InternalTranspose(); + return new Matrix33( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix32 left, Matrix24 right ) + { + left.InternalTranspose(); + return new Matrix34( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator /( Matrix32 mat, float value ) + { + return new Matrix32( + mat.mat.colum0 / value, mat.mat.colum1 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix32 operator +( Matrix32 left, Matrix32 right ) + { + Matrix32 ret = new Matrix32(); + InternalIO.Intrinsic.add_mat_2(&left.mat, &right.mat, &ret.mat); + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix33.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix33.cs new file mode 100644 index 00000000..5d89b5c6 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix33.cs @@ -0,0 +1,240 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix33.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 6 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix33 : IMat + { + + [FieldOffset( 6 * 4 * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet3 mat; + [FieldOffset( 3 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + [FieldOffset( 0 * 4 * sizeof( float ) )] public Vec3 Colum0; + [FieldOffset( 1 * 4 * sizeof( float ) )] public Vec3 Colum1; + [FieldOffset( 2 * 4 * sizeof( float ) )] public Vec3 Colum2; + + public Matrix33() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix33( Vector4 c0, Vector4 c1, Vector4 c2 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + } + + public Matrix33( + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum1 = new Vector4( a01, a11, a21, 0 ); + mat.colum2 = new Vector4( a02, a12, a22, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + InternalIO.InternalWriteLog( + $"Attempt to write unused space in {GetType().Name} {nameof(mat)}", + LogType.Error ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe float Det() + { + fixed( ColumnSet3* mat = &this.mat ) { + return InternalIO.Intrinsic.det_mat_3( mat, ( ColumnSet3* )0 ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat, target = &this.transpose ) { + InternalIO.Intrinsic.transpose33( source, target ); + } + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator -( Matrix33 left, Matrix33 right ) + { + return new Matrix33( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 + right.mat.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix33 mat, float value ) + { + return new Matrix33( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator *( Matrix33 left, Vec3 right ) + { + left.InternalTranspose(); + return new Vec3( + Vector4.Dot( left.transpose.colum0, right.vec ), + Vector4.Dot( left.transpose.colum1, right.vec ), + Vector4.Dot( left.transpose.colum2, right.vec ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix33 left, Matrix32 right ) + { + left.InternalTranspose(); + return new Matrix32( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix33 left, Matrix33 right ) + { + left.InternalTranspose(); + return new Matrix33( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix33 left, Matrix34 right ) + { + left.InternalTranspose(); + return new Matrix34( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator /( Matrix33 mat, float value ) + { + return new Matrix33( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix33 operator +( Matrix33 left, Matrix33 right ) + { + Matrix33 ret = new Matrix33(); + InternalIO.Intrinsic.add_mat_3(&left.mat, &right.mat, &ret.mat); + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix34.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix34.cs new file mode 100644 index 00000000..a521e02e --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix34.cs @@ -0,0 +1,239 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix34.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.Internal.Intrinsic; + +using System; +using System.Drawing; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 7 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix34 : IMat + { + + [FieldOffset( 7 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 4 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + + [FieldOffset( 0 )] internal ColumnSet4 mat; + + [FieldOffset( 0 * 4 * sizeof( float ) )] public Vec3 Colum0; + [FieldOffset( 1 * 4 * sizeof( float ) )] public Vec3 Colum1; + [FieldOffset( 2 * 4 * sizeof( float ) )] public Vec3 Colum2; + [FieldOffset( 3 * 4 * sizeof( float ) )] public Vec3 Colum3; + + public Matrix34() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix34( ColumnSet4 mat ) + { + Unsafe.SkipInit( out this ); + isTransposed = false; + this.mat = mat; + } + + internal Matrix34( Vector4 c0, Vector4 c1, Vector4 c2, Vector4 c3 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + mat.colum3 = c3; + } + + public Matrix34( + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13, + float a20, + float a21, + float a22, + float a23 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum0 = new Vector4( a01, a11, a21, 0 ); + mat.colum0 = new Vector4( a02, a12, a22, 0 ); + mat.colum0 = new Vector4( a03, a13, a23, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet4* source = &this.mat ) { + fixed( ColumnSet3* target = &this.transpose ) { + InternalIO.Intrinsic.transpose43( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator -( Matrix34 left, Matrix34 right ) + { + return new Matrix34( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 - right.mat.colum2, + left.mat.colum3 - right.mat.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix34 mat, float value ) + { + return new Matrix34( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix34 left, Matrix42 right ) + { + left.InternalTranspose(); + return new Matrix32( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix34 left, Matrix43 right ) + { + left.InternalTranspose(); + return new Matrix33( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix34 left, Matrix44 right ) + { + left.InternalTranspose(); + return new Matrix34( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator /( Matrix34 mat, float value ) + { + return new Matrix34( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value, mat.mat.colum3 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix34 operator +( Matrix34 left, Matrix34 right ) + { + Matrix34 ret = new Matrix34(); + InternalIO.Intrinsic.add_mat_4(&left.mat,&right.mat,&ret.mat); + return ret; + + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix42.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix42.cs new file mode 100644 index 00000000..c4a359b0 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix42.cs @@ -0,0 +1,243 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix42.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 16 + 8 ) * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix42 : IMat + { + + [FieldOffset( ( 16 + 8 ) * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet2 mat; + [FieldOffset( 8 * sizeof( float ) )] internal ColumnSet4 transpose; + + public Matrix42() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix42( ColumnSet2 mat ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + this.mat = mat; + } + + internal Matrix42( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit(out this); + isTransposed= false; + mat.colum0 = c0; + mat.colum1 = c1; + } + + public Matrix42( + float a00, + float a01, + float a10, + float a11, + float a20, + float a21, + float a30, + float a31 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public override int GetHashCode() + { + return HashCode.Combine( + mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet2* source = &this.mat ) { + fixed( ColumnSet4* target = &this.transpose ) { + InternalIO.Intrinsic.transpose24( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator -( + Matrix42 left, + Matrix42 right ) + { + return new Matrix42( + left.mat.colum0 - right.mat.colum0, + left.mat.colum0 - right.mat.colum0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix42 mat, float value ) + { + return new Matrix42( + mat.mat.colum0 * value, mat.mat.colum1 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix42 left, Matrix22 right ) + { + left.InternalTranspose(); + return new Matrix42( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum3, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right._mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix42 left, Matrix23 right ) + { + left.InternalTranspose(); + return new Matrix43( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum3, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right._mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix42 left, Matrix24 right ) + { + left.InternalTranspose(); + return new Matrix44( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator /( Matrix42 mat, float value ) + { + return new Matrix42( + mat.mat.colum0 / value, mat.mat.colum1 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator +( + Matrix42 left, + Matrix42 right ) + { + return new Matrix42( + left.mat.colum0 + right.mat.colum0, + left.mat.colum0 + right.mat.colum0 ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix43.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix43.cs new file mode 100644 index 00000000..14f32935 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix43.cs @@ -0,0 +1,266 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix43.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.Internal.Intrinsic; + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.AccessControl; + +namespace StgSharp.Math +{ + [StructLayout( + layoutKind: LayoutKind.Explicit, + Size = ( 7 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix43 : IEquatable, IMat + { + + [FieldOffset( 7 * 4 * sizeof( float ) )] + internal bool isTransposed; + + [FieldOffset( 0 )] + internal ColumnSet3 mat; + [FieldOffset( 3 * 4 * sizeof( float ) )] + internal ColumnSet4 transpose; + + public Matrix43() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix43( Vector4 c0, Vector4 c1, Vector4 c2 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + } + + public Matrix43( + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22, + float a30, + float a31, + float a32 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + mat.colum2 = new Vector4( a02, a12, a22, a32 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public override bool Equals( object? obj ) + { + return ( obj is Matrix43 x ) && Equals( x ); + } + + public bool Equals( Matrix43 other ) + { + return EqualityComparer.Default.Equals( mat, + other.mat ); + } + + public override int GetHashCode() + { + return HashCode.Combine( + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), + mat.colum2.GetHashCode() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat ) + fixed( ColumnSet4* target = &this.transpose ) { + InternalIO.Intrinsic.transpose34( source, target ); + } + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator -( Matrix43 left, Matrix43 right ) + { + return new Matrix43( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 - right.mat.colum2 ); + } + + public static bool operator !=( Matrix43 left, Matrix43 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix43 operator *( Matrix43 mat, float value ) + { + return new Matrix43( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix43 left, Matrix32 right ) + { + left.InternalTranspose(); + return new Matrix42( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix43 left, Matrix33 right ) + { + left.InternalTranspose(); + return new Matrix43( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix43 left, Matrix34 right ) + { + left.InternalTranspose(); + return new Matrix44( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator /( Matrix43 mat, float value ) + { + return new Matrix43( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix43 operator +( Matrix43 left, Matrix43 right ) + { + Matrix43 ret = new Matrix43(); + InternalIO.Intrinsic.add_mat_3(&left.mat, &right.mat, &ret.mat); + return ret; + } + + public static bool operator ==( Matrix43 left, Matrix43 right ) + { + return left.Equals( right ); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Math/Linear/Matrix44.cs b/内核源代码/StgSharp.Common/Math/Linear/Matrix44.cs new file mode 100644 index 00000000..6e633415 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Matrix44.cs @@ -0,0 +1,324 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix44.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.Internal.Intrinsic; + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 2 * 16 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public unsafe struct Matrix44 : IEquatable, IMat + { + + [FieldOffset( 2 * 64 * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet4 mat; + [FieldOffset( 16 * sizeof( float ) )] internal ColumnSet4 transpose; + [FieldOffset( 0 * sizeof( float ) )] internal Vec4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vec4 colum1; + [FieldOffset( 8 * sizeof( float ) )] internal Vec4 colum2; + [FieldOffset( 12 * sizeof( float ) )] internal Vec4 colum3; + + public Matrix44() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix44( ColumnSet4 mat ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + this.mat = mat; + } + + internal Matrix44( + Vector4 vec0, + Vector4 vec1, + Vector4 vec2, + Vector4 vec3 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = vec0; + mat.colum1 = vec1; + mat.colum2 = vec2; + mat.colum3 = vec3; + } + + public unsafe Matrix44( + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13, + float a20, + float a21, + float a22, + float a23, + float a30, + float a31, + float a32, + float a33 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + mat.colum2 = new Vector4( a02, a12, a22, a32 ); + mat.colum3 = new Vector4( a03, a13, a23, a33 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + #if DEBUG + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + #endif + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + #if DEBUG + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + #endif + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public Matrix44 Transpose + { + get + { + InternalTranspose(); + return new Matrix44( this.transpose ); + } + } + + public static Matrix44 Unit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 WNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1 ); + + public static Matrix44 XNegativeUnit => new Matrix44( + -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 YNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 ZNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe float Det() + { + InternalTranspose(); + fixed( ColumnSet4* _this = &mat, _trans = &transpose ) { + return InternalIO.Intrinsic.det_mat_4( _this, _trans ); + } + } + + public override bool Equals( object? obj ) + { + return ( obj is Matrix44 x ) && Equals( x ); + } + + public bool Equals( Matrix44 other ) + { + return mat.Equals( other.mat ); + } + + public override int GetHashCode() + { + return HashCode.Combine( + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), + mat.colum2.GetHashCode(), mat.colum3.GetHashCode() ); + } + + public override string ToString() + { + InternalTranspose(); + return $"{transpose.colum0}{transpose.colum1}{transpose.colum2}{transpose.colum3}"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet4* source = &mat, target = &transpose ) { + InternalIO.Intrinsic.transpose44( source, target ); + } + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator -( + Matrix44 left, + Matrix44 right ) + { + return new Matrix44( + right.mat.colum0 - left.mat.colum0, + right.mat.colum1 - left.mat.colum1, + right.mat.colum2 - left.mat.colum2, + right.mat.colum3 - left.mat.colum3 ); + } + + public static bool operator !=( Matrix44 left, Matrix44 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator *( Matrix44 mat, float value ) + { + return new Matrix44( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe Matrix42 Multiple(in Matrix42 right) + { + InternalTranspose(); + Matrix42 ans = new Matrix42(); + fixed (ColumnSet4* lptr = &transpose) + fixed (Vector4* rptr = &right.mat.colum0) + { + InternalIO.Intrinsic.dot_42(lptr,rptr, &ans.mat.colum0); + } + return ans; + } + + [Obsolete("The operand may cause performance loss, use Matrix.Multiple() method instead.",false)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator *( + Matrix44 left, + Matrix42 right ) + { + return left.Multiple(right); + } + + public unsafe Matrix43 Multiple(in Matrix43 right) + { + InternalTranspose(); + + Matrix43 ans = new Matrix43(); + + fixed(Vector4* rptr = &right.mat.colum0) + fixed (ColumnSet4* lptr = &transpose) + { + InternalIO.Intrinsic.dot_43(lptr,rptr,&ans.mat.colum0); + } + return ans; + } + + [Obsolete("The operand may cause performance loss, use Matrix.Multiple() method instead.", false)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix44 left, Matrix43 right ) + { + return left.Multiple(in right); + } + + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix44 left, Matrix44 right ) + { + left.InternalTranspose(); + return new Matrix44( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator +(Matrix44 left, Matrix44 right ) + { + Matrix44 ret = new Matrix44(); + InternalIO.Intrinsic.add_mat_4(&left.mat, &right.mat, &ret.mat); + return ret; + } + + public static bool operator ==( Matrix44 left, Matrix44 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vec2.cs b/内核源代码/StgSharp.Common/Math/Linear/Vec2.cs new file mode 100644 index 00000000..a7c7ea12 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vec2.cs @@ -0,0 +1,133 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec2.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.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + /// + /// A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + /// vector. + /// + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec2 : IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 2 ]; + + [FieldOffset( 0 )] + internal Vector2 v; + + [FieldOffset( 0 )] + internal Vector4 vec; + + [FieldOffset( 0 )] + public float X; + [FieldOffset( 4 )] + public float Y; + + internal Vec2( Vector2 vec ) + { + v = vec; + } + + internal Vec2( Vector4 vec ) + { + this.vec = vec; + } + + public Vec2( float x, float y ) + { + v = new Vector2( x, y ); + } + + public static Vec2 Unit => new Vec2( 1, 1 ); + + public static Vec2 Zero => new Vec2( 0, 0 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Cross( Vec2 right ) + { + return ( X * right.Y ) - ( Y * right.X ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Dot( Vec2 vec ) + { + return Vector2.Dot( v, vec.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec2 operator -( Vec2 left, Vec2 right ) + { + return new Vec2( left.v - right.v ); + } + + public static bool operator !=( Vec2 left, Vec2 right ) + { + return !( left == right ); + } + + public static Vec2 operator *( Vec2 vec, float value ) + { + return new Vec2( vec.v * value ); + } + public static Vec2 operator *( float value, Vec2 vec ) + { + return new Vec2( vec.v * value ); + } + + public static Vec2 operator /( Vec2 vec, float value ) + { + return new Vec2( vec.v / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec2 operator +( Vec2 left, Vec2 right ) + { + return new Vec2( left.v + right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Vec2 left, Vec2 right ) + { + return left.v == right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static implicit operator Vec2( (float, float) tuple ) + { + return new Vec2( tuple.Item1, tuple.Item2 ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vec3.cs b/内核源代码/StgSharp.Common/Math/Linear/Vec3.cs new file mode 100644 index 00000000..c0506f34 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vec3.cs @@ -0,0 +1,228 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec3.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.AccessControl; + +namespace StgSharp.Math +{ + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec3 : IEquatable, IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 3 ]; + [FieldOffset( 0 )] + internal M128 reg; + + [FieldOffset( 0 )] + internal Vector3 v; + + [FieldOffset( 0 )] + internal Vector4 vec; + + [FieldOffset( 0 )] public float X; + [FieldOffset( 4 )] public float Y; + [FieldOffset( 8 )] public float Z; + + internal Vec3( Vector4 vector ) + { + vec = vector; + } + + internal Vec3( Vector3 vector ) + { + v = vector; + } + + public Vec3( Vec2 xy, float z ) + { + vec = xy.vec; + Z = z; + } + + public Vec3( float x, float y, float z ) + { + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out vec ); + #endif + v = new Vector3( x, y, z ); + } + + public unsafe Vec2 XY + { + get => new Vec2( this.vec ); + set + { + fixed( Vector3* vptr = &v ) { + *( Vector2* )vptr = value.v; + } + } + } + + public Vec3 XYZ + { + get { return new Vec3( v ); } + } + + public static Vec3 Zero + { + get => new Vec3( 0, 0, 0 ); + } + + public static Vec3 One => new Vec3( 1, 1, 1 ); + + public static Vec3 UnitX => new Vec3( 1, 0, 0 ); + + public static Vec3 UnitY => new Vec3( 0, 1, 0 ); + + public static Vec3 UnitZ => new Vec3( 0, 0, 1 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 Cross( Vec3 left, Vec3 right ) + { + return Linear.Cross( left, right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Dot( Vec3 right ) + { + return Vector3.Dot( v, right.v ); + } + + public bool Equals( Vec3 other ) + { + return this.vec == other.vec; + } + + public override bool Equals( object obj ) + { + if( obj is Vec3 ) { + return this == ( Vec3 )obj; + } else { + return false; + } + } + + public override unsafe int GetHashCode() + { + fixed( float* add = &X ) { + return HashCode.Combine( X, Y, Z, ( ulong )add ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float GetMaxValue() + { + float ret = X; + ret = ( ret > Y ) ? ret : Y; + ret = ( ret > Z ) ? ret : Z; + return ret; + } + + public static bool IsParallel( Vec3 left, Vec3 right ) + { + return Cross( left, right ) == Zero; + } + + public override string ToString() + { + return $"[{X},{Y},{Z}]"; + } + + public string ToString( string sample ) + { + return $"[{X.ToString(sample)},{Y.ToString(sample)},{Z.ToString(sample)}]"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator -( Vec3 vec ) + { + return new Vec3( -vec.vec ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator -( Vec3 left, Vec3 right ) + { + return new Vec3( left.v - right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( Vec3 left, Vec3 right ) + { + return left.v != right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator *( Vec3 vec, float value ) + { + return new Vec3( vec.v * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float operator *( Vec3 left, Vec3 right ) + { + return Vector3.Dot( left.v, right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator /( Vec3 vec, float value ) + { + return new Vec3( vec.v / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator +( Vec3 left, Vec3 right ) + { + return new Vec3( left.vec + right.vec ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Vec3 left, Vec3 right ) + { + return left.v == right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe implicit operator Vec3( + (float, float, float) tuple ) + { + Vec3 v = *( Vec3* )&tuple; + v.vec.W = 0.0f; + return v; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vec4.cs b/内核源代码/StgSharp.Common/Math/Linear/Vec4.cs new file mode 100644 index 00000000..acf660d7 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vec4.cs @@ -0,0 +1,171 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec4.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.Common.Internal.Intrinsic; +using StgSharp.Internal.Intrinsic; +using StgSharp.Math; + +using System; +using System.Data.Common; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec4 : IEquatable, IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 4 ]; + + [FieldOffset( 0 )] internal M128 reg; + + [FieldOffset( 0 )] internal Vector4 vec; + [FieldOffset( 12 )] public float W; + + [FieldOffset( 0 )] public float X; + [FieldOffset( 4 )] public float Y; + [FieldOffset( 8 )] public float Z; + + internal Vec4( Vector4 v ) + { + vec = v; + } + + public Vec4( Vec3 v, float w ) + { + vec = v.vec; + W = w; + } + + public Vec4( float x, float y, float z, float w ) + { + vec = new Vector4( x, y, z, w ); + } + + public unsafe Vec2 XY + { + get => new Vec2( vec ); + set + { + X = value.X; + Y = value.Y; + } + } + + public unsafe Vec3 XYZ + { + get => new Vec3( vec ); + set + { + float w = W; + vec = value.vec; + W = w; + } + } + + public static Vec4 One + { + get => new Vec4( Vector4.One ); + } + + public static Vec4 Zero + { + get => new Vec4( Vector4.Zero ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 Add( Vec4 left, Vec4 right ) + { + return left + right; + } + + public override bool Equals( object obj ) + { + return ( obj is Vec4 v ) ? ( v == this ) : false; + } + + public override int GetHashCode() + { + return vec.GetHashCode(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 Subtract( Vec4 left, Vec4 right ) + { + return left - right; + } + + public override string ToString() + { + return vec.ToString(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator -( Vec4 left, Vec4 right ) + { + return new Vec4( left.vec - right.vec ); + } + + public static bool operator !=( Vec4 left, Vec4 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator *( Matrix44 mat, Vec4 vec ) + { + mat.InternalTranspose(); + return new Vec4( + Vector4.Dot( mat.transpose.colum0, vec.vec ), + Vector4.Dot( mat.transpose.colum1, vec.vec ), + Vector4.Dot( mat.transpose.colum2, vec.vec ), + Vector4.Dot( mat.transpose.colum3, vec.vec ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator +( Vec4 left, Vec4 right ) + { + return new Vec4( left.vec + right.vec ); + } + + public static bool operator ==( Vec4 left, Vec4 right ) + { + return left.vec == right.vec; + } + + bool IEquatable.Equals( Vec4 other ) + { + return vec == other.vec; + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vector.Cross.cs b/内核源代码/StgSharp.Common/Math/Linear/Vector.Cross.cs new file mode 100644 index 00000000..1f1866e0 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vector.Cross.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.Cross.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Linear + { + + public static float Cross( Vec2 vec1, Vec2 vec2 ) + { + return ( vec1.X * vec2.Y ) - ( vec1.Y * vec2.X ); + } + + public static Vec3 Cross( Vec3 vec1, Vec3 vec2 ) + { + return new Vec3( + ( vec1.Y * vec2.Z ) - ( vec1.Z * vec2.Y ), + ( vec1.X * vec2.Z ) - ( vec1.Z * vec2.X ), + ( vec1.X * vec2.Y ) - ( vec1.Y * vec2.X ) ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vector.GetAngle.cs b/内核源代码/StgSharp.Common/Math/Linear/Vector.GetAngle.cs new file mode 100644 index 00000000..81144fe6 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vector.GetAngle.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.GetAngle.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Linear + { + + public static float GetAngle( Vec2 vec1, Vec2 vec2 ) + { + return Scaler.ACos( + 1 + //vec1.multiple(vec2) + / ( vec1.GetLength() * vec2.GetLength() ) ); + } + + public static float GetAngle( Vec3 vec1, Vec3 vec2 ) + { + return Scaler.ACos( + ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vector.GetLength.cs b/内核源代码/StgSharp.Common/Math/Linear/Vector.GetLength.cs new file mode 100644 index 00000000..4a6ab6a6 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vector.GetLength.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.GetLength.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Linear + { + + public static float GetLength( this Vec3 vec ) + { + return Scaler.Sqrt( vec.Dot( vec ) ); + } + + public static float GetLength( this Vec2 vec ) + { + return Scaler.Sqrt( vec.Dot( vec ) ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vector.Normalize.cs b/内核源代码/StgSharp.Common/Math/Linear/Vector.Normalize.cs new file mode 100644 index 00000000..5ba9919a --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vector.Normalize.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.Normalize.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.Internal; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public static partial class Linear + { + + public static Vec4 Normalize( Vec4 vec ) + { + return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static Vec3 Normalize( Vec3 vec ) + { + return new Vec3 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static unsafe void Normalize( ref Vec4 source, ref Vec4 target ) + { + Vector4 s = source.vec; + Vector4 t = target.vec; + + s = Vector4.Normalize( s ); + + float dotProduct = Vector4.Dot( s, t ); + Vector4 projection = Vector4.Multiply( s, t ); + + t -= projection; + + source.vec = s; + target.vec = t; + } + + public static unsafe void Normalize( ref Vec3 source, ref Vec3 target ) + { + Vector3 s = source.v; + Vector3 t = target.v; + + s = Vector3.Normalize( s ); + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, + s ) ) * s; + t -= projection; + t = Vector3.Normalize( t ); + + source.v = s; + target.v = t; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs b/内核源代码/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs new file mode 100644 index 00000000..5cd1da89 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs @@ -0,0 +1,99 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.Orthogonalize.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.Internal.Intrinsic; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public static partial class Linear + { + + public static Vec4 Orthogonalize( Vec4 vec ) + { + return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static Vec3 Orthogonalize( Vec3 vec ) + { + return new Vec3 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static unsafe void Orthogonalize( + ref Vec4 source, + ref Vec4 target ) + { + Vector4 s = source.vec; + Vector4 t = target.vec; + + s = Vector4.Normalize( s ); + + float dotProduct = Vector4.Dot( s, t ); + Vector4 projection = Vector4.Multiply( s, t ); + + t -= projection; + + source.vec = s; + target.vec = t; + } + + /// + /// Orthogonalize two s, let their length be 1 and perpendicular to each + /// other. + /// + /// + /// + public static unsafe void Orthogonalize( + ref Vec3 source, + ref Vec3 target ) + { + Vector3 s = source.v; + Vector3 t = target.v; + + s = Vector3.Normalize( s ); + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, + s ) ) * s; + t -= projection; + t = Vector3.Normalize( t ); + + source.v = s; + target.v = t; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/ACos.cs b/内核源代码/StgSharp.Common/Math/Scalar/ACos.cs new file mode 100644 index 00000000..90e8744d --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/ACos.cs @@ -0,0 +1,110 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ACos.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float ACos( float x ) + { + return MathF.Acos( x ); + + /* + int sign = 1; + float y; + + if (x < 0) + { + sign = -1; + y = -x; + } + else + { + y = x; + } + + if (x > 1) + { + throw new ArgumentException(); + } + + float r, s, u, v = 0.0f; + bool transform = (y >= 0.5f); + + if (transform) + { + r = 0.5f * (1.0f - y); + s = Scaler.Sqrt(r); + y = s; + } + else + { + r = y * y; + } + u = r * (0.184161606965100694821398249421F + + (-0.0565298683201845211985026327361F + + (-0.0133819288943925804214011424456F - + 0.00396137437848476485201154797087F * r) * r) * r) / + (1.10496961524520294485512696706F - + 0.836411276854206731913362287293F * r); + /* + + if (transform) + { + float c, s1, p, q; + uint us; + + us = *(uint*)&s; + uint uss = us & 0xffff0000; + s1 = *(float*)&uss; + + c = (r - s1 * s1) / (s + s1); + p = 2.0F * s * u - (piby2_tail - 2.0F * c); + q = hpiby2_head - 2.0F * s1; + v = hpiby2_head - (p - q); + } + else + { + v = y + y * u; + } + + v = sign * v; + + return piby2 - v; + */ + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/ASin.cs b/内核源代码/StgSharp.Common/Math/Scalar/ASin.cs new file mode 100644 index 00000000..7b32d995 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/ASin.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ASin.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; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + private const float + piby2_tail = 7.5497894159e-08f, /* 0x33a22168 */ + hpiby2_head = 7.8539812565e-01f, /* 0x3f490fda */ + piby2 = 1.5707963705e+00f; /* 0x3fc90fdb */ + + /// + /// Reurns the value of ArcSin(x) + /// + /// The sine value of the angle + /// + /// + public static float ASin( float x ) + { + return MathF.Asin( x ); + /* + int sign = 1; + float y; + + if (x < 0) + { + sign = -1; + y = -x; + } + else + { + y = x; + } + + if (x > 1) + { + throw new ArgumentException(); + } + + float r, s, u, v = 0.0f; + bool transform = (y >= 0.5f); + + if (transform) + { + r = 0.5f * (1.0f - y); + s = Scaler.Sqrt(r); + y = s; + } + else + { + r = y * y; + } + u = r * (0.184161606965100694821398249421F + + (-0.0565298683201845211985026327361F + + (-0.0133819288943925804214011424456F - + 0.00396137437848476485201154797087F * r) * r) * r) / + (1.10496961524520294485512696706F - + 0.836411276854206731913362287293F * r); + /* + + if (transform) + { + float c, s1, p, q; + uint us; + + us = *(uint*)&s; + uint uss = us & 0xffff0000; + s1 = *(float*)&uss; + + c = (r - s1 * s1) / (s + s1); + p = 2.0F * s * u - (piby2_tail - 2.0F * c); + q = hpiby2_head - 2.0F * s1; + v = hpiby2_head - (p - q); + } + else + { + v = y + y * u; + }/* + + return sign * v; + */ + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/ATan.cs b/内核源代码/StgSharp.Common/Math/Scalar/ATan.cs new file mode 100644 index 00000000..e9068cd2 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/ATan.cs @@ -0,0 +1,119 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ATan.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float ATan( float x ) + { + return MathF.Atan( x ); + /* + float sign = 1, angle = 0; + if (x < 0) + { + sign = -1; + x = -x; + } + uint xBit = *(uint*)&x; + int xExp = (int)(xBit >> 23) - 127; + if (xExp >= 26) + { + return 1; + } + if (xExp <= -15) + { + return x; + } + if (xExp >= 0) + { + x = (x - 1) / (x + 1); + angle = 0.7853981634f; + } + + float v = 0.7853981634f * x + x * (1 - x) * (0.2447f + 0.0663f * x); + v += angle; + v *= sign; + + return v; + + + } + + + public static unsafe float ATan(float x, float y) + { + + + float z = y / x; + + float sign = 1, angle = 0, angle2 = 0; + if (x < 0) + { + angle = -3.1415926535f; + } + if (z < 0) + { + sign = -1; + z = -z; + } + uint zBit = *(uint*)&z; + int zExp = (int)(zBit >> 23) - 127; + if (zExp >= 26) + { + return 1; + } + if (zExp <= -15) + { + return z; + } + if (zExp >= 0) + { + z = (z - 1) / (z + 1); + angle2 = 0.7853981634f; + } + + float v = 0.7853981634f * z + z * (1 - z) * (0.2447f + 0.0663f * z); + v *= 57.29577951f; + v += angle2; + v += angle; + v *= sign; + + return v; + */ + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/BasicOps.cs b/内核源代码/StgSharp.Common/Math/Scalar/BasicOps.cs new file mode 100644 index 00000000..e211a3d3 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/BasicOps.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BasicOps.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.Globalization; +using System.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float Abs( float x ) + { + uint* a = ( uint* )&x; + *a &= 0b_0111_1111_1111_1111_1111_1111_1111_1111; + return *( float* )a; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int Abs( int x ) + { + uint* a = ( uint* )&x; + *a &= 0b_0111_1111_1111_1111_1111_1111_1111_1111; + return *( int* )a; + } + + internal static string GetListSeparator( + IFormatProvider formatProvider ) + { + if( formatProvider is CultureInfo cultureInfo ) { + return cultureInfo.TextInfo.ListSeparator; + } + + if( formatProvider?.GetFormat( typeof( TextInfo ) ) is TextInfo textInfo ) { + return textInfo.ListSeparator; + } + + return CultureInfo.CurrentCulture.TextInfo.ListSeparator; + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Compare.cs b/内核源代码/StgSharp.Common/Math/Scalar/Compare.cs new file mode 100644 index 00000000..8f7b2e21 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Compare.cs @@ -0,0 +1,65 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Compare.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.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public static float MaxOf( params float[] stream ) + { + float ret = stream[ 0 ]; + foreach( float num in stream ) { + if( ret < num ) { + ret = num; + } + } + return ret; + } + + public static float MinOf( params float[] stream ) + { + float ret = stream[ 0 ]; + foreach( float num in stream ) { + if( ret > num ) { + ret = num; + } + } + return ret; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Cos.cs b/内核源代码/StgSharp.Common/Math/Scalar/Cos.cs new file mode 100644 index 00000000..cb8fa828 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Cos.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Cos.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( float x ) + { + /* + float refer = x / 360.0f; + refer -= (int)refer; + + refer *= 40; + int a = (int)refer; //大分度,查表 + refer -= a; //小分度,拟合 + + float refer2 = refer * refer; + + + return ((-sinData[a]) * ((0.1570796327f * refer) - (6.459640975e-4f * refer * refer2))) + + (cosData[a] * ((1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2))); + */ + return MathF.Cos( x ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Ctor.cs b/内核源代码/StgSharp.Common/Math/Scalar/Ctor.cs new file mode 100644 index 00000000..b976dcdd --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Ctor.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Ctor.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.Runtime.InteropServices; + +namespace StgSharp.Math +{ + public unsafe delegate float ScalarCalcHandler( float* x ); + + public static unsafe partial class Scaler + { + + private const uint MEM_COMMIT = 0x1000; + private const uint MEM_RELEASE = 0x8000; + private const uint MEM_RESERVE = 0x2000; + private const uint PAGE_EXECUTE_READWRITE = 0x40; + + static Scaler() { } + + [DllImport( "Kernel32.dll", EntryPoint = "VirtualAlloc" )] + private static extern IntPtr VirtualAlloc( + IntPtr address, + int size, + uint allocType, + uint protect ); + + [DllImport( "Kernel32.dll", EntryPoint = "VirtualFree" )] + private static extern bool VirtualFree( + IntPtr address, + int size, + uint freeType ); + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Exp.cs b/内核源代码/StgSharp.Common/Math/Scalar/Exp.cs new file mode 100644 index 00000000..4df46ac0 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Exp.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Exp.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + public const float E = 2.718281828f; + + /// + /// Get the value of E ^ x; + /// + /// + /// + public static unsafe float Exp( float x ) + { + if( x == 1 ) { + return E; + } + if( x == 0 ) { + return 1; + } + + bool sign = false; + if( x < 0 ) { + sign = true; + x = -x; + } + + float z = x, t; + if( x < 0.5f ) { + t = 1.0f + ( x * ( 1.0f + ( x * ( 0.5f + ( x * ( 0.1666666667f + ( x * ( 0.0416666666667f + ( x * 8.333333333e-3f ) ) ) ) ) ) ) ) ); + } else { + /* + * define z = n * 2 ^ m + * n is between 0 and 0.5 + */ + uint zBit = *( uint* )&z; + uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; + uint uintm = zBitAbs >> 23; + int m = ( *( int* )&uintm ) - 126; + + + uint nBit = ( zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111 ) + 0b_0011_1111_0000_0000_0000_0000_0000_0000; + float n = ( *( float* )&nBit ) - 1; + + t = 2.718281828f + ( n * ( 2.718281828f + ( n * ( 1.359140914f + ( n * ( 0.4530469714f + ( n * ( 0.1132617429f + ( n * 0.02265234857f ) ) ) ) ) ) ) ) ); + + for( int i = 0; i < m; i++ ) { + t = t * t; + } + } + + if( sign ) { + t = 1 / t; + } + return t; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Function.cs b/内核源代码/StgSharp.Common/Math/Scalar/Function.cs new file mode 100644 index 00000000..df600556 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Function.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Function.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public class Function { } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Log.cs b/内核源代码/StgSharp.Common/Math/Scalar/Log.cs new file mode 100644 index 00000000..9003770d --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Log.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Log.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; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + private static readonly float[] logArray = { + 0f, 0.00995033085316809f, 0.0198026272961797f, 0.0295588022415444f, 0.0392207131532813f, 0.048790164169432f, 0.0582689081239758f, 0.0676586484738149f, 0.0769610411361284f, 0.0861776962410524f, 0.0953101798043249f, 0.104360015324243f, 0.113328685307003f, 0.122217632724249f, 0.131028262406404f, 0.139761942375159f, 0.148420005118273f, 0.157003748809665f, 0.165514438477573f, 0.173953307123438f, 0.182321556793955f, 0.19062035960865f, 0.198850858745165f, 0.207014169384326f, 0.215111379616945f, 0.22314355131421f, 0.231111720963387f, 0.2390169004705f, 0.246860077931526f, 0.254642218373581f, 0.262364264467491f, 0.27002713721306f, 0.27763173659828f, 0.285178942233662f, 0.29266961396282f, 0.300104592450338f, 0.307484699747961f, 0.314810739840034f, 0.322083499169113f, 0.3293037471426f, 0.336472236621213f, 0.343589704390077f, 0.350656871613169f, 0.357674444271816f, 0.364643113587909f, 0.371563556432483f, 0.378436435720245f, 0.385262400790645f, 0.392042087776024f, 0.398776119957368f, 0.405465108108164f, 0.412109650826833f, 0.418710334858185f, 0.425267735404344f, 0.431782416425538f, 0.438254930931155f, 0.444685821261446f, 0.451075619360217f, 0.457424847038875f, 0.46373401623214f, 0.470003629245736f, 0.476234178996372f, 0.482426149244293f, 0.488580014818671f, 0.494696241836107f, 0.500775287912489f, 0.506817602368452f, 0.512823626428664f, 0.518793793415168f, 0.524728528934982f, 0.53062825106217f, 0.536493370514568f, 0.542324290825362f, 0.548121408509688f, 0.553885113226438f, 0.559615787935423f, 0.56531380905006f, 0.570979546585738f, 0.576613364303994f, 0.582215619852664f, 0.587786664902119f, 0.593326845277734f, 0.598836501088704f, 0.60431596685333f, 0.609765571620894f, 0.615185639090233f, 0.62057648772511f, 0.625938430866495f, 0.631271776841858f, 0.636576829071551f, 0.641853886172395f, 0.647103242058538f, 0.65232518603969f, 0.657520002916794f, 0.662687973075237f, 0.667829372575655f, 0.672944473242426f, 0.678033542749897f, 0.683096844706444f, 0.688134638736401f, + }; + + /// + /// + /// + /// + /// + /// Returns the value of ln(x). + /// + public static unsafe float Log( float x ) + { + if( x < 0 ) { + throw new ArgumentOutOfRangeException(); + } + uint input = *( uint* )&x; + + int f = ( int )input; + f >>= 23; + f -= 127; + input <<= 9; + input >>= 9; + input += 0b_0011_1111_1000_0000_0000_0000_0000_0000; + float result = *( float* )&input; + uint order = ( ( uint )( result * 100 ) ) - 100; + + float cache = ( result / ( 1f + ( 0.01f * order ) ) ) - 1; + result = ( cache * ( -0.25f ) ) + 0.3333333333333f; + result = ( result * cache ) - 0.5f; + result = ( result * cache ) + 1.0f; + result *= cache; + + return + ( f * 0.6931471806f ) + result + logArray[ order ]; + } + + public static float Log( float x, float y ) + { + return Log( x ) / Log( y ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Pow.cs b/内核源代码/StgSharp.Common/Math/Scalar/Pow.cs new file mode 100644 index 00000000..87091efa --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Pow.cs @@ -0,0 +1,101 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Pow.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + /// + /// calculate the value of x^y + /// + /// + /// + /// Returns the value of x^y + public static unsafe float Pow( float x, float y ) + { + /* + * x^y = E ^ ( log( x ) * y ) + * Now define z = | log(x) * y | = m * n + * and m is an integer, and 0.5 < |n| < 1 + * then E ^ z = ( E ^ n ) ^ m + * + * + * As a float number can be expressed in (1+e)*(2^f) + * n = (1+e)/2 + * m = 2 ^ (f + 1) + * + */ + float z, t; + if( ( x == 1 ) || ( y == 0 ) ) { + return 1; + } + if( ( x == 1 ) && ( y == 0 ) ) { + return float.PositiveInfinity; + } + if( ( x == 0 ) && ( y != 0 ) ) { + return 0; + } + + z = Scaler.Log( x ) * y; + + bool sign = false; + if( z < 0 ) { + sign = true; + z = -z; + } + + if( z < 0.5f ) { + t = 1.0f + ( z * ( 1.0f + ( z * ( 0.5f + ( z * ( 0.1666666667f + ( z * ( 0.0416666666667f + ( z * 8.333333333e-3f ) ) ) ) ) ) ) ) ); + } else { + uint zBit = *( uint* )&z; + uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; + uint uintm = zBitAbs >> 23; + int m = ( *( int* )&uintm ) - 126; + + + uint nBit = ( zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111 ) + 0b_0011_1111_0000_0000_0000_0000_0000_0000; + float n = ( *( float* )&nBit ) - 1; + + t = 2.718281828f + ( n * ( 2.718281828f + ( n * ( 1.359140914f + ( n * ( 0.4530469714f + ( n * ( 0.1132617429f + ( n * 0.02265234857f ) ) ) ) ) ) ) ) ); + + for( int i = 0; i < m; i++ ) { + t = t * t; + } + } + if( sign ) { + t = 1 / t; + } + + return t; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Random.cs b/内核源代码/StgSharp.Common/Math/Scalar/Random.cs new file mode 100644 index 00000000..ffc90a97 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Random.cs @@ -0,0 +1,129 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Random.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.Data; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + private static byte[] randomSeed; + + internal static float currentSeed +#if DEBUG + = 0.5f; + + #else + = Abs(System.DateTime.UtcNow.GetHashCode()); + #endif + + /// + /// returns a random float number between 0 and 1. + /// + /// + public static unsafe float LowProceisionRandom() + { + float seed = currentSeed; + + float sample = Scaler.Pow( Scaler.SeedSqrt( seed ), 2 ); + float sample2 = ( sample - seed ) / seed; + sample2 = Scaler.Abs( sample2 ); + + if( sample == 1 ) { + sample = sample2; + } + + currentSeed = sample; + sample2 *= 1000000; + + float result = sample2 - ( ( int )sample2 ); + if( result == 0 ) { + currentSeed = sample2 + 0.1f; + result = Scaler.LowProceisionRandom(); + } + return result; + } + + /// + /// + /// + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static T Random() where T: struct, IConvertible + #if NET8_0_OR_GREATER + ,INumber + #endif + + { + if( randomSeed == null ) { + randomSeed = new byte[64]; + string originSeed = + ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(StgSharp))!) : + Assembly.GetEntryAssembly())}" ) + ( $"{DateTime.UtcNow.ToString("o")}" ); + using( SHA256 sha = SHA256.Create() ) { + randomSeed = sha.ComputeHash( + Encoding.UTF8.GetBytes( originSeed ) ); + } + } + using( SHA256 sha = SHA256.Create() ) { + randomSeed = sha.ComputeHash( randomSeed ); + } + fixed( byte* bptr = randomSeed ) { + return *( T* )bptr; + } + } + + /// + /// Generates a random seed in int value. + /// + /// + public static unsafe int RandomSeed() + { + float seedValue1 = LowProceisionRandom(); + float seedValue2 = LowProceisionRandom(); + uint seedValueBits = *( uint* )&seedValue1; + + float seedValue = seedValueBits * seedValue2; + + return *( int* )&seedValue; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/SignOf.cs b/内核源代码/StgSharp.Common/Math/Scalar/SignOf.cs new file mode 100644 index 00000000..e88ec88a --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/SignOf.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SignOf.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.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int SignOf( float x ) + { + if( x == 0 ) { + return 0; + } + if( x > 0 ) { + return 1; + } + return -1; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int SignOf( int x ) + { + if( x == 0 ) { + return 0; + } + if( x > 0 ) { + return 1; + } + return -1; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Sin.cs b/内核源代码/StgSharp.Common/Math/Scalar/Sin.cs new file mode 100644 index 00000000..8b79166d --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Sin.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Sin.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.Net.NetworkInformation; +using System.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public const float Pi = 3.1415926f; + + private static readonly float[] cosData = { + 1f, 0.987688341014302f, 0.951056517951169f, 0.891006527837756f, 0.809017000674805f, 0.707106790659974f, 0.587785265298989f, 0.453990516451646f, 0.309017014761716f, 0.156434488858737f, 2.67948965850537E-08f, -0.156434435928723f, -0.309016963794794f, -0.453990468702791f, -0.587785221943935f, -0.707106752766267f, -0.809016969175515f, -0.891006503508499f, -0.951056501391011f, -0.98768833263101f, -0.999999999999999f, -0.987688349397591f, -0.951056534511324f, -0.891006552167012f, -0.809017032174094f, -0.707106828553679f, -0.587785308654041f, -0.4539905642005f, -0.309017065728638f, -0.156434541788751f, -8.03846893110719E-08f, 0.156434382998709f, 0.309016912827872f, 0.453990420953934f, 0.58778517858888f, 0.707106714872559f, 0.809016937676222f, 0.891006479179238f, 0.951056484830851f, 0.987688324247716f, + }; + + private static readonly float[] sinData = { + 0f, 0.15643446239373f, 0.309016989278255f, 0.453990492577218f, 0.587785243621462f, 0.707106771713121f, 0.80901698492516f, 0.891006515673128f, 0.951056509671091f, 0.987688336822657f, 1f, 0.987688345205947f, 0.951056526231247f, 0.891006540002384f, 0.80901701642445f, 0.707106809606826f, 0.587785286976515f, 0.453990540326073f, 0.309017040245177f, 0.156434515323744f, 5.35897931701074E-08f, -0.156434409463716f, -0.309016938311333f, -0.453990444828362f, -0.587785200266408f, -0.707106733819413f, -0.809016953425868f, -0.891006491343869f, -0.951056493110931f, -0.987688328439363f, -0.999999999999997f, -0.987688353589235f, -0.951056542791401f, -0.891006564331638f, -0.809017047923737f, -0.70710684750053f, -0.587785330331566f, -0.453990588074927f, -0.309017091212098f, -0.156434568253757f, + }; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float Sin( float x ) + { + /* + float refer = x / 360.0f; + refer -= (int)refer; + + refer *= 40; + int a = (int)refer; //大分度,查表 + refer -= a; //小分度,拟合 + + float refer2 = refer * refer; + + + return (sinData[a] * ((1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2))) + + (cosData[a] * ((0.1570796327f * refer) - (6.459640975e-4f * refer * refer2))); + */ + return MathF.Sin( x ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Sqrt.cs b/内核源代码/StgSharp.Common/Math/Scalar/Sqrt.cs new file mode 100644 index 00000000..056a6a51 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Sqrt.cs @@ -0,0 +1,109 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Sqrt.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public static unsafe float SeedSqrt( float x ) + { + /* + * 本方法采用分别对指数和小数处理的方法计算平方根 + * 将指数除以2即可获得结果的指数 + * (补充:指数最低位被加到小数位中以抵消一个多余的2 ^ 1的影响) + * 小数部分则统一乘以2 ^ 16后由y = Sqrt(x)在1.5 * 2 ^ 16处的切线近似 + * 为简化操作,提高计算速度,切线左界被移动到远点 + * 在进一步简化操作后,计算精度达到0.5%,速度约为.Net库函数的3倍 + */ + + if( x < 0 ) { + throw new ArgumentOutOfRangeException( + "Input is smaller than zero!" ); + } + if( x == 0 ) { + return 0; + } + /* + * 提取指数位并减半 + * 由于平方根仅对正数有效 + * 故不考虑正负号 + */ + + if( x < 0 ) { + throw new ArgumentOutOfRangeException(); + } + if( x <= 1e-12 ) { + return 0; + } + + //提取指数位并减去指数位中的127 + //由于平方根仅对正数有效 + //故不考虑正负号 + uint a = *( uint* )&x; + uint f = a; + f >>= 23; + f /= 2; + f += 64; + + //提取小数位 + //由于平方根仅对正数有效 + //故不考虑正负号 + + a -= 0b_0011_1111_0000_0000_0000_0000_0000_0000; + uint e = a << 8; + e >>= 8; + + //线性近似 + e *= 0b_1101_0001; + e >>= 24; + e += 0b_0000_0000_0001_0000_1010_1000_1110_0010; + + //还原指数 + f <<= 23; + e += f; + + float result = *( float* )&e; + result = ( result + ( x / result ) ) / 2; + return ( result + ( x / result ) ) / 2; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sqrt( float x ) + { + return MathF.Sqrt( x ); + /**/ + } + + } +} diff --git a/内核源代码/StgSharp.Common/Math/Scalar/Tan.cs b/内核源代码/StgSharp.Common/Math/Scalar/Tan.cs new file mode 100644 index 00000000..580fd019 --- /dev/null +++ b/内核源代码/StgSharp.Common/Math/Scalar/Tan.cs @@ -0,0 +1,55 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Tan.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public static float Tan( float x ) + { + float refer = x / 360.0f; + refer -= ( int )refer; + + refer *= 40; + int a = ( int )refer; //大分度,查表 + refer -= a; //小分度,拟合 + + float refer2 = refer * refer; + + float sin = ( 0.1570796327f * refer ) - ( 6.459640975e-4f * refer * refer2 ); + float cos = ( 1 - ( 0.0123370055f * refer2 ) ) + ( 2.536695709e-5f * refer2 * refer2 ); + + return ( ( sinData[ a ] * cos ) + ( cosData[ a ] * sin ) ) / ( ( cosData[ + a ] * cos ) - ( sinData[ a ] * sin ) ); + } + + } +} diff --git a/内核源代码/StgSharp.Common/Stg/Bullet.cs b/内核源代码/StgSharp.Common/Stg/Bullet.cs new file mode 100644 index 00000000..1f31f3c5 --- /dev/null +++ b/内核源代码/StgSharp.Common/Stg/Bullet.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Bullet.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.Math; + +using System; + +namespace StgSharp.Gaming +{ + public abstract class Bullet : IInstancing, IPlainEntity + { + + protected Bullet( + PlainInstancingBuffer buffer, + GeometryMotion movement, + Vec2 beginPosition, + float angle, + float scale ) + { + if( buffer == null ) { + throw new ArgumentNullException( nameof( buffer ) ); + } + GlobalBuffer = buffer; + BufferId = buffer.CreateInstanceID(); + ( ( IInstancing )this ).Scale = scale; + ( ( IInstancing )this ).Coord = new Vec3( beginPosition, 0 ); + ( ( IInstancing )this ).Rotation = angle; + Motion = movement; + } + + public GeometryMotion Motion + { + get; + set; + } + + public IInstancingBuffer GlobalBuffer + { + get; + set; + } + + public int BufferId + { + get; + set; + } + + public Vec2 CenterPosition + { + get; + set; + } + + public bool CollideWith( IPlainEntity entity ) + { + throw new System.NotImplementedException(); + } + + Vec3 IInstancing.CenterPositionGlobal + { + get; + set; + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/Stg/CollisionTexture.cs b/内核源代码/StgSharp.Common/Stg/CollisionTexture.cs new file mode 100644 index 00000000..63f67677 --- /dev/null +++ b/内核源代码/StgSharp.Common/Stg/CollisionTexture.cs @@ -0,0 +1,193 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CollisionTexture.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.Internal; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; + +using StgSharp.Math; +using StgSharp.MVVM; + +using System; +using System.Buffers; +using System.Collections.Generic; +using System.Linq; +using System.Resources; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Stg +{ + public interface IOneDimensionalCollisionTexture2D + { + + public void Init( Radius angleStride, string name ); + + } + + public sealed class OneDimensionalCollisionTexture2D_GL : glRender, IOneDimensionalCollisionTexture2D + { + + private float[] textureOutput; + private ElementBuffer ebo; + private FrameBuffer fbo; + private RenderBuffer rbo; + + private ShaderProgram generatingShader; + + private TextureGL t; + + private VertexArray vao; + private VertexBuffer vbo; + + public OneDimensionalCollisionTexture2D_GL() { } + + public override bool IsContextSharable => false; + + public void GenerateCollisionTexture( + IEnumerable bufferEnumeration ) + { + fbo.Bind( 0 ); + GL.ClearColor( 0, 0, 0, 1 ); + GL.Clear( MaskBufferBit.DEPTH | MaskBufferBit.COLOR ); + generatingShader.Use(); + vao.Bind( 0 ); + + foreach( IInstancingBuffer item in bufferEnumeration ) { + IGeometry g = item.TypicalShape; + + if( !( g is PlainGeometry ) ) { + throw new InvalidOperationException( + "The current particle buffer contains non-planar geometry," ); + } + + ebo.Bind( 0 ); + ebo.SetValue( 0, g.VertexIndices, BufferUsage.StreamDraw ); + + 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 ); + vao.SetVertexAttribute( + 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); + + vbo.WriteVectorData( 1, g.VertexStream, + BufferUsage.StreamDraw ); + vao.SetVertexAttribute( + 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + GL.DrawElementsInstanced( + GeometryType.TRIANGLES, + ( ( uint )g.VertexIndices.Length ) / 3, TypeCode.UInt32, + IntPtr.Zero, ( uint )item.ScalingSpan.Length ); + } + + t.Bind2D( 0 ); + GL.GetTextureImage( + Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, + PixelChannelLayout.Float, textureOutput ); + VertexArray.BindNull(); + } + + public void Init( Radius angleStride, string name ) + { + primeArgs = new ViewPort( + 1, (int)(( new Radius( Scaler.Pi ) ) / angleStride), name, + IntPtr.Zero ); + + PlatformSpecifiedInitialize(); + CustomizeInit(); + } + + #pragma warning disable CS8618 + + protected override void CustomizeDeinit() + { + throw new NotImplementedException(); + } + + protected override void CustomizeInit() + { + generatingShader = CreateShaderProgram(); + + Shader vertexShader = CreateShaderSegment( ShaderType.Vertex, 1 ); + Shader fragmentShader = CreateShaderSegment( + ShaderType.Fragment, 1 ); + + vertexShader.Compile( 0, InternalIO.CollisionTextureVertexShader ); + fragmentShader.Compile( + 0, InternalIO.CollisionTextureFragmentShader ); + vertexShader.AttachTo( 0, generatingShader ); + fragmentShader.AttachTo( 0, generatingShader ); + + generatingShader.Link(); + generatingShader.Use(); + + vbo = CreateVertexBuffer( 3 ); + vao = CreateVertexArray( 1 ); + ebo = CreateElementBuffer( 1 ); + + + fbo = CreateFrameBuffer( 1 ); + rbo = CreateRenderBuffer( 1 ); + GL.SetRenderBufferStorage( + RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + + + t = CreateTexture( 1 ); + t.Bind2D( 0 ); + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, Array.Empty() ); + + t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); + t.Set2dFilterProperty( + 0, TextureFilter.Nearest, TextureFilter.Nearest ); + + GL.FrameBufferTexture2d( + FrameBufferTarget.All, glAttachment.Color( 0 ), + Texture2DTarget.Texture2D, t[ 0 ], 0 ); + + GL.CombineFrameBufferRenderBuffer( + FrameBufferAttachment.Color, rbo[ 0 ] ); + + textureOutput = new float[this.Width]; + } + + } +} diff --git a/内核源代码/StgSharp.Common/Stg/TimeLine.cs b/内核源代码/StgSharp.Common/Stg/TimeLine.cs new file mode 100644 index 00000000..1d05b480 --- /dev/null +++ b/内核源代码/StgSharp.Common/Stg/TimeLine.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeLine.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.Stg +{ + public class TimeLine { } +} diff --git a/内核源代码/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs b/内核源代码/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs new file mode 100644 index 00000000..e720313a --- /dev/null +++ b/内核源代码/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TouhouBuilder.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.Touhou; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Stg.Touhou +{ + public static class TouhouBuilder + { + /* + public static ViewBase BuildTouhouWorld() + { + + TouhouForm form = new TouhouForm(); + + + return form; + } + /**/ + + } +} diff --git a/内核源代码/StgSharp.Common/Stg/Touhou/TouhouWindow.cs b/内核源代码/StgSharp.Common/Stg/Touhou/TouhouWindow.cs new file mode 100644 index 00000000..0613d45c --- /dev/null +++ b/内核源代码/StgSharp.Common/Stg/Touhou/TouhouWindow.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TouhouWindow.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.MVVM; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Touhou +{ + public abstract class TouhouWindowMain : ViewModelBase + { + + protected TouhouWindowMain( ViewPort vp ) : base( vp, 60 ) { } + + } +} diff --git a/内核源代码/StgSharp.Common/Stg/Touhou/View/OpenningView.cs b/内核源代码/StgSharp.Common/Stg/Touhou/View/OpenningView.cs new file mode 100644 index 00000000..f426bbc1 --- /dev/null +++ b/内核源代码/StgSharp.Common/Stg/Touhou/View/OpenningView.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="OpenningView.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.MVVM.View; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Stg.Touhou +{ + public abstract class OpenningView : ViewBase + { + + public override void CustomizedInitialize( + ViewModelBase viewModelBinding ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/内核源代码/StgSharp.Common/StgSharp.Common.csproj b/内核源代码/StgSharp.Common/StgSharp.Common.csproj new file mode 100644 index 00000000..c8a280e3 --- /dev/null +++ b/内核源代码/StgSharp.Common/StgSharp.Common.csproj @@ -0,0 +1,120 @@ + + + + netstandard2.1 + True + Preview + True + True + AnyCPU;x64 + False + True + MIT + True + preview-all + Library + enable + Debug;Release; + + + + True + + + + False + portable + 1701;1702;0649;1591;0169 + False + + + + True + embedded + 1701;1702;0649;1591;0169 + False + + + + portable + False + 1701;1702;0649;1591;0169 + False + + + + none + 1701;1702;0649;1591;0169 + False + True + + + + none + 1701;1702;0649;1591;0169 + False + True + + + + true + true + true + + + + WINDOWS + + + OSX + + + LINUX + + + + + + + + + + + + + + + Always + + + + + + + + + + + + + $(ColiisionTextureVertexShader) + $(ColiisionTextureFragmentShader) + False + send + https://github.com/Nitload-NSI/StgSharp + https://github.com/Nitload-NSI/StgSharp.git + + + + False + + + + False + + + + + + + diff --git a/内核源代码/StgSharp.Common/bin/x64/Debug/netstandard2.1/StgSharp.Common.deps.json b/内核源代码/StgSharp.Common/bin/x64/Debug/netstandard2.1/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/内核源代码/StgSharp.Common/bin/x64/Debug/netstandard2.1/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.deps.json b/内核源代码/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/内核源代码/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Common/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs b/内核源代码/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..4cc796c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.dgspec.json b/内核源代码/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.dgspec.json new file mode 100644 index 00000000..8214b2eb --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.dgspec.json @@ -0,0 +1,79 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/obj/project.assets.json b/内核源代码/StgSharp.Common/obj/project.assets.json new file mode 100644 index 00000000..e487665a --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/project.assets.json @@ -0,0 +1,206 @@ +{ + "version": 3, + "targets": { + ".NETStandard,Version=v2.1": { + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/Microsoft.CSharp.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + ".NETStandard,Version=v2.1": [ + "Microsoft.CSharp >= 4.7.0", + "System.Runtime.CompilerServices.Unsafe >= 6.1.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..4cc796c1 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..fb3f5ebb --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,15 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\netstandard2.1\StgSharp.Common.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\netstandard2.1\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\refint\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\netstandard2.1\ref\StgSharp.Common.dll diff --git a/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.sourcelink.json b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.sourcelink.json new file mode 100644 index 00000000..d30ebc07 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfo.cs b/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..7a90fe90 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..7c89cd87 --- /dev/null +++ b/内核源代码/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\netstandard2.1\StgSharp.Common.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\refint\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\ref\StgSharp.Common.dll diff --git a/内核源代码/StgSharp.Model/STEP/FileStructure/IStepObject.cs b/内核源代码/StgSharp.Model/STEP/FileStructure/IStepObject.cs new file mode 100644 index 00000000..bdf1a443 --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/FileStructure/IStepObject.cs @@ -0,0 +1,21 @@ +using StgSharp.Blueprint; +using StgSharp.Geometries; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Modeling.STEP +{ + public abstract class IStepObject: StepExpressionBase , IGeometry + { + public abstract Point this[int index] { get; set; } + + public abstract Vec4[] VertexStream { get; } + public abstract CoordinationBase Coordination { get; } + public abstract int VertexCount { get; } + public abstract ReadOnlySpan VertexIndices { get; } + + } +} diff --git a/内核源代码/StgSharp.Model/STEP/FileStructure/StepExpression.cs b/内核源代码/StgSharp.Model/STEP/FileStructure/StepExpression.cs new file mode 100644 index 00000000..cd41f880 --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/FileStructure/StepExpression.cs @@ -0,0 +1,135 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepExpression.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 System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Modeling.STEP +{ + public abstract class StepExpressionBase + { + public abstract List ParameterList { get; set; } + + public int ID { get; internal set; } + } + + public abstract class StepExpressionParameter : StepExpressionBase + { + public abstract object Value { get; set; } + } + + public class StepObjectConstructor + { + + private static Regex regex = new Regex( + @"(?.+?(\)|'\s?\)|'))\s?(?,)\s?(?(.|\(|\(\s?').+)", + RegexOptions.Compiled ); + + private readonly int _id; + private readonly List _paramList; + private string _caller; + + public StepObjectConstructor( int id, string caller, string parameters ) + { + _caller = caller; + _paramList = new List(); + SplitParameter( parameters ); + } + + public string this[ int paramIndex ] + { + get => _paramList[ paramIndex ]; + } + + public ReadOnlyCollection ParamList + { + get => _paramList.AsReadOnly(); + } + + public static string TempCallerName + { + get => "TEMPCALLER"; + } + + public string Caller + { + get => _caller; + internal set => _caller = value; + } + + public static StepObjectConstructor CreateTempExpression( int id ) + { + return new StepObjectConstructor( id, "TEMPCALLER", string.Empty ); + } + + private void SplitParameter( string parameters ) + { + if( string.IsNullOrEmpty( parameters ) || string.IsNullOrWhiteSpace( + parameters ) ) { + return; + } + Match match = regex.Match( parameters ); + while( match.Success ) { + _paramList.Add( match.Groups[ "param1" ].Value ); + parameters = match.Groups[ "other" ].Value; + match = regex.Match( parameters ); + } + _paramList.Add( parameters ); + } + + } + + public record class StepCodeLine + { + public StepCodeLine( int id, string codeLine ) + { + ID = id; + CodeLine = codeLine; + } + + public int ID + { + get; + set; + } + + public string CodeLine + { + get; + set; + } + } +} diff --git a/内核源代码/StgSharp.Model/STEP/FileStructure/StepHeader.cs b/内核源代码/StgSharp.Model/STEP/FileStructure/StepHeader.cs new file mode 100644 index 00000000..58720acf --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/FileStructure/StepHeader.cs @@ -0,0 +1,227 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="STEPHeader.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.Modeling.STEP +{ + /// + /// C# implementation of HEADER part in STEP file. + /// + public struct StepInfo + { + + private STEPFileDescriptor _header; + private STEPFileName _name; + private STEPSchema _schema; + + public (int mainLevel, int? subLevel) Level + { + get => _header.Level; + internal set => _header.Level = value; + } + + public DateTime TimeStamp + { + get => _name.TimeStamp; + internal set => _name.TimeStamp = value; + } + + public STEPFileDescriptor Descriptor + { + get => _header; + internal set => _header = value; + } + + public STEPFileName FileName + { + get => _name; + internal set => _name = value; + } + + public STEPSchema Schema + { + get => _schema; + internal set => _schema = value; + } + + public string Description + { + get => _header.Description; + internal set => _header.Description = value; + } + + public string Name + { + get => _name.Name; + internal set => _name.Name = value; + } + + public string Author + { + get => _name.Author; + internal set => _name.Author = value; + } + + public string Organization + { + get => _name.Organization; + internal set => _name.Organization = value; + } + + public string OriginatingSystem + { + get => _name.OriginatingSystem; + internal set => _name.OriginatingSystem = value; + } + + public string Authorization + { + get => _name.Authorization; + internal set => _name.Authorization = value; + } + + public string PreprocessorVersion + { + get => _name.PreprocessorVersion; + internal set => _name.PreprocessorVersion = value; + } + + public string Version + { + get => _name.Version; + internal set => _name.Version = value; + } + + public string SchemaString + { + get => _schema.Data; + internal set => _schema.Data = value; + } + + } + + /// + /// C# implementation of FILE_NAME part in header of STEP file. + /// + public struct STEPFileName + { + + public DateTime TimeStamp + { + get; + internal set; + } + + public string Name + { + get; + internal set; + } + + public string Author + { + get; + internal set; + } + + public string Description + { + get; + internal set; + } + + public string PreprocessorVersion + { + get; + internal set; + } + + public string Version + { + get; + internal set; + } + + public string Organization + { + get; + internal set; + } + + public string OriginatingSystem + { + get; + internal set; + } + + public string Authorization + { + get; + internal set; + } + + } + + public struct STEPSchema + { + + private List _schema; + + public string Data + { + get; + internal set; + } + + } + + /// + /// C# implementation of FILE_NAME part in header of STEP file. + /// + public struct STEPFileDescriptor + { + + public (int mainLevel,int? subLevel) Level + { + get; + internal set; + } + + public string Description + { + get; + internal set; + } + + } +} diff --git a/内核源代码/StgSharp.Model/STEP/FileStructure/StepModel.cs b/内核源代码/StgSharp.Model/STEP/FileStructure/StepModel.cs new file mode 100644 index 00000000..d7eabc58 --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/FileStructure/StepModel.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="STEP.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.Blueprint; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Modeling.STEP +{ + public class StepModel + { + private Dictionary _node + = new Dictionary( ); + private BlueprintSchedueler _builder; + private StepInfo _header; + + internal StepModel( + StepInfo header, + Dictionary nodeSource) + { + _header = header; + _node = nodeSource; + _builder = new BlueprintSchedueler(); + } + + public void OrganizeNode() + { + foreach (var node in _node) + { + + } + } + + public void BuildGeometry() + { + + } + } +} diff --git a/内核源代码/StgSharp.Model/STEP/Reader/StepDataReader.cs b/内核源代码/StgSharp.Model/STEP/Reader/StepDataReader.cs new file mode 100644 index 00000000..7ed3ad6e --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/Reader/StepDataReader.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepDataReader.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Modeling.STEP +{ + public partial class StepReader + { + private Regex expressionSpilitter = new Regex( + @"^#(?[0-9]+)\s*?=\s*?(?\S.*?)\s*;$", + RegexOptions.Compiled ); + + private ThreadLocal> _codeLineQueue + = new ThreadLocal>(); + + public ConcurrentQueue DataSectionPool + { + get => _codeLineQueue.Value; + } + + public void ReadDataSection() + { + if (_codeLineQueue.Value == null) + { + _codeLineQueue.Value = new ConcurrentQueue(); + } + using (MemoryMappedViewStream ms = _memoryFile.CreateViewStream( + 0, _size, MemoryMappedFileAccess.Read)) + { + using (StreamReader sr = new StreamReader(ms)) + { + long pos = _headStart; + string line; + while (string.IsNullOrEmpty(line = sr.ReadLine())) + { + switch (line) + { + default: + break; + } + Match match = expressionSpilitter.Match(line); + if (match.Success) + { + int id = int.Parse(match.Groups["id"].Value); + string expression = match.Groups["expression"].Value; + StepCodeLine stepExpression = new StepCodeLine(id, expression); + _codeLineQueue.Value.Enqueue(stepExpression); + } + } + } + } + } + } +} diff --git a/内核源代码/StgSharp.Model/STEP/Reader/StepHeadReader.cs b/内核源代码/StgSharp.Model/STEP/Reader/StepHeadReader.cs new file mode 100644 index 00000000..93e836ae --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/Reader/StepHeadReader.cs @@ -0,0 +1,112 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepHeadReader.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.IO; +using System.IO.MemoryMappedFiles; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace StgSharp.Modeling.STEP +{ + public partial class StepReader + { + /**/ + + private static Regex expressionSplitter = new Regex( + @"^(?[A-Z_]+)\s?\((?.+)\)\;", + RegexOptions.Compiled ); + + public StepInfo GetInfo() + { + StepInfo info = new StepInfo(); + List constructorList = new List(); + using( MemoryMappedViewStream ms = _memoryFile.CreateViewStream( + 0, _size, MemoryMappedFileAccess.Read ) ) { + using( StreamReader sr = new StreamReader( ms ) ) { + long pos = _headStart; + ms.Seek( _headStart, SeekOrigin.Begin ); + while( pos <= _headEnd ) { + string token = ReadToken( sr, ref pos ); + if( token == "HEADER;" ) { + continue; + } + + if( token == "ENDSEC;" ) { + break; + } + + GroupCollection match = expressionSplitter.Match( + token ) + .Groups; + constructorList.Add( + new StepObjectConstructor( + 0, match[ "CALLER" ].ToString(), + match[ "PARAM" ].ToString() ) ); + } + foreach( StepObjectConstructor constructor in constructorList ) { + switch( constructor.Caller ) { + case "FILE_DESCRIPTION": + info.Description = StepDataParser.ToString( + constructor[ 0 ] ); + info.Level = StepDataParser.ToVersion( + constructor[ 1 ] ); + break; + case "FILE_NAME": + info.Name = StepDataParser.ToString( + constructor[ 0 ] ); + info.TimeStamp = StepDataParser.ToDateTime( + constructor[ 1 ] ); + info.Author = StepDataParser.ToString( + constructor[ 2 ] ); + info.Organization = StepDataParser.ToString( + constructor[ 3 ] ); + info.PreprocessorVersion = StepDataParser.ToString( + constructor[ 4 ] ); + info.OriginatingSystem = StepDataParser.ToString( + constructor[ 5 ] ); + info.Authorization = StepDataParser.ToString( + constructor[ 6 ] ); + break; + default: + break; + } + } + } + } + return info; + } + /**/ + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Model/STEP/Reader/StepReader.cs b/内核源代码/StgSharp.Model/STEP/Reader/StepReader.cs new file mode 100644 index 00000000..4966d9f1 --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/Reader/StepReader.cs @@ -0,0 +1,158 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepReader.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 System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Modeling.STEP +{ + public partial class StepReader : IDisposable + { + + private const string fileLabel = "ISO-10303-21;"; + + private bool disposedValue; + private FileStream _fileStream; + private long _headStart = -1, _headEnd = -1, _dataStart = -1, _size; + private MemoryMappedFile _memoryFile; + + private StepReader() { } + + private StepReader( FileStream stream, long size ) + { + _fileStream = stream; + _size = size; + _memoryFile = MemoryMappedFile.CreateFromFile( + stream, mapName: null, size, MemoryMappedFileAccess.Read, + HandleInheritability.None, leaveOpen: true ); + } + + // ~StepReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public static bool FromFile( string path, out StepReader reader ) + { + FileInfo info = new FileInfo( path ); + if( !info.Exists ) { + reader = null!; + return false; + } + FileStream stream = new FileStream( + path, FileMode.Open, FileAccess.Read, FileShare.Read, + bufferSize: 4096, useAsync: true ); + byte[] fileHead = new byte[40]; + stream.Read( fileHead, 0, fileLabel.Length ); + if( !Encoding.UTF8.GetString( fileHead ).Contains( fileLabel ) ) { + throw new InvalidDataException( + "The given file is not a STEP file" ); + } + reader = new StepReader( stream, info.Length ); + reader.LocateSection(); + return reader != null; + } + + private void LocateSection() + { + long startPos = 0; + byte[] buffer = new byte[1024]; + Span bufferSpan = buffer, + headerSec = Encoding.UTF8.GetBytes( "HEADER;" ), + endsecSec = Encoding.UTF8.GetBytes( "ENDSEC;" ), + dataSec = Encoding.UTF8.GetBytes( "DATA;" ); + _fileStream.Position = 0; + for( ; startPos < _size; startPos += 1000 ) { + _fileStream.Read( buffer ); + if( _headStart == -1 ) { + long pos = bufferSpan.IndexOf( headerSec ); + if( pos >= 0 ) { + _headStart = startPos + pos; + } + } + if( _headEnd == -1 ) { + long pos = bufferSpan.IndexOf( endsecSec ); + if( pos >= 0 ) { + _headEnd = startPos + pos; + } + } + if( _dataStart == -1 ) { + long pos = bufferSpan.IndexOf( dataSec ); + if( pos >= 0 ) { + _dataStart = startPos + pos; + } + } else { + break; + } + _fileStream.Seek( 1000, SeekOrigin.Current ); + } + } + + private string ReadToken( StreamReader reader, ref long posCache ) + { + StringBuilder token = new StringBuilder( 100 ); + while( token.Length == 0 || token[ token.Length - 1 ] != ';' ) { + string subString = reader.ReadLine(); + if( subString == null ) { + break; + } + token.Append( subString.TrimStart() ); + } + posCache += token.Length; + return token.ToString(); + } + + private protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _fileStream.Dispose(); + _memoryFile.Dispose(); + } + + disposedValue = true; + } + } + + } +} diff --git a/内核源代码/StgSharp.Model/STEP/StepDataParser.cs b/内核源代码/StgSharp.Model/STEP/StepDataParser.cs new file mode 100644 index 00000000..56d73e43 --- /dev/null +++ b/内核源代码/StgSharp.Model/STEP/StepDataParser.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepDataParser.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.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Modeling.STEP +{ + public static class StepDataParser + { + + private static Regex _stringParser = new Regex( + @"(\(\s?'|')\s*(?.+)\s*('\s*\)|')", RegexOptions.Compiled ); + private static Regex _vectorParser = new Regex( + @"^\(\s+(?-?[0-9]+\.[0-9]+),\s+(?-?[0-9]+\.[0-9]+),\s+(?-?[0-9]+\.[0-9]+)\s+\)$", + RegexOptions.Compiled ); + + public static DateTime ToDateTime( string source ) + { + Match match = _stringParser.Match( source ); + if( match.Success ) { + return DateTime.Parse( match.Groups[ "value" ].Value ); + } + throw new InvalidCastException(); + } + + public static string ToString( string source ) + { + Match match = _stringParser.Match( source ); + if( match.Success ) { + return match.Groups[ "value" ].Value; + } + return string.Empty; + } + + public static Vec3 ToVector3D( string source ) + { + Match match = _vectorParser.Match( source ); + if( match.Success ) { + return new Vec3( + float.Parse( match.Groups[ "x" ].Value ), + float.Parse( match.Groups[ "y" ].Value ), + float.Parse( match.Groups[ "z" ].Value ) ); + } + return Vec3.Zero; + } + + public static (int, int?) ToVersion( string source ) + { + Match match = _stringParser.Match( source ); + if( match.Success ) { + string data = match.Groups[ "value" ].Value; + if( data.Contains( ';' ) ) { + string[] subData = data.Split( ';' ); + return (int.Parse( subData[ 0 ] ), int.Parse( subData[ 1 ] )); + } + return (int.Parse( data ), null); + } + return (-1,-1); + } + + } +} diff --git a/内核源代码/StgSharp.Model/StgSharp.Model.csproj b/内核源代码/StgSharp.Model/StgSharp.Model.csproj new file mode 100644 index 00000000..b2a6ee21 --- /dev/null +++ b/内核源代码/StgSharp.Model/StgSharp.Model.csproj @@ -0,0 +1,15 @@ + + + + netstandard2.1 + enable + preview + AnyCPU;x64 + + + + + + + + diff --git a/内核源代码/StgSharp.Model/bin/x64/Debug/netstandard2.1/StgSharp.Model.deps.json b/内核源代码/StgSharp.Model/bin/x64/Debug/netstandard2.1/StgSharp.Model.deps.json new file mode 100644 index 00000000..ed8b9a55 --- /dev/null +++ b/内核源代码/StgSharp.Model/bin/x64/Debug/netstandard2.1/StgSharp.Model.deps.json @@ -0,0 +1,110 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Model/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "runtime": { + "StgSharp.Model.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + }, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.Model/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..832b21a6 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/内核源代码/StgSharp.Model/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Model/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/内核源代码/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..55060e53 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.dgspec.json b/内核源代码/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.dgspec.json new file mode 100644 index 00000000..f751b3f0 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.dgspec.json @@ -0,0 +1,218 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Model/obj/project.assets.json b/内核源代码/StgSharp.Model/obj/project.assets.json new file mode 100644 index 00000000..e10ee66e --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/project.assets.json @@ -0,0 +1,283 @@ +{ + "version": 3, + "targets": { + ".NETStandard,Version=v2.1": { + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/Microsoft.CSharp.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + } + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.1", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "bin/placeholder/StgSharp.Common.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Common.dll": {} + } + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.1", + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Script.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Script.dll": {} + } + } + } + }, + "libraries": { + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "path": "../StgSharp.Script/StgSharp.Script.csproj", + "msbuildProject": "../StgSharp.Script/StgSharp.Script.csproj" + } + }, + "projectFileDependencyGroups": { + ".NETStandard,Version=v2.1": [ + "StgSharp.Common >= 1.0.0", + "StgSharp.Script >= 1.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..832b21a6 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..46271d4c --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt @@ -0,0 +1,17 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Model.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\netstandard2.1\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.BC99943D.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\netstandard2.1\StgSharp.Model.pdb diff --git a/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.sourcelink.json b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.sourcelink.json new file mode 100644 index 00000000..d30ebc07 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.Model/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Model/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/内核源代码/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..55060e53 --- /dev/null +++ b/内核源代码/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Script/AbstractSyntaxTree.cs b/内核源代码/StgSharp.Script/AbstractSyntaxTree.cs new file mode 100644 index 00000000..7831900b --- /dev/null +++ b/内核源代码/StgSharp.Script/AbstractSyntaxTree.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="AbstractSyntaxTree.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.Collections; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script +{ + public class AbstractSyntaxTree where TToken: IExpressionToken + { + + private bool _cacheAvailable; + private HashSet _allToken = new(); + private TToken _root; + + public int Count + { + get + { + if( !_cacheAvailable ) { + MakeCache(); + } + return _allToken.Count; + } + } + + public TToken Root => _root; + + public bool Contains( TToken node ) + { + if( !_cacheAvailable ) { + MakeCache(); + } + return _allToken.Contains( node ); + } + + public void MakeCache() + { + Root.TryGetNextLevel(out var nextLevel); + foreach( TToken node in nextLevel ) { } + } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/BuiltinType.cs b/内核源代码/StgSharp.Script/Express/Builtin/BuiltinType.cs new file mode 100644 index 00000000..da668cb6 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/BuiltinType.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BuiltinType.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.Script.Express +{ + public sealed class ExpBuiltinType : ExpTypeSource + { + + private Type _marshalType; + + internal ExpBuiltinType( string name, Type origin ) + : base( name, null! ) + { + _marshalType = origin; + } + + public override void Analyse() + { + return; + } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/ExpCollection.cs b/内核源代码/StgSharp.Script/Express/Builtin/ExpCollection.cs new file mode 100644 index 00000000..eb602f14 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/ExpCollection.cs @@ -0,0 +1,177 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCollection.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; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Script.Express +{ + public abstract class ExpCollectionBase : IExpElementSource, IEnumerable + { + protected internal string _accurateType; + + protected ExpCollectionBase( + string accurateType ) + { + _accurateType = accurateType; + } + + public string MemberType + { + get => _accurateType; + } + + public abstract int Count { get; } + + public ExpElementType ElementType => ExpElementType.Collection; + + IScriptSourceProvider IExpElementSource.SourceProvider => null!; + + public abstract string Name { get; } + + public void Analyse() + { + return; + } + + public abstract IEnumerator GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + public class ExpArray : ExpCollectionBase + { + + private ExpElementInstanceBase[] _collection; + + public ExpArray( string accurateType ) + : base( accurateType ) { } + + public ExpElementInstanceBase this[ int index ] + { + get { return _collection[ index ]; } + set + { + if( value.TypeName != MemberType ) { + throw new ExpInvalidCollectionMemberTypeException( + value, this ); + } + _collection[ index ] = value; + } + } + + public override int Count => _collection.Length; + + public override string Name => ExpCompile.AddOrGetString("ARRAY"); + + public override IEnumerator GetEnumerator() + { + return ( ( IEnumerable )_collection ) + .GetEnumerator( ); + } + + } + + public class ExpBag : ExpCollectionBase + { + + private ConcurrentBag _collection = new ConcurrentBag( + ); + + public ExpBag( string accurateType ) + : base( accurateType ) { } + + public override int Count => _collection.Count; + + public override string Name => ExpCompile.AddOrGetString("BAG"); + + public override IEnumerator GetEnumerator() + { + return _collection.GetEnumerator(); + } + + } + public sealed class ExpList : ExpCollectionBase + { + public ExpList(string accurateType ):base(accurateType) + { + + } + + private List _collection = new List(); + + public override int Count => _collection.Count; + + public override string Name => ExpCompile.AddOrGetString("LIST"); + + public override IEnumerator GetEnumerator() + { + return _collection.GetEnumerator(); + } + } + + public class ExpSet : ExpCollectionBase + { + + private HashSet _collection = new(); + + public ExpSet( string accurateType ) + : base( accurateType ) { } + + public void Add( ExpElementInstanceBase token ) + { + if( token.TypeName != MemberType ) { + throw new ExpInvalidCollectionMemberTypeException( token, + this ); + } + _collection.Add( token ); + } + + public override int Count => _collection.Count; + + public override string Name => ExpCompile.AddOrGetString("SET"); + + public override sealed IEnumerator GetEnumerator() + { + return ( ( IEnumerable )_collection ) + .GetEnumerator( ); + } + + } + +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/ExpCollectionInstance.cs b/内核源代码/StgSharp.Script/Express/Builtin/ExpCollectionInstance.cs new file mode 100644 index 00000000..6a842c99 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/ExpCollectionInstance.cs @@ -0,0 +1,124 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCollectionInstance.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.Script.Express +{ + public abstract class ExpCollectionInstanceBase : ExpToken + { + + protected internal (int min, int max) _range; + protected internal ExpElementType _memberType; + + protected ExpCollectionInstanceBase( string name, ExpSchema context ) + : base( name, context ) { } + + public abstract ExpCollectionBase CollectionValue + { + get; + } + + public ExpElementType MemberType + { + get => _memberType; + } + + public int MinCapacity => _range.min; + + public int MaxCapacity => _range.max; + + } + + public sealed class ExpSetInstance : ExpCollectionInstanceBase + { + + private ExpSet _collection; + + public ExpSetInstance( string name, ExpSet set, ExpSchema context ) + : base( name, context ) + { + _collection = set; + } + + public override ExpCollectionBase CollectionValue => _collection; + + } + + public sealed class ExpBagInstance : ExpCollectionInstanceBase + { + + private ExpBag _collection; + + public ExpBagInstance( string name, ExpBag bag, ExpSchema context ) + : base( name, context ) + { + _collection = bag; + } + + public override ExpCollectionBase CollectionValue => _collection; + + } + + public sealed class ExpListInstance : ExpCollectionInstanceBase + { + + private ExpList _collection; + + public ExpListInstance( string name, ExpList list, ExpSchema context ) + : base( name, context ) + { + _collection = list; + } + + public override ExpCollectionBase CollectionValue => _collection; + + } + + public sealed class ExpArrayInstance : ExpCollectionInstanceBase + { + + private ExpArray _collection; + + public ExpArrayInstance( + string name, + ExpArray array, + ExpSchema context ) + : base( name, context ) + { + _collection = array; + } + + public override ExpCollectionBase CollectionValue => _collection; + + } +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/ExpIfToken.cs b/内核源代码/StgSharp.Script/Express/Builtin/ExpIfToken.cs new file mode 100644 index 00000000..fe01b1dd --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/ExpIfToken.cs @@ -0,0 +1,52 @@ +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public sealed class ExpIfToken : ExpToken + { + private ExpToken _rule; + private List _trueOp; + private List _falseOp; + + public ExpIfToken(string name, ExpSchema context, ExpToken rule, + IEnumerable operationIfTrue, + IEnumerable operationIfFalse): + base(name,context) + { + _rule = rule; + if (operationIfFalse == null) + { + _trueOp = new List(); + } + else + { + _trueOp = new List(operationIfFalse); + } + if (operationIfFalse == null) + { + _falseOp = new List(); + } + else + { + _falseOp = new List(operationIfFalse); + } + } + + public void AddTrueOperation(ExpToken expressionRoot) + { + AssertSchemaInclude(expressionRoot); + _trueOp.Add(expressionRoot); + } + + public void AddFalseOperation(ExpToken expressionRoot) + { + AssertSchemaInclude(expressionRoot); + _falseOp.Add(expressionRoot); + } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/ExpLiteralToken.cs b/内核源代码/StgSharp.Script/Express/Builtin/ExpLiteralToken.cs new file mode 100644 index 00000000..3b0f7d2f --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/ExpLiteralToken.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpLiteralToken.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; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpLiteralToken : ExpElementInstanceBase + { + + private readonly ExpBuiltinType _type; + private readonly T _value; + + public ExpLiteralToken( string name, ExpSchema context, T value ) + : base( name, context ) + { + _value = value; + switch( value ) { + case float f: + ExpCompile.TryGetBuiltinType( + ExpCompile.KeyWord.Real, out ExpTypeSource? type ); + _type = ( type as ExpBuiltinType )!; + _tokenType = ExpTokenFlag.BuiltinType_Float | ExpTokenFlag.Element_Const; + break; + case int i: + ExpCompile.TryGetBuiltinType( + ExpCompile.KeyWord.Int, out type ); + _type = ( type as ExpBuiltinType )!; + _tokenType = ExpTokenFlag.BuiltinType_Int | ExpTokenFlag.Element_Const; + break; + case BitArray b: + ExpCompile.TryGetBuiltinType( + ExpCompile.KeyWord.Binary, out type ); + _type = ( type as ExpBuiltinType )!; + _tokenType = ExpTokenFlag.BuiltinType_Binary | ExpTokenFlag.Element_Const; + break; + case string s: + ExpCompile.TryGetBuiltinType( + ExpCompile.KeyWord.String, out type ); + _type = ( type as ExpBuiltinType )!; + _tokenType = ExpTokenFlag.BuiltinType_Int | ExpTokenFlag.Element_Const; + break; + case Logic l: + ExpCompile.TryGetBuiltinType( + ExpCompile.KeyWord.Logic, out type ); + _type = ( type as ExpBuiltinType )!; + _tokenType = ExpTokenFlag.BuiltinType_Int | ExpTokenFlag.Element_Const; + break; + default: + throw new ExpInvalidTypeException( + "Builtin Type", value!.GetType().Name ); + } + } + + public T value => _value; + + public override string TypeName => _type.Name; + + public override bool TryGetNextLevel( + out ICollection nextLevel ) + { + nextLevel = null!; + return false; + } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/ExpRepeat.cs b/内核源代码/StgSharp.Script/Express/Builtin/ExpRepeat.cs new file mode 100644 index 00000000..770543e0 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/ExpRepeat.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpRepeat.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.Serialization; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpRepeat : ExpToken + { + + public ExpRepeat( string name, ExpSchema context ) + : base( name, context ) { } + + } + + public class ExpRepeatRule : ExpToken + { + private List _token = new List(); + private ExpElementInstanceBase _variable, _begin, _end, _increment; + + public ExpRepeatRule( + string name, + ExpSchema context, + IEnumerable operation, + ExpElementInstanceBase variable, + ExpElementInstanceBase begin, + ExpElementInstanceBase end, + ExpElementInstanceBase increment ) + : base( name, context ) + { + if( variable.TokenTypeCode != begin.TokenTypeCode || begin.TokenTypeCode != + end.TokenTypeCode || ( increment != null && end.TokenTypeCode != + increment.TokenTypeCode ) ) { + throw new InvalidCastException(); + } + if( increment == null ) { + switch( ( ExpTokenFlag )variable.TokenTypeCode | ExpTokenFlag.BuiltinType_Any ) { + case ExpTokenFlag.BuiltinType_Float: + increment = new ExpLiteralToken( + $"{name}_defaultincrement", context, 1.0f ); + break; + case ExpTokenFlag.BuiltinType_Int: + increment = new ExpLiteralToken( + $"{name}_defaultincrement", context, 1 ); + break; + default: + throw new ExpInvalidTypeException( + "Int or Real", "otherwise" ); + } + } + _begin = begin; + _variable = variable; + _end = end; + _increment = increment; + _tokenType = ExpTokenFlag.Branch_Repeat; + } + + public override bool TryGetNextLevel( + out ICollection nextLevel ) + { + nextLevel = ( _token.ToList() as ICollection )!; + return true; + } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/Builtin/ExpSwitchToken.cs b/内核源代码/StgSharp.Script/Express/Builtin/ExpSwitchToken.cs new file mode 100644 index 00000000..c01e1857 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Builtin/ExpSwitchToken.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpSwitchToken : ExpToken + { + private ExpToken _target; + private List _default; + private Dictionary> _cases; + + public List this[ExpToken index] + { + get + { + if (_cases.TryGetValue(index, out var ret)) + { + return ret; + } + return _default; + } + } + + public ExpSwitchToken(string name, ExpSchema context, + ExpToken target, IEnumerable @default , + params (ExpToken label, IEnumerable op)[] cases + ) : base(name, context) + { + _target = target; + if (@default == null) + { + _default = new List(); + } + else + { + _default = new List(@default); + } + _cases = new Dictionary>(); + foreach (var item in cases) + { + if (item.op == null) + { + _cases.Add(item.label, new List()); + } + else + { + _cases.Add(item.label, new List(item.op)); + } + } + } + + public bool ContainsCase(ExpToken token) + { + return _cases.ContainsKey(token); + } + + /// + /// Adds an expression to certain . + /// The added expression will be run at last. + /// + /// Label of case to add operation + /// Root token of the expression to be added. + /// Cannot fine the case label in current witch expression. + public void AddOperationToCase(ExpToken label, ExpToken expressionRoot) + { + AssertSchemaInclude(expressionRoot); + if (_cases.TryGetValue(label,out var op)) + { + op.Add(expressionRoot); + } + else + { + throw new ExpCaseNotFoundException(this, label); + } + } + + public void AddOperationToDefault(ExpToken expressionRoot) + { + if (expressionRoot != null) + { + _default.Add(expressionRoot); + } + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/Element/ExpConst.cs b/内核源代码/StgSharp.Script/Express/Element/ExpConst.cs new file mode 100644 index 00000000..f1aa1f12 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Element/ExpConst.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpConst.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; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpConstantCollectionSource : IExpImmutableElement + { + private IScriptSourceProvider _sourceProvider; + private string _name; + private Dictionary _constants; + + public ExpConstantCollectionSource( + string name, + IScriptSourceProvider sourceProvider ) + { + _name = name; + _sourceProvider = sourceProvider; + _constants = new Dictionary( + ExpCompile.Multiplexer); + } + + internal void AddConstant(string name, ExpElementInstanceBase value) + { + _constants.Add(name, value); + } + + public ExpElementType ElementType => ExpElementType.Const; + + public IScriptSourceProvider SourceProvider => _sourceProvider; + + public static Dictionary BuiltinConst => ExpCompile.BuiltinConst; + + public string Name + { + get => _name; + } + + public virtual void Analyse() + { + throw new NotImplementedException(); + } + + public ExpToken MakeReference(params object[] options) + { + throw new NotImplementedException(); + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/Element/ExpEntity.cs b/内核源代码/StgSharp.Script/Express/Element/ExpEntity.cs new file mode 100644 index 00000000..094712ea --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Element/ExpEntity.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpEntity.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.Script.Express +{ + public class ExpEntity : ExpToken + { + + public ExpEntity( string name ,ExpSchema context): + base(name, context) + { + } + + } + + public class ExpEntitySource : IExpInstantiableElement + { + + private ExpExpressionTree _expressionTree; + private ScriptSourceTransmitter _source; + private string _name; + + public ExpEntitySource( string name, ScriptSourceTransmitter provider ) + { + _name = name; + _source = provider; + } + + public ExpElementType ElementType => ExpElementType.Entity; + + public IScriptSourceProvider SourceProvider => _source; + + public string Name => _name; + + public void Analyse() + { + throw new NotImplementedException(); + } + + public ExpToken CreateInstanceToken() + { + throw new NotImplementedException(); + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/Element/ExpFunction.cs b/内核源代码/StgSharp.Script/Express/Element/ExpFunction.cs new file mode 100644 index 00000000..8dd0461c --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Element/ExpFunction.cs @@ -0,0 +1,83 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpFunction.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.Script.Express +{ + public class ExpFunction : ExpToken + { + private ExpFunctionSource _source; + private readonly ExpToken _return; + private readonly List> _parameterList + = new List>(); + + public ExpFunction(string name, ExpSchema context) : base(name, context) + { } + + public ExpElementType ElementType => ExpElementType.Function; + + public void CallThisFunction( params ExpToken[] parameters ) { } + + } + + public class ExpFunctionSource : IExpImmutableElement + { + + private ScriptSourceTransmitter _transmitter; + private string _name; + + public ExpFunctionSource( + string name, + ScriptSourceTransmitter transmitter ) + { + _name = name; + _transmitter = transmitter; + } + + public ExpElementType ElementType => ExpElementType.Function; + + public IScriptSourceProvider SourceProvider => _transmitter; + + public string Name => _name; + + public void Analyse() + { + throw new NotImplementedException(); + } + + public ExpToken MakeReference(params object[] options) + { + throw new NotImplementedException(); + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/Element/ExpRule.cs b/内核源代码/StgSharp.Script/Express/Element/ExpRule.cs new file mode 100644 index 00000000..0c6399c9 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Element/ExpRule.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpRule.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.Data; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpRule : ExpElementInstanceBase + { + private ExpRuleSource _source; + + public ExpRule(string name, ExpSchema context) : base(name,context) + { + } + + public object? value => throw new NotImplementedException(); + + public override string TypeName => _source.Name; + } + + public class ExpRuleSource : IExpImmutableElement + { + + private ScriptSourceTransmitter _transmitter; + private string _name; + + public ExpRuleSource( string name, ScriptSourceTransmitter transmitter ) + { + _name = name; + _transmitter = transmitter; + } + + public ExpElementType ElementType => ExpElementType.Rule; + + public IScriptSourceProvider SourceProvider => _transmitter; + + public string Name => _name; + + public void Analyse() + { + throw new NotImplementedException(); + } + + public ExpToken MakeReference(params object[] options) + { + throw new NotImplementedException(); + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/Element/ExpType.cs b/内核源代码/StgSharp.Script/Express/Element/ExpType.cs new file mode 100644 index 00000000..cb2c06eb --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Element/ExpType.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpType.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.Script; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Script.Express +{ + public class ExpType : ExpElementInstanceBase + { + public override string TypeName => throw new NotImplementedException(); + + public ExpType(string name, ExpSchema context) : base(name, context) + { + + } + + + } + + public class ExpTypeSource : IExpElementSource + { + + private ScriptSourceTransmitter _transmitter; + private string _name; + + public ExpTypeSource( string name, ScriptSourceTransmitter transmitter ) + { + _name = name; + _transmitter = transmitter; + } + + public ExpElementType ElementType => ExpElementType.Type; + + public IScriptSourceProvider SourceProvider => _transmitter; + + public string Name => _name; + + public virtual void Analyse() + { + throw new NotImplementedException(); + } + + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Script/Express/Exceptions.cs b/内核源代码/StgSharp.Script/Express/Exceptions.cs new file mode 100644 index 00000000..76be6ca6 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/Exceptions.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Exceptions.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.Script.Express +{ + public class ExpCompileNotInitializedException : InvalidOperationException + { + + public ExpCompileNotInitializedException() + : base( + "Attempt to compile an EXPRESS script before the init of compiler." ) { } + + } + + public class ExpInvalidTypeDeclareEndingExceptions : Exception + { + public ExpInvalidTypeDeclareEndingExceptions( + string declaredName, + string endedName ) + : base( + $"The datatype is declared with name {declaredName} " + + $"but ended with {endedName}" ) { } + + } + + public class ExpInvalidElementNameException : Exception + { + + public ExpInvalidElementNameException( + string elementName, + ExpSchema schema ) + : base( + $"Cannot find any element named {elementName} in {schema.Name}" ) { } + + } + + public class ExpInvalidTypeException : InvalidCastException + { + + public ExpInvalidTypeException( string required, string provided ) + : base( + $"Type {required} is required at position, but a {provided} instance is provided." ) { } + + } + + public class ExpInvalidCollectionMemberTypeException : InvalidCastException + { + + public ExpInvalidCollectionMemberTypeException( + ExpElementInstanceBase elementInstance, + ExpCollectionBase collection ) + : base( + $"Attempt to add or remove an element of type: {elementInstance.ElementType} " + $"from a collection collects {collection.MemberType}" ) { } + + } + + public class ExpInvalidSchemaIncludeException : InvalidOperationException + { + + public ExpInvalidSchemaIncludeException( + ExpSchema context, + ExpSchema source ) + : base( + $"Attempted to reference an EXPRESS language expression in the current schema context '{context.Name}', " + $"but this expression comes from another schema '{source.Name}' that has not been included." ) { } + + } + + public class ExpCaseNotFoundException : ArgumentOutOfRangeException + { + + public ExpCaseNotFoundException( ExpSwitchToken token, ExpToken label ) + : base( + $"Attempt to read or write the label {label.Name} not exist in " + $"SWITCH expression {token.Name}" ) { } + + } + + public class ExpTypeNotFoundException : Exception + { + + public ExpTypeNotFoundException( string typeName, ExpSchema context ) + : base( + $"Cannot find the type {typeName} in schema {context.Name} and " + $"its included schemas" ) { } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpCompile.cs b/内核源代码/StgSharp.Script/Express/ExpCompile.cs new file mode 100644 index 00000000..dc9c98c9 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpCompile.cs @@ -0,0 +1,121 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpInit.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 CommunityToolkit.HighPerformance.Buffers; + +using StgSharp.Collections; + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text; + +namespace StgSharp.Script.Express +{ + public static partial class ExpCompile + { + + private static ConcurrentStringHashMultiplexer _multiplexer; + private static Dictionary _builtinConst; + private static Dictionary _builtinType; + private static StringPool _compileStringCache; + + public static Dictionary BuiltinConst => _builtinConst; + + public static string AddOrGetString( string str ) + { + return _compileStringCache.GetOrAdd( str ); + } + + public static void ClearStringCache() + { + _compileStringCache.Reset(); + } + + public static bool TryGetBuiltinType(string typename, out ExpTypeSource typeSource) + { + return _builtinType.TryGetValue( typename, out typeSource ); + } + + public static bool TryGetBuiltinConst(string constName, out ExpConstantCollectionSource source) + { + return _builtinConst.TryGetValue(constName, out source); + } + + internal static ConcurrentStringHashMultiplexer Multiplexer + { + get + { + if (_multiplexer == null) + { + throw new ExpCompileNotInitializedException(); + } + return _multiplexer; + } + } + + public static void InitCompile() + { + _compileStringCache = new StringPool(); + _multiplexer = new ConcurrentStringHashMultiplexer(); + _builtinConst = new Dictionary(_multiplexer){ + { AddOrGetString( "PI" ), new ExpBuiltinConst( + AddOrGetString( "PI" ), MathF.PI ) }, + { AddOrGetString( "E" ), new ExpBuiltinConst( + AddOrGetString( "E" ), MathF.E ) }, + }; + //TODO keep on here + _builtinType = new Dictionary(_multiplexer){ + { AddOrGetString( KeyWord.Int ), new ExpBuiltinType( + AddOrGetString( KeyWord.Int ), typeof( int ) ) }, + { AddOrGetString( KeyWord.Real ), new ExpBuiltinType( + AddOrGetString( KeyWord.Real ), typeof( float ) ) }, + { AddOrGetString( KeyWord.Bool ), new ExpBuiltinType( + AddOrGetString( KeyWord.Bool ), typeof( bool ) ) }, + { AddOrGetString( KeyWord.Binary ), new ExpBuiltinType( + AddOrGetString( KeyWord.Binary ), typeof( bool ) ) }, + { AddOrGetString( KeyWord.String ), new ExpBuiltinType( + AddOrGetString( KeyWord.String ), typeof( string ) ) }, + { AddOrGetString(KeyWord.Logic),new ExpBuiltinType( + AddOrGetString(KeyWord.Logic), typeof(Logic)) } + }; + } + + public static class KeyWord + { + public const string Int = "INTAGER", + Real = "REAL", + Bool = "BOOLEAN", + String = "STRING", + Logic = "LOGIC", + Binary = "BINARY"; + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpElementInstanceBase.cs b/内核源代码/StgSharp.Script/Express/ExpElementInstanceBase.cs new file mode 100644 index 00000000..ab4dd321 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpElementInstanceBase.cs @@ -0,0 +1,106 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpElementInstanceBase.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.IO; +using System.Text; + +namespace StgSharp.Script.Express +{ + [Flags] + public enum ExpElementType : int + { + + Const = 0, + Entity = 1, + Type = 2, + Function = 4, + Section = 8, + Expression = 16, + Rule = 32, + Procedure = 64, + Collection = 128 | Type, + + } + + public abstract class ExpElementInstanceBase : ExpToken + { + + protected ExpElementInstanceBase( string name, ExpSchema context ) + : base( name, context ) { } + + public ExpElementType ElementType + { + get; + } + + public abstract string TypeName + { + get; + } + + } + + public interface IExpElementSource + { + + public ExpElementType ElementType + { + get; + } + + IScriptSourceProvider SourceProvider + { + get; + } + + string Name + { + get; + } + + public void Analyse(); + + } + + public interface IExpInstantiableElement : IExpElementSource + { + + public abstract ExpToken CreateInstanceToken(); + + } + + public interface IExpImmutableElement : IExpElementSource + { + public abstract ExpToken MakeReference(params object[] options); + + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpExpressionTree.cs b/内核源代码/StgSharp.Script/Express/ExpExpressionTree.cs new file mode 100644 index 00000000..e95cc3c0 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpExpressionTree.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpExpressionTree.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.Script.Express +{ + public class ExpExpressionTree : AbstractSyntaxTree + { + public ExpToken RootToken { get; private set; } + + + + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpLogic.cs b/内核源代码/StgSharp.Script/Express/ExpLogic.cs new file mode 100644 index 00000000..9672304d --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpLogic.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public enum Logic + { + Unknown = 0, + False = 1, + True = 2, + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpReader.cs b/内核源代码/StgSharp.Script/Express/ExpReader.cs new file mode 100644 index 00000000..29604314 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpReader.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpReader.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.IO; +using System.IO.MemoryMappedFiles; +using System.Text; +using System.Threading; + +namespace StgSharp.Script.Express +{ + public class ExpFileReader : IDisposable, IScriptSourceProvider + { + + private bool disposedValue; + private FileStream _expFileStream; + private int _location; + private MemoryMappedFile _expMemoryMappedFile; + private MemoryMappedViewStream _expMemoryMappedStream; + + private SemaphoreSlim readLineSemaphore = new SemaphoreSlim( 1, 1 ); + private StreamReader _memoryReader; + + public ExpFileReader( string path ) + { + if( !File.Exists( path ) ) { + throw new FileNotFoundException(); + } + _expFileStream = new FileStream( + path, FileMode.Open, FileAccess.Read ); + _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( + _expFileStream, null, 0, MemoryMappedFileAccess.Read, + HandleInheritability.None, true ); + _expMemoryMappedStream = _expMemoryMappedFile.CreateViewStream( + offset: 0, size: 0, access: MemoryMappedFileAccess.Read ); + _memoryReader = new StreamReader( _expMemoryMappedStream ); + } + + public int Location => _location; + + // ~ExpFileReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public string ReadLine() + { + readLineSemaphore.Wait(); + string line = _memoryReader.ReadLine(); + _location++; + readLineSemaphore.Release(); + return line; + } + + public void ResetToBegin() + { + readLineSemaphore.Wait(); + _expMemoryMappedStream.Seek( 0, SeekOrigin.Begin ); + _location = 0; + readLineSemaphore.Release(); + } + + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _expFileStream.Dispose(); + _expMemoryMappedFile.Dispose(); + _expMemoryMappedStream.Dispose(); + _memoryReader.Dispose(); + } + disposedValue = true; + } + } + + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpSchema.cs b/内核源代码/StgSharp.Script/Express/ExpSchema.cs new file mode 100644 index 00000000..c8f8d0d0 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpSchema.cs @@ -0,0 +1,105 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSchema.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.Collections; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpSchema + { + private readonly ConcurrentStringHashMultiplexer _multiplexer = ExpCompile.Multiplexer; + private Dictionary _constDict; + private Dictionary _entityDict; + private Dictionary _functionDict; + private Dictionary _ruleDict; + private Dictionary _schemaInclude; + private Dictionary _typeDict; + + public ExpSchema() + { + _constDict = new Dictionary(ExpCompile.Multiplexer); + _entityDict = new Dictionary(ExpCompile.Multiplexer); + _functionDict = new Dictionary(ExpCompile.Multiplexer); + _ruleDict = new Dictionary(ExpCompile.Multiplexer); + _schemaInclude = new Dictionary(ExpCompile.Multiplexer); + _typeDict = new Dictionary(ExpCompile.Multiplexer); + } + + public string Name + { + get; + internal set; + } + + public ExpTypeSource GetExpType( string typeName ) + { + if( ExpCompile.TryGetBuiltinType( + typeName, out ExpTypeSource? ret ) ) { + return ret; + } + if( _typeDict.TryGetValue( typeName, out ret ) ) { + return ret; + } + foreach( ExpSchema item in _schemaInclude.Values ) { + if( item._typeDict.TryGetValue( typeName, out ret ) ) { + return ret; + } + } + throw new ExpTypeNotFoundException( typeName, this ); + } + + public bool HasSchemaInclude( ExpSchema schema ) + { + return _schemaInclude.ContainsKey( schema.Name ); + } + + public bool TryGetConst(string name, out ExpElementInstanceBase constInstance) + { + if (ExpCompile.BuiltinConst.TryGetValue(name, out constInstance)) + { + + } + } + + public ExpToken SearchConstDeclare( string typeName ) + { + ExpToken constant; + foreach (var item in ExpCompile.BuiltinConst.Values) + { + + } + throw new KeyNotFoundException(); + } + } +} diff --git a/内核源代码/StgSharp.Script/Express/ExpSchemaSource.cs b/内核源代码/StgSharp.Script/Express/ExpSchemaSource.cs new file mode 100644 index 00000000..ecdd7063 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpSchemaSource.cs @@ -0,0 +1,320 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSchema.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.Collections; +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.Tracing; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Script.Express +{ + public class ExpSchemaSource + { + + private static Regex + _constDefineBegin = new Regex( + @"\s*CONSTANT", RegexOptions.Compiled ), + _constDefineEnd = new Regex( + @"\s*END_CONSTANT;", RegexOptions.Compiled ), + _schemaBegin = new Regex( + @"\s*SCHEMA\s*(?[A-Za-z0-9_]+)\s?;", + RegexOptions.Compiled ), + _schemaEnd = new Regex( + @"END_SCHEMA;\s*--\s*(?[A-Za-z0-9_]+)", + RegexOptions.Compiled ), + _entityDefineBegin = new Regex( + @"\s*ENTITY\s*(?[A-Za-z0-9_]+)\s*", RegexOptions.Compiled ), + _entityDefineEnd = new Regex( + @"\s*END_ENTITY;\s*--\s*(?[A-Za-z0-9_]+)\s*", + RegexOptions.Compiled ), + _typeDefineBegin = new Regex( + @"\s*TYPE\s+(?[A-Za-z0-9_]+)\s*=\s*(?[A-Z]+)", + RegexOptions.Compiled ), + _typeDefineEnd = new Regex( + @"\s*END_TYPE\s*;\s*--\s*(?[a-zA-Z0-9_]+)", + RegexOptions.Compiled ), + _functionDefineBegin = new Regex( + @"\s*FUNCTION\s*\s*(?[a-zA-Z0-9_]+)\s*(?.*)", + RegexOptions.Compiled ), + _functionDefineEnd = new Regex( + @"\s*END_FUNCTION\s*;\s*--\s*(?[a-zA-Z0-9_]+)", + RegexOptions.Compiled ), + _ruleDefineBegin = new Regex( + @"\s*RULE\s*(?[a-zA-Z0-9_]+)\s*FOR\s*\((?[a-zA-Z0-9_]*(\s*\)\s*;)?)", + RegexOptions.Compiled ), + _ruleDefineEnd = new Regex( + @"\s*END_RULE\s*;\s*--\s*(?[A-Za-z0-9_]+)", + RegexOptions.Compiled ); + + private Dictionary _sourceCache = new(); + + private readonly ExpSchema _compileResult = new ExpSchema(); + + private string name; + + public string Name + { + get => _compileResult.Name; + internal set => _compileResult.Name = value; + } + + + + public ExpSchemaSource() { } + + public void ReadSchema( ExpFileReader reader ) + { + string line = reader.ReadLine(); + while( !_schemaBegin.IsMatch( line ) ) { + line = reader.ReadLine(); + } + name = _schemaBegin.Match( line ).Groups[ "namespace" ].Value; + + while( !_schemaEnd.IsMatch( line ) ) { + if( TryReadConst( line, reader, + out IExpElementSource source ) ) { + _sourceCache.Add( source.Name, source ); + } else if( TryReadType( line, reader, out source ) ) { + _sourceCache.Add( source.Name, source ); + } else if( TryReadEntity( line, reader, out source ) ) { + _sourceCache.Add( source.Name, source ); + } else if( TryReadRule( line, reader, out source ) ) { + _sourceCache.Add( source.Name, source ); + } else if( TryReadFunction( line, reader, out source ) ) { + _sourceCache.Add( source.Name, source ); + } + line = reader.ReadLine(); + } + } + + public static bool TryReadSchema( + string firstLine, + ExpFileReader reader, + out ExpSchemaSource source ) + { + if( !_schemaBegin.IsMatch( firstLine ) ) { + source = null!; + return false; + } + ExpSchemaSource _source = new ExpSchemaSource(); + _source.name = _schemaBegin.Match( firstLine ).Groups[ "namespace" ].Value; + + while( !_schemaEnd.IsMatch( firstLine ) ) { + if( _source.TryReadConst( + firstLine, reader, + out IExpElementSource _elementSource ) ) { + _source._sourceCache + .Add( _elementSource.Name, _elementSource ); + } else if( _source.TryReadType( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache + .Add( _elementSource.Name, _elementSource ); + } else if( _source.TryReadEntity( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache + .Add( _elementSource.Name, _elementSource ); + } else if( _source.TryReadRule( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache + .Add( _elementSource.Name, _elementSource ); + } else if( _source.TryReadFunction( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache + .Add( _elementSource.Name, _elementSource ); + } + firstLine = reader.ReadLine(); + } + source = _source; + return true; + } + + private bool TryReadConst( + string firstLine, + ExpFileReader reader, + out IExpElementSource source ) + { + Match match = _constDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_CONSTANT" ); + ExpConstantCollectionSource _source = new ExpConstantCollectionSource( + "Constant", transmitter ); + string line = reader.ReadLine(); + while( !_constDefineEnd.IsMatch( line ) ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + } + transmitter.WriteLine( "END_CONSTANT" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadEntity( + string firstLine, + ExpFileReader reader, + out IExpElementSource source ) + { + Match match = _entityDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_ENTITY" ); + ExpEntitySource _source = new ExpEntitySource( + match.Groups[ "TypeName" ].ToString(), transmitter ); + string line = reader.ReadLine(); + match = _entityDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _entityDefineEnd.Match( line ); + } + string endedName = match.Groups[ "TypeName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_ENTITY" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadFunction( + string firstLine, + ExpFileReader reader, + out IExpElementSource source ) + { + Match match = _functionDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_FUNCTION" ); + ExpFunctionSource _source = new ExpFunctionSource( + match.Groups[ "FunctionName" ].ToString(), transmitter ); + transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); + string line = reader.ReadLine(); + match = _functionDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _functionDefineEnd.Match( line ); + } + string endedName = match.Groups[ "FunctionName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_FUNCTION" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadRule( + string firstLine, + ExpFileReader reader, + out IExpElementSource source ) + { + Match match = _ruleDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_RULE" ); + ExpRuleSource _source = new ExpRuleSource( + match.Groups[ "RuleName" ].ToString(), transmitter ); + string target = match.Groups[ "Target" ].ToString(); + if( !string.IsNullOrEmpty( target ) ) { + transmitter.WriteLine( target ); + } + string line = reader.ReadLine(); + match = _ruleDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _ruleDefineEnd.Match( line ); + } + string endedName = match.Groups[ "RuleName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_RULE" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadType( + string firstLine, + ExpFileReader reader, + out IExpElementSource source ) + { + Match match = _typeDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_ENTITY" ); + ExpTypeSource _source = new ExpTypeSource( + match.Groups[ "TypeName" ].ToString(), transmitter ); + transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); + string line = reader.ReadLine(); + match = _typeDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _typeDefineEnd.Match( line ); + } + string endedName = match.Groups[ "TypeName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_ENTITY" ); + source = _source; + return true; + } + source = null!; + return false; + } + + } + +} diff --git a/内核源代码/StgSharp.Script/Express/ExpToken.cs b/内核源代码/StgSharp.Script/Express/ExpToken.cs new file mode 100644 index 00000000..b6d08ff9 --- /dev/null +++ b/内核源代码/StgSharp.Script/Express/ExpToken.cs @@ -0,0 +1,112 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpToken.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 CommunityToolkit.HighPerformance.Buffers; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + [Flags] + public enum ExpTokenFlag : long + { + None = 0, + Name_Element = 1, + Name_Param = 2, + Name_Block=4, + Name_Keyword=8, + Name_Any = Name_Block | Name_Element | Name_Keyword | Name_Param, + Collection_Set=16, + Collection_Bag=32, + Collection_Array=64, + Collection_List=128, + Collection_Any = Collection_Set | Collection_Bag | Collection_Array | Collection_List, + Element_Const=256, + Element_Entity=512, + Element_type=1024, + Element_Rule=2048, + Element_Function=4096, + Element_Any = Element_Entity | Element_Const | Element_Function | Element_Rule | Element_type, + BuiltinType_Int=8192, + BuiltinType_Float=16384, + BuiltinType_String=32768, + BuiltinType_Boolean=65536, + BuiltinType_Binary=0x2000, + BuiltinType_Logic=0x4000, + BuiltinType_Any = BuiltinType_Int | BuiltinType_Float | BuiltinType_String | BuiltinType_Boolean | BuiltinType_Binary | BuiltinType_Logic, + Branch_If = 0x8000, + Branch_Switch = 0x1_0000, + Branch_Repeat = 0x2_0000, + } + + public abstract class ExpToken : IExpressionToken + { + + protected internal ExpToken _previousToken; + protected internal ExpTokenFlag _tokenType; + protected internal List _nextLevelTokens = new List( + ); + protected internal string _name; + + + protected ExpToken( string name, ExpSchema context ) + { + _name = name; + Context = context; + } + + public virtual bool TryGetNextLevel(out ICollection nextLevel) + { + nextLevel = (_nextLevelTokens as ICollection)!; + return true; + } + + public long TokenTypeCode => ( long )_tokenType; + + public string Name => _name; + + public ExpSchema Context + { + get; + private set; + } + + protected void AssertSchemaInclude(ExpToken expressionRoot) + { + if (expressionRoot.Context != Context && + Context.HasSchemaInclude(expressionRoot.Context)) + { + throw new ExpInvalidSchemaIncludeException(Context, expressionRoot.Context); + } + } + } +} diff --git a/内核源代码/StgSharp.Script/IExpressionToken.cs b/内核源代码/StgSharp.Script/IExpressionToken.cs new file mode 100644 index 00000000..dc1d1b95 --- /dev/null +++ b/内核源代码/StgSharp.Script/IExpressionToken.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IExpressionToken.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.Collections; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script +{ + public interface IExpressionToken + { + long TokenTypeCode + { + get; + } + + string Name + { + get; + } + + bool TryGetNextLevel(out ICollection nextLevel); + } +} diff --git a/内核源代码/StgSharp.Script/IScriptSourceProvider.cs b/内核源代码/StgSharp.Script/IScriptSourceProvider.cs new file mode 100644 index 00000000..e4a48983 --- /dev/null +++ b/内核源代码/StgSharp.Script/IScriptSourceProvider.cs @@ -0,0 +1,48 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IScriptSourceProvider.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.Script +{ + public interface IScriptSourceProvider + { + + int Location + { + get; + } + + string ReadLine(); + + } +} diff --git a/内核源代码/StgSharp.Script/ScriptSourceTransmitter.cs b/内核源代码/StgSharp.Script/ScriptSourceTransmitter.cs new file mode 100644 index 00000000..a5e7ca7d --- /dev/null +++ b/内核源代码/StgSharp.Script/ScriptSourceTransmitter.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ScriptSourceTransmitter.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; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script +{ + public class ScriptSourceTransmitter : IScriptSourceProvider + { + + private bool _isWriting = true; + private ConcurrentQueue cache = new ConcurrentQueue(); + private int _location; + private readonly string _completeMark; + + public ScriptSourceTransmitter( string endMark ) + { + _completeMark = endMark; + } + + public int Location => throw new NotImplementedException(); + + public string ReadLine() + { + cache.TryDequeue( out string line ); + _location++; + return line; + } + + public void WriteLine( string line ) + { + if( !_isWriting ) { + return; + } + if( string.Equals( _completeMark, line ) ) { + _isWriting = false; + } + cache.Enqueue( line ); + } + + } +} diff --git a/内核源代码/StgSharp.Script/StgSharp.Script.csproj b/内核源代码/StgSharp.Script/StgSharp.Script.csproj new file mode 100644 index 00000000..4b2fa88a --- /dev/null +++ b/内核源代码/StgSharp.Script/StgSharp.Script.csproj @@ -0,0 +1,19 @@ + + + + netstandard2.1 + enable + preview + True + AnyCPU;x64 + + + + + + + + + + + diff --git a/内核源代码/StgSharp.Script/bin/x64/Debug/netstandard2.1/StgSharp.Script.deps.json b/内核源代码/StgSharp.Script/bin/x64/Debug/netstandard2.1/StgSharp.Script.deps.json new file mode 100644 index 00000000..1af1154b --- /dev/null +++ b/内核源代码/StgSharp.Script/bin/x64/Debug/netstandard2.1/StgSharp.Script.deps.json @@ -0,0 +1,93 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + }, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..2aaf10e7 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/内核源代码/StgSharp.Script/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Script/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/内核源代码/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..de56a633 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.dgspec.json b/内核源代码/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.dgspec.json new file mode 100644 index 00000000..3c0c0560 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.dgspec.json @@ -0,0 +1,150 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Script/obj/project.assets.json b/内核源代码/StgSharp.Script/obj/project.assets.json new file mode 100644 index 00000000..aa4e4822 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/project.assets.json @@ -0,0 +1,267 @@ +{ + "version": 3, + "targets": { + ".NETStandard,Version=v2.1": { + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/Microsoft.CSharp.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + } + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.1", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "bin/placeholder/StgSharp.Common.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Common.dll": {} + } + } + } + }, + "libraries": { + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + } + }, + "projectFileDependencyGroups": { + ".NETStandard,Version=v2.1": [ + "CommunityToolkit.HighPerformance >= 8.4.0", + "StgSharp.Common >= 1.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..2aaf10e7 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..55ed3b57 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt @@ -0,0 +1,15 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\netstandard2.1\StgSharp.Script.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\netstandard2.1\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\netstandard2.1\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\netstandard2.1\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.D39FE6B0.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\netstandard2.1\StgSharp.Script.pdb diff --git a/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.sourcelink.json b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.sourcelink.json new file mode 100644 index 00000000..d30ebc07 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.Script/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/内核源代码/StgSharp.Script/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/内核源代码/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/内核源代码/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..de56a633 --- /dev/null +++ b/内核源代码/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/DialogueView.cs b/内核源代码/StgSharp.TerminalDialogue/DialogueView.cs new file mode 100644 index 00000000..5843aa3c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/DialogueView.cs @@ -0,0 +1,105 @@ + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Terminal.Gui; + +namespace StgSharpTerminalDialogue +{ + internal class DialogueView:Window + { + TextView tittle = new TextView() + { + Text = """" + + ███████╗████████╗ ██████╗ ███████╗██╗ ██╗ █████╗ ██████╗ ██████╗ + ██╔════╝╚══██╔══╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔══██╗██╔══██╗ + ███████╗ ██║ ██║ ███╗███████╗███████║███████║██████╔╝██████╔╝ + ╚════██║ ██║ ██║ ██║╚════██║██╔══██║██╔══██║██╔══██╗██╔═══╝ + ███████║ ██║ ╚██████╔╝███████║██║ ██║██║ ██║██║ ██║██║ + ╚══════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ + + """", + //generate from site: https://www.asciiart.eu/text-to-ascii-art + //font: ANSI shadow + TextAlignment = Alignment.Start, + Width = 8 * 9, + Height = 1 * 8, + X = 0, + Y = 0, + ColorScheme = common + }; + + static readonly Terminal.Gui.Attribute + commonColor = Application.Driver!.MakeColor( + new Color(92, 180, 225), Color.Cyan), + errorColor = Application.Driver!.MakeColor( + Color.White, Color.BrightRed); + + static ColorScheme common = new ColorScheme(){ + Focus = commonColor, + Normal = commonColor + }, + error = new ColorScheme() + { + Focus = errorColor, + Normal = errorColor + }; + + public static DialogueView Single + { + get => new DialogueView(); + } + + private DialogueView() + { + Init(); + } + + private void Init() + { + ColorScheme = common; + + this.Width = Dim.Fill(0); + this.Height = Dim.Fill(0); + this.X = 0; + this.Y = 0; + this.Title = "StgSharp Framework Dialogue"; + this.Add(this.tittle); + } + + public void ShowError(string message) + { + this.Remove(this.tittle); + this.ColorScheme = error; + this.Text = + """ + + ██╗ ███████╗██████╗ ██████╗ ██████╗ ██████╗ + ██╗ ██╔╝ ██╔════╝██╔══██╗██╔══██╗██╔═══██╗██╔══██╗ + ╚═╝ ██║ █████╗ ██████╔╝██████╔╝██║ ██║██████╔╝ + ██╗ ██║ ██╔══╝ ██╔══██╗██╔══██╗██║ ██║██╔══██╗ + ╚═╝ ╚██╗ ███████╗██║ ██║██║ ██║╚██████╔╝██║ ██║ + ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ + + """ + "\n"+ + message; + + Button button = new Button() + { + Text = "Click to quit." + }; + button.Accept += (sender,e) => { + Application.RequestStop(); + }; + + this.Add(button); + this.SetNeedsDisplay(); + } + + } +} diff --git a/内核源代码/StgSharp.TerminalDialogue/PostOpration.cs b/内核源代码/StgSharp.TerminalDialogue/PostOpration.cs new file mode 100644 index 00000000..07b16038 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/PostOpration.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PostOpration.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.Text; +using System.Threading.Tasks; + +using Terminal.Gui; + +namespace StgSharpTerminalDialogue +{ + internal static partial class Program + { + + private static DialogueView _dv; + + internal static void PostOperation( string instruction, string operand ) + { + switch( instruction ) { + case "posterror": + _dv.ShowError( operand ); + using( StreamWriter sw = new StreamWriter( + _callerServerPipe ) ) { + sw.WriteLine( "ERRORGET" ); + } + break; + default: + break; + } + } + + } +} diff --git a/内核源代码/StgSharp.TerminalDialogue/Program.cs b/内核源代码/StgSharp.TerminalDialogue/Program.cs new file mode 100644 index 00000000..cf274745 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/Program.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Program.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.Globalization; +using System.IO.Pipes; + +using Terminal.Gui; + +namespace StgSharpTerminalDialogue +{ + internal static partial class Program + { + + private static AnonymousPipeClientStream _callerClientPipe, _callerServerPipe; + + private static void Main( string[] args ) + { + Application.Init(); + + Console.CancelKeyPress += ( sender, e ) => { + e.Cancel = true; + Application.RequestStop(); + }; + + Task renderTask = Task.Factory + .StartNew( + () => { + _dv = DialogueView.Single; + Application.Run( view: _dv ); + } ); + + /**/ + if( args.Length != 2 ) { + Console.ReadLine(); + Application.RequestStop(); + } + /**/ + + _callerClientPipe = new AnonymousPipeClientStream( + PipeDirection.In, args[ 0 ] ); + _callerServerPipe = new AnonymousPipeClientStream( + PipeDirection.Out, args[ 1 ] ); + + + using( StreamReader clientReader = new StreamReader( + _callerClientPipe ) ) { + using( StreamWriter clientSender = new StreamWriter( + _callerServerPipe ) ) { + clientSender.AutoFlush = true; + string temp = string.Empty; + while( !temp!.Contains( "exit " ) && !renderTask.IsCompleted ) { + temp = clientReader.ReadLine()!; + temp = temp ?? string.Empty; + if( string.IsNullOrEmpty( temp ) ) { + continue; + } + + int index = temp.IndexOf( ' ' ); + if( index == -1 ) { + continue; + } + + string command = temp.Substring( 0, index ); + string operand = temp.Substring( index + 1 ); + + PostOperation( command, operand ); + } + } + } + } + } +} diff --git a/内核源代码/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj b/内核源代码/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj new file mode 100644 index 00000000..4c24308c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj @@ -0,0 +1,37 @@ + + + + Exe + net8.0 + enable + enable + build\StgSharpTerminalDialogue + $(BaseOutputPath) + false + false + True + True + x64 + none + AnyCPU;x64 + + + + False + + + + + + + + + + + + + + + + + diff --git a/内核源代码/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/内核源代码/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/内核源代码/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..e3afbc1c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..a73d1a1c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file=".NETCoreApp,Version=v8.0.AssemblyAttributes.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.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute( + ".NETCoreApp,Version=v8.0", + FrameworkDisplayName = ".NET 8.0" )] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..e3afbc1c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..5dde2b06 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..5c812fae --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharp.A8FD039C.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\refint\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\ref\StgSharpTerminalDialogue.dll diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.sourcelink.json b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.sourcelink.json new file mode 100644 index 00000000..53bd9bd6 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/63c3cd17e2188771886daeb4046edf28633fa949/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..8570a44b --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7c8d462ca5da46abdfb0e7278f81d25abe890887")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..11a748e4 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..709b8326 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+592ad55d57752262ac1a710ef11425da83ef4676")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..a559dc47 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharp.A8FD039C.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\refint\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\ref\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.sourcelink.json b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.sourcelink.json new file mode 100644 index 00000000..c280d932 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/7c8d462ca5da46abdfb0e7278f81d25abe890887/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..f4c838d1 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7c8d462ca5da46abdfb0e7278f81d25abe890887")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..7867aafe --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,27 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\fr-FR\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\ja-JP\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\pt-PT\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\zh-Hans\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharp.A8FD039C.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\refint\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\ref\StgSharpTerminalDialogue.dll diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.sourcelink.json b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.sourcelink.json new file mode 100644 index 00000000..c280d932 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/7c8d462ca5da46abdfb0e7278f81d25abe890887/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.dgspec.json b/内核源代码/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.dgspec.json new file mode 100644 index 00000000..cd6cdca0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.dgspec.json @@ -0,0 +1,75 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "projectName": "StgSharp.TerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.dgspec.json b/内核源代码/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.dgspec.json new file mode 100644 index 00000000..a859f8d1 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.dgspec.json @@ -0,0 +1,75 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj", + "projectName": "StgSharpTerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/project.assets.json b/内核源代码/StgSharp.TerminalDialogue/obj/project.assets.json new file mode 100644 index 00000000..b040582c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/project.assets.json @@ -0,0 +1,460 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "ColorHelper/1.8.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/ColorHelper.dll": {} + }, + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": {} + } + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "compile": { + "lib/net8.0/System.IO.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/8.0.4": { + "type": "package", + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "dependencies": { + "ColorHelper": "[1.8.1, 2.0.0)", + "System.IO.Abstractions": "[21.0.22, 22.0.0)", + "System.Text.Json": "[8.0.4, 9.0.0)", + "Wcwidth": "[2.0.0, 3.0.0)" + }, + "compile": { + "lib/net8.0/Terminal.Gui.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll": { + "locale": "fr-FR" + }, + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll": { + "locale": "ja-JP" + }, + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll": { + "locale": "pt-PT" + }, + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll": { + "locale": "zh-Hans" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "compile": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "related": ".xml" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "compile": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "related": ".xml" + } + } + }, + "Wcwidth/2.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Wcwidth.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "ColorHelper/1.8.1": { + "sha512": "rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "type": "package", + "path": "colorhelper/1.8.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "colorhelper.1.8.1.nupkg.sha512", + "colorhelper.nuspec", + "lib/netstandard2.0/ColorHelper.dll", + "logo.jpg" + ] + }, + "System.IO.Abstractions/21.0.22": { + "sha512": "DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "type": "package", + "path": "system.io.abstractions/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/System.IO.Abstractions.dll", + "lib/net462/System.IO.Abstractions.xml", + "lib/net6.0/System.IO.Abstractions.dll", + "lib/net6.0/System.IO.Abstractions.xml", + "lib/net7.0/System.IO.Abstractions.dll", + "lib/net7.0/System.IO.Abstractions.xml", + "lib/net8.0/System.IO.Abstractions.dll", + "lib/net8.0/System.IO.Abstractions.xml", + "lib/netstandard2.0/System.IO.Abstractions.dll", + "lib/netstandard2.0/System.IO.Abstractions.xml", + "lib/netstandard2.1/System.IO.Abstractions.dll", + "lib/netstandard2.1/System.IO.Abstractions.xml", + "system.io.abstractions.21.0.22.nupkg.sha512", + "system.io.abstractions.nuspec" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.4": { + "sha512": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "type": "package", + "path": "system.text.json/8.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.4.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "sha512": "1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "type": "package", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net8.0/Terminal.Gui.dll", + "lib/net8.0/Terminal.Gui.xml", + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll", + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll", + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll", + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll", + "logo.png", + "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512", + "terminal.gui.nuspec" + ] + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "sha512": "yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "type": "package", + "path": "testableio.system.io.abstractions/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/TestableIO.System.IO.Abstractions.dll", + "lib/net462/TestableIO.System.IO.Abstractions.xml", + "lib/net6.0/TestableIO.System.IO.Abstractions.dll", + "lib/net6.0/TestableIO.System.IO.Abstractions.xml", + "lib/net7.0/TestableIO.System.IO.Abstractions.dll", + "lib/net7.0/TestableIO.System.IO.Abstractions.xml", + "lib/net8.0/TestableIO.System.IO.Abstractions.dll", + "lib/net8.0/TestableIO.System.IO.Abstractions.xml", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.dll", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.xml", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.dll", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.xml", + "testableio.system.io.abstractions.21.0.22.nupkg.sha512", + "testableio.system.io.abstractions.nuspec" + ] + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "sha512": "ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "type": "package", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.xml", + "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512", + "testableio.system.io.abstractions.wrappers.nuspec" + ] + }, + "Wcwidth/2.0.0": { + "sha512": "eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "type": "package", + "path": "wcwidth/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0/Wcwidth.dll", + "lib/net6.0/Wcwidth.xml", + "lib/net7.0/Wcwidth.dll", + "lib/net7.0/Wcwidth.xml", + "lib/net8.0/Wcwidth.dll", + "lib/net8.0/Wcwidth.xml", + "lib/netstandard2.0/Wcwidth.dll", + "lib/netstandard2.0/Wcwidth.xml", + "wcwidth.2.0.0.nupkg.sha512", + "wcwidth.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "Terminal.Gui >= 2.0.0-v2-develop.2329" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "projectName": "StgSharp.TerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..e3afbc1c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..8e428413 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.7B22D5CB.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\refint\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\ref\StgSharp.TerminalDialogue.dll diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.sourcelink.json b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.sourcelink.json new file mode 100644 index 00000000..d30ebc07 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ No newline at end of file diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/内核源代码/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/内核源代码/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/内核源代码/StgSharpDebug/Program.cs b/内核源代码/StgSharpDebug/Program.cs index 8bc6e14a..7c67663f 100644 --- a/内核源代码/StgSharpDebug/Program.cs +++ b/内核源代码/StgSharpDebug/Program.cs @@ -29,6 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Collections; using StgSharp.Controlling.UsrActivity; using StgSharp.Geometries; using StgSharp.Graphics; @@ -58,24 +59,19 @@ namespace StgSharp StgSharp.InitGL( 4, 6 ); StgSharp.GlobalSetting.VSyncActivated = false; - - Matrix44 m1 = new Matrix44( - 1, 0, 0, 1, - 0, 2, 0, 0, - 0, 0, 3, 0, - 0, 0, 0, 4 - ); - Matrix43 m2 = new Matrix43( - 1,3, 5, - 5,7, 10, - 2,4,6, - 6,8,0 - ); - var ans = m1.Multiple( m2 ); - ViewPort vp = new ViewPort(800,600,"Hello StgSharp!",IntPtr.Zero); //throw new NotImplementedException(); + var mul = new StringHashMultiplexer(); + IEqualityComparer com = (IEqualityComparer)mul; + string str = "1234567012345670"; + for (int i = 1; i < 100; i++) + { + str += $"{(i%8)}"; + int hash = mul.ForceComputeHash(str); + Thread.Sleep(20); + } + ViewModelBase mainModel = new ViewModelMain( vp ); mainModel.CreateAndBindView( "MainView", (1, 1, 1) ); diff --git a/内核源代码/StgSharpDebug/RenderStream/Partical.cs b/内核源代码/StgSharpDebug/RenderStream/Partical.cs index 9ab4d33a..051f993a 100644 --- a/内核源代码/StgSharpDebug/RenderStream/Partical.cs +++ b/内核源代码/StgSharpDebug/RenderStream/Partical.cs @@ -328,7 +328,7 @@ namespace StgSharp GL.TextureImage2d( Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null ); + PixelChannelLayout.Byte, null! ); t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); t.Set2dFilterProperty( 0, TextureFilter.Linear, TextureFilter.Linear ); diff --git a/内核源代码/StgSharpDebug/StgSharpDebug.csproj b/内核源代码/StgSharpDebug/StgSharpDebug.csproj index 324aebb9..3e0bfc14 100644 --- a/内核源代码/StgSharpDebug/StgSharpDebug.csproj +++ b/内核源代码/StgSharpDebug/StgSharpDebug.csproj @@ -2,7 +2,7 @@ WinExe - net8.0 + net6.0 enable Preview warnings @@ -16,9 +16,8 @@ MIT False AnyCPU;x64 - $(SolutionDir)Output Always - Debug;Release;RealDebug;Benchmark;Toollist + Debug;Release; @@ -26,41 +25,12 @@ False - - True - False - - - - True - False - - - - True - False - False False - - True - False - - - - True - False - - - - True - False - - True False @@ -87,38 +57,20 @@ Linux - - - - - - - - - - - - - - - - all - - - - - - + + + + diff --git a/内核源代码/StgSharpDebug/ViewModelMain.cs b/内核源代码/StgSharpDebug/ViewModelMain.cs index e0ec6b45..1b321862 100644 --- a/内核源代码/StgSharpDebug/ViewModelMain.cs +++ b/内核源代码/StgSharpDebug/ViewModelMain.cs @@ -44,12 +44,12 @@ namespace StgSharp public class ViewModelMain : ViewModelBase { - private Dictionary dataBindingEntryIndexmap; + private Dictionary dataBindingEntryIndexMap; public ViewModelMain( ViewPort vp ) : base( vp, 60 ) { - dataBindingEntryIndexmap = new Dictionary( + dataBindingEntryIndexMap = new Dictionary( ); } @@ -59,7 +59,7 @@ namespace StgSharp string name, out DataBindingEntry entry ) { - if( dataBindingEntryIndexmap.TryGetValue( name, out entry ) ) { + if( dataBindingEntryIndexMap.TryGetValue( name, out entry ) ) { return true; } entry = name switch @@ -70,7 +70,7 @@ namespace StgSharp if( entry.ExactEqual( DataBindingEntry.NullBinding ) ) { return false; } - dataBindingEntryIndexmap.Add( name, entry ); + dataBindingEntryIndexMap.Add( name, entry ); return true; } diff --git a/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/fbo.frag b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/fbo.frag new file mode 100644 index 00000000..50cefd8b --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/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.099f,0.226f,0.335f,0.0f); +} \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/fbo.vert b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/fbo.vert new file mode 100644 index 00000000..bb5c00c5 --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/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/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/main.frag b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/main.frag new file mode 100644 index 00000000..6f8c1558 --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/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/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/main.vert b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/main.vert new file mode 100644 index 00000000..a3a23d5e --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/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/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/particle.frag b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/particle.frag new file mode 100644 index 00000000..d2eb95fd --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/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/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/particle.vert b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/Shader/particle.vert new file mode 100644 index 00000000..83adda21 --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/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/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.Common.deps.json b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpDebug.deps.json b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpDebug.deps.json new file mode 100644 index 00000000..bd4d9160 --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpDebug.deps.json @@ -0,0 +1,358 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "StgSharpDebug/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Generator": "1.0.0", + "StgSharp.Model": "1.0.0", + "StgSharp.Script": "1.0.0", + "System.Collections.Concurrent": "4.3.0" + }, + "runtime": { + "StgSharpDebug.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + }, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Generator/1.0.0": { + "runtime": { + "StgSharp.Generator.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Model/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "runtime": { + "StgSharp.Model.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharpDebug/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" + }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Generator/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpDebug.runtimeconfig.json b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpDebug.runtimeconfig.json new file mode 100644 index 00000000..4986d16e --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpDebug.runtimeconfig.json @@ -0,0 +1,9 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/内核源代码/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs b/内核源代码/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs index 9889be3c..3afbd352 100644 --- a/内核源代码/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs +++ b/内核源代码/StgSharpDebug/obj/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+6e2f93b053825680d03e27c9acae8ded6bd00dc4")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/内核源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json b/内核源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json index d55f1f8a..0dd65605 100644 --- a/内核源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json +++ b/内核源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json @@ -4,14 +4,14 @@ "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj": {} }, "projects": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", - "projectName": "StgSgharp.Generator", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj", + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "projectName": "StgSharp.Generator", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\obj\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" @@ -73,240 +73,14 @@ } } }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj", - "projectName": "StgSharp.Script", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj", + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" - ], - "originalTargetFrameworks": [ - "netstandard2.1" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "D:\\Programmer\\NugetLocal": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "netstandard2.1": { - "targetAlias": "netstandard2.1", - "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "netstandard2.1": { - "targetAlias": "netstandard2.1", - "dependencies": { - "System.Collections.Immutable": { - "target": "Package", - "version": "[8.0.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "NETStandard.Library": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" - } - } - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", - "projectName": "StgSharpDebug", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", - "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "D:\\Programmer\\NugetLocal": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj" - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj" - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj" - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "dependencies": { - "Microsoft.Windows.CsWin32": { - "suppressParent": "All", - "target": "Package", - "version": "[0.3.49-beta, )" - }, - "System.Collections.Concurrent": { - "target": "Package", - "version": "[4.3.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" - } - } - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj", - "projectName": "StgSharpTerminalDialogue", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj", - "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\obj\\", - "projectStyle": "PackageReference", - "configFilePaths": [ - "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "D:\\Programmer\\NugetLocal": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "dependencies": { - "Terminal.Gui": { - "target": "Package", - "version": "[2.0.0-v2-develop.2329, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" - } - } - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj", - "projectName": "StgSharp.Commom", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj", - "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\obj\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" @@ -370,14 +144,14 @@ } } }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj", - "projectName": "SthSharp.Model", - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj", + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", - "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\obj\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" @@ -395,8 +169,11 @@ "netstandard2.1": { "targetAlias": "netstandard2.1", "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" } } } @@ -434,6 +211,157 @@ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" } } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "projectName": "StgSharpDebug", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net6.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net6.0": { + "targetAlias": "net6.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net6.0": { + "targetAlias": "net6.0", + "dependencies": { + "System.Collections.Concurrent": { + "target": "Package", + "version": "[4.3.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" + } + } } } } \ No newline at end of file diff --git a/内核源代码/StgSharpDebug/obj/project.assets.json b/内核源代码/StgSharpDebug/obj/project.assets.json index ca7cffab..7ca227f0 100644 --- a/内核源代码/StgSharpDebug/obj/project.assets.json +++ b/内核源代码/StgSharpDebug/obj/project.assets.json @@ -1,14 +1,21 @@ { "version": 3, "targets": { - "net8.0": { - "ColorHelper/1.8.1": { + "net6.0": { + "CommunityToolkit.HighPerformance/8.4.0": { "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, "compile": { - "lib/netstandard2.0/ColorHelper.dll": {} + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } }, "runtime": { - "lib/netstandard2.0/ColorHelper.dll": {} + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } } }, "Microsoft.CSharp/4.7.0": { @@ -38,50 +45,6 @@ "lib/netstandard1.0/_._": {} } }, - "Microsoft.Windows.CsWin32/0.3.49-beta": { - "type": "package", - "dependencies": { - "Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha", - "Microsoft.Windows.SDK.Win32Metadata": "55.0.45-preview", - "Microsoft.Windows.WDK.Win32Metadata": "0.9.9-experimental", - "System.Memory": "4.5.5", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - }, - "build": { - "build/netstandard1.0/Microsoft.Windows.CsWin32.props": {} - } - }, - "Microsoft.Windows.SDK.Win32Docs/0.1.42-alpha": { - "type": "package", - "compile": { - "lib/netstandard2.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/_._": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/netstandard1.0/Microsoft.Windows.SDK.Win32Docs.props": {} - } - }, - "Microsoft.Windows.SDK.Win32Metadata/55.0.45-preview": { - "type": "package", - "build": { - "buildTransitive/netstandard1.0/Microsoft.Windows.SDK.Win32Metadata.props": {} - } - }, - "Microsoft.Windows.WDK.Win32Metadata/0.9.9-experimental": { - "type": "package", - "dependencies": { - "Microsoft.Windows.SDK.Win32Metadata": "55.0.45-preview" - }, - "build": { - "buildTransitive/netstandard1.0/Microsoft.Windows.WDK.Win32Metadata.props": {} - } - }, "System.Collections/4.3.0": { "type": "package", "dependencies": { @@ -118,22 +81,6 @@ "lib/netstandard1.3/System.Collections.Concurrent.dll": {} } }, - "System.Collections.Immutable/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Collections.Immutable.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Collections.Immutable.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, "System.Diagnostics.Debug/4.3.0": { "type": "package", "dependencies": { @@ -188,32 +135,6 @@ } } }, - "System.IO.Abstractions/21.0.22": { - "type": "package", - "dependencies": { - "TestableIO.System.IO.Abstractions": "21.0.22", - "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" - }, - "compile": { - "lib/net8.0/System.IO.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Abstractions.dll": { - "related": ".xml" - } - } - }, - "System.Memory/4.5.5": { - "type": "package", - "compile": { - "ref/netcoreapp2.1/_._": {} - }, - "runtime": { - "lib/netcoreapp2.1/_._": {} - } - }, "System.Reflection/4.3.0": { "type": "package", "dependencies": { @@ -272,10 +193,14 @@ "System.Runtime.CompilerServices.Unsafe/6.1.0": { "type": "package", "compile": { - "lib/net7.0/_._": {} + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net7.0/_._": {} + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } }, "build": { "buildTransitive/net6.0/_._": {} @@ -307,47 +232,6 @@ } } }, - "System.Text.Encodings.Web/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "assetType": "runtime", - "rid": "browser" - } - } - }, - "System.Text.Json/8.0.4": { - "type": "package", - "dependencies": { - "System.Text.Encodings.Web": "8.0.0" - }, - "compile": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/System.Text.Json.targets": {} - } - }, "System.Threading/4.3.0": { "type": "package", "dependencies": { @@ -376,92 +260,7 @@ } } }, - "Terminal.Gui/2.0.0-v2-develop.2329": { - "type": "package", - "dependencies": { - "ColorHelper": "[1.8.1, 2.0.0)", - "System.IO.Abstractions": "[21.0.22, 22.0.0)", - "System.Text.Json": "[8.0.4, 9.0.0)", - "Wcwidth": "[2.0.0, 3.0.0)" - }, - "compile": { - "lib/net8.0/Terminal.Gui.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Terminal.Gui.dll": { - "related": ".xml" - } - }, - "resource": { - "lib/net8.0/fr-FR/Terminal.Gui.resources.dll": { - "locale": "fr-FR" - }, - "lib/net8.0/ja-JP/Terminal.Gui.resources.dll": { - "locale": "ja-JP" - }, - "lib/net8.0/pt-PT/Terminal.Gui.resources.dll": { - "locale": "pt-PT" - }, - "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll": { - "locale": "zh-Hans" - } - } - }, - "TestableIO.System.IO.Abstractions/21.0.22": { - "type": "package", - "compile": { - "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { - "related": ".xml" - } - } - }, - "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { - "type": "package", - "dependencies": { - "TestableIO.System.IO.Abstractions": "21.0.22" - }, - "compile": { - "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { - "related": ".xml" - } - } - }, - "Wcwidth/2.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Wcwidth.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Wcwidth.dll": { - "related": ".xml" - } - } - }, - "StgSgharp.Generator/1.0.0": { - "type": "project", - "framework": ".NETStandard,Version=v2.0", - "compile": { - "bin/placeholder/StgSgharp.Generator.dll": {} - }, - "runtime": { - "bin/placeholder/StgSgharp.Generator.dll": {} - } - }, - "StgSharp.Commom/1.0.0": { + "StgSharp.Common/1.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "dependencies": { @@ -469,18 +268,42 @@ "System.Runtime.CompilerServices.Unsafe": "6.1.0" }, "compile": { - "bin/placeholder/StgSharp.Commom.dll": {} + "bin/placeholder/StgSharp.Common.dll": {} }, "runtime": { - "bin/placeholder/StgSharp.Commom.dll": {} + "bin/placeholder/StgSharp.Common.dll": {} + } + }, + "StgSharp.Generator/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.0", + "compile": { + "bin/placeholder/StgSharp.Generator.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Generator.dll": {} + } + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "framework": ".NETStandard,Version=v2.1", + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Model.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Model.dll": {} } }, "StgSharp.Script/1.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "dependencies": { - "StgSharp.Commom": "1.0.0", - "System.Collections.Immutable": "8.0.0" + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" }, "compile": { "bin/placeholder/StgSharp.Script.dll": {} @@ -488,47 +311,34 @@ "runtime": { "bin/placeholder/StgSharp.Script.dll": {} } - }, - "StgSharpTerminalDialogue/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v8.0", - "dependencies": { - "Terminal.Gui": "2.0.0-v2-develop.2329" - }, - "compile": { - "bin/placeholder/StgSharpTerminalDialogue.dll": {} - }, - "runtime": { - "bin/placeholder/StgSharpTerminalDialogue.dll": {} - } - }, - "SthSharp.Model/1.0.0": { - "type": "project", - "framework": ".NETStandard,Version=v2.1", - "dependencies": { - "StgSharp.Commom": "1.0.0" - }, - "compile": { - "bin/placeholder/SthSharp.Model.dll": {} - }, - "runtime": { - "bin/placeholder/SthSharp.Model.dll": {} - } } } }, "libraries": { - "ColorHelper/1.8.1": { - "sha512": "rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", "type": "package", - "path": "colorhelper/1.8.1", + "path": "communitytoolkit.highperformance/8.4.0", "files": [ ".nupkg.metadata", ".signature.p7s", - "colorhelper.1.8.1.nupkg.sha512", - "colorhelper.nuspec", - "lib/netstandard2.0/ColorHelper.dll", - "logo.jpg" + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" ] }, "Microsoft.CSharp/4.7.0": { @@ -630,91 +440,6 @@ "runtime.json" ] }, - "Microsoft.Windows.CsWin32/0.3.49-beta": { - "sha512": "/iAXplVDKESFyLz/MShuVYVx62YFvFePpq3qrzREl8KScQqG6Z2kV7r9UJTjQS1g+hfy3V+e4m1x9lsu24YNSg==", - "type": "package", - "path": "microsoft.windows.cswin32/0.3.49-beta", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "NOTICE.txt", - "README.md", - "analyzers/cs/MessagePack.Annotations.dll", - "analyzers/cs/MessagePack.dll", - "analyzers/cs/Microsoft.Bcl.AsyncInterfaces.dll", - "analyzers/cs/Microsoft.Windows.CsWin32.dll", - "analyzers/cs/Microsoft.Windows.SDK.Win32Docs.dll", - "analyzers/cs/System.Text.Encodings.Web.dll", - "analyzers/cs/System.Text.Json.dll", - "build/Microsoft.Windows.CsWin32.props", - "build/net20/Microsoft.Windows.CsWin32.props", - "build/netstandard1.0/Microsoft.Windows.CsWin32.props", - "microsoft.windows.cswin32.0.3.49-beta.nupkg.sha512", - "microsoft.windows.cswin32.nuspec", - "readme.txt", - "tools/install.ps1", - "tools/uninstall.ps1" - ] - }, - "Microsoft.Windows.SDK.Win32Docs/0.1.42-alpha": { - "sha512": "Z/9po23gUA9aoukirh2ItMU2ZS9++Js9Gdds9fu5yuMojDrmArvY2y+tq9985tR3cxFxpZO1O35Wjfo0khj5HA==", - "type": "package", - "path": "microsoft.windows.sdk.win32docs/0.1.42-alpha", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "apidocs.msgpack", - "buildTransitive/Microsoft.Windows.SDK.Win32Docs.props", - "buildTransitive/net20/Microsoft.Windows.SDK.Win32Docs.props", - "buildTransitive/netstandard1.0/Microsoft.Windows.SDK.Win32Docs.props", - "images/windows.png", - "lib/netstandard2.0/Microsoft.Windows.SDK.Win32Docs.dll", - "lib/netstandard2.0/Microsoft.Windows.SDK.Win32Docs.xml", - "microsoft.windows.sdk.win32docs.0.1.42-alpha.nupkg.sha512", - "microsoft.windows.sdk.win32docs.nuspec" - ] - }, - "Microsoft.Windows.SDK.Win32Metadata/55.0.45-preview": { - "sha512": "2i1kVIk8rMuMCYtoeYeWbmCRLqNgb63Berac3Gv+J/pjp0oucopasKgLQNslryhsgBl4xex9ENhJX2MXEW5vdA==", - "type": "package", - "path": "microsoft.windows.sdk.win32metadata/55.0.45-preview", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Windows.Win32.winmd", - "build/Microsoft.Windows.SDK.Win32Metadata.props", - "build/net20/Microsoft.Windows.SDK.Win32Metadata.props", - "build/netstandard1.0/Microsoft.Windows.SDK.Win32Metadata.props", - "buildTransitive/Microsoft.Windows.SDK.Win32Metadata.props", - "buildTransitive/net20/Microsoft.Windows.SDK.Win32Metadata.props", - "buildTransitive/netstandard1.0/Microsoft.Windows.SDK.Win32Metadata.props", - "images/windows.png", - "microsoft.windows.sdk.win32metadata.55.0.45-preview.nupkg.sha512", - "microsoft.windows.sdk.win32metadata.nuspec", - "sdk_license.txt" - ] - }, - "Microsoft.Windows.WDK.Win32Metadata/0.9.9-experimental": { - "sha512": "cncPlxLqR25mFOuvpxZPgXgJqRmXyV5eTULj/9w8AQvO/c1xJDEapohRsWkYaia7hCR/EwEzBHr7RU9u93T03w==", - "type": "package", - "path": "microsoft.windows.wdk.win32metadata/0.9.9-experimental", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Windows.Wdk.winmd", - "build/Microsoft.Windows.WDK.Win32Metadata.props", - "build/net20/Microsoft.Windows.WDK.Win32Metadata.props", - "build/netstandard1.0/Microsoft.Windows.WDK.Win32Metadata.props", - "buildTransitive/Microsoft.Windows.WDK.Win32Metadata.props", - "buildTransitive/net20/Microsoft.Windows.WDK.Win32Metadata.props", - "buildTransitive/netstandard1.0/Microsoft.Windows.WDK.Win32Metadata.props", - "images/windows.png", - "microsoft.windows.wdk.win32metadata.0.9.9-experimental.nupkg.sha512", - "microsoft.windows.wdk.win32metadata.nuspec", - "sdk_license.txt" - ] - }, "System.Collections/4.3.0": { "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", "type": "package", @@ -851,36 +576,6 @@ "system.collections.concurrent.nuspec" ] }, - "System.Collections.Immutable/8.0.0": { - "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", - "type": "package", - "path": "system.collections.immutable/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Collections.Immutable.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", - "lib/net462/System.Collections.Immutable.dll", - "lib/net462/System.Collections.Immutable.xml", - "lib/net6.0/System.Collections.Immutable.dll", - "lib/net6.0/System.Collections.Immutable.xml", - "lib/net7.0/System.Collections.Immutable.dll", - "lib/net7.0/System.Collections.Immutable.xml", - "lib/net8.0/System.Collections.Immutable.dll", - "lib/net8.0/System.Collections.Immutable.xml", - "lib/netstandard2.0/System.Collections.Immutable.dll", - "lib/netstandard2.0/System.Collections.Immutable.xml", - "system.collections.immutable.8.0.0.nupkg.sha512", - "system.collections.immutable.nuspec", - "useSharedDesignerContext.txt" - ] - }, "System.Diagnostics.Debug/4.3.0": { "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", "type": "package", @@ -1188,54 +883,6 @@ "system.io.nuspec" ] }, - "System.IO.Abstractions/21.0.22": { - "sha512": "DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", - "type": "package", - "path": "system.io.abstractions/21.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "icon_256x256.png", - "lib/net462/System.IO.Abstractions.dll", - "lib/net462/System.IO.Abstractions.xml", - "lib/net6.0/System.IO.Abstractions.dll", - "lib/net6.0/System.IO.Abstractions.xml", - "lib/net7.0/System.IO.Abstractions.dll", - "lib/net7.0/System.IO.Abstractions.xml", - "lib/net8.0/System.IO.Abstractions.dll", - "lib/net8.0/System.IO.Abstractions.xml", - "lib/netstandard2.0/System.IO.Abstractions.dll", - "lib/netstandard2.0/System.IO.Abstractions.xml", - "lib/netstandard2.1/System.IO.Abstractions.dll", - "lib/netstandard2.1/System.IO.Abstractions.xml", - "system.io.abstractions.21.0.22.nupkg.sha512", - "system.io.abstractions.nuspec" - ] - }, - "System.Memory/4.5.5": { - "sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", - "type": "package", - "path": "system.memory/4.5.5", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Memory.dll", - "lib/net461/System.Memory.xml", - "lib/netcoreapp2.1/_._", - "lib/netstandard1.1/System.Memory.dll", - "lib/netstandard1.1/System.Memory.xml", - "lib/netstandard2.0/System.Memory.dll", - "lib/netstandard2.0/System.Memory.xml", - "ref/netcoreapp2.1/_._", - "system.memory.4.5.5.nupkg.sha512", - "system.memory.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, "System.Reflection/4.3.0": { "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", "type": "package", @@ -1694,114 +1341,6 @@ "system.text.encoding.nuspec" ] }, - "System.Text.Encodings.Web/8.0.0": { - "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", - "type": "package", - "path": "system.text.encodings.web/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Text.Encodings.Web.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", - "lib/net462/System.Text.Encodings.Web.dll", - "lib/net462/System.Text.Encodings.Web.xml", - "lib/net6.0/System.Text.Encodings.Web.dll", - "lib/net6.0/System.Text.Encodings.Web.xml", - "lib/net7.0/System.Text.Encodings.Web.dll", - "lib/net7.0/System.Text.Encodings.Web.xml", - "lib/net8.0/System.Text.Encodings.Web.dll", - "lib/net8.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.8.0.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.Json/8.0.4": { - "sha512": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", - "type": "package", - "path": "system.text.json/8.0.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "buildTransitive/net461/System.Text.Json.targets", - "buildTransitive/net462/System.Text.Json.targets", - "buildTransitive/net6.0/System.Text.Json.targets", - "buildTransitive/netcoreapp2.0/System.Text.Json.targets", - "buildTransitive/netstandard2.0/System.Text.Json.targets", - "lib/net462/System.Text.Json.dll", - "lib/net462/System.Text.Json.xml", - "lib/net6.0/System.Text.Json.dll", - "lib/net6.0/System.Text.Json.xml", - "lib/net7.0/System.Text.Json.dll", - "lib/net7.0/System.Text.Json.xml", - "lib/net8.0/System.Text.Json.dll", - "lib/net8.0/System.Text.Json.xml", - "lib/netstandard2.0/System.Text.Json.dll", - "lib/netstandard2.0/System.Text.Json.xml", - "system.text.json.8.0.4.nupkg.sha512", - "system.text.json.nuspec", - "useSharedDesignerContext.txt" - ] - }, "System.Threading/4.3.0": { "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", "type": "package", @@ -1941,128 +1480,33 @@ "system.threading.tasks.nuspec" ] }, - "Terminal.Gui/2.0.0-v2-develop.2329": { - "sha512": "1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", - "type": "package", - "path": "terminal.gui/2.0.0-v2-develop.2329", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net8.0/Terminal.Gui.dll", - "lib/net8.0/Terminal.Gui.xml", - "lib/net8.0/fr-FR/Terminal.Gui.resources.dll", - "lib/net8.0/ja-JP/Terminal.Gui.resources.dll", - "lib/net8.0/pt-PT/Terminal.Gui.resources.dll", - "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll", - "logo.png", - "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512", - "terminal.gui.nuspec" - ] - }, - "TestableIO.System.IO.Abstractions/21.0.22": { - "sha512": "yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", - "type": "package", - "path": "testableio.system.io.abstractions/21.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "icon_256x256.png", - "lib/net462/TestableIO.System.IO.Abstractions.dll", - "lib/net462/TestableIO.System.IO.Abstractions.xml", - "lib/net6.0/TestableIO.System.IO.Abstractions.dll", - "lib/net6.0/TestableIO.System.IO.Abstractions.xml", - "lib/net7.0/TestableIO.System.IO.Abstractions.dll", - "lib/net7.0/TestableIO.System.IO.Abstractions.xml", - "lib/net8.0/TestableIO.System.IO.Abstractions.dll", - "lib/net8.0/TestableIO.System.IO.Abstractions.xml", - "lib/netstandard2.0/TestableIO.System.IO.Abstractions.dll", - "lib/netstandard2.0/TestableIO.System.IO.Abstractions.xml", - "lib/netstandard2.1/TestableIO.System.IO.Abstractions.dll", - "lib/netstandard2.1/TestableIO.System.IO.Abstractions.xml", - "testableio.system.io.abstractions.21.0.22.nupkg.sha512", - "testableio.system.io.abstractions.nuspec" - ] - }, - "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { - "sha512": "ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", - "type": "package", - "path": "testableio.system.io.abstractions.wrappers/21.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "icon_256x256.png", - "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.dll", - "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.xml", - "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.dll", - "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.xml", - "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.dll", - "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.xml", - "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll", - "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.xml", - "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.dll", - "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.xml", - "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.dll", - "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.xml", - "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512", - "testableio.system.io.abstractions.wrappers.nuspec" - ] - }, - "Wcwidth/2.0.0": { - "sha512": "eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", - "type": "package", - "path": "wcwidth/2.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net6.0/Wcwidth.dll", - "lib/net6.0/Wcwidth.xml", - "lib/net7.0/Wcwidth.dll", - "lib/net7.0/Wcwidth.xml", - "lib/net8.0/Wcwidth.dll", - "lib/net8.0/Wcwidth.xml", - "lib/netstandard2.0/Wcwidth.dll", - "lib/netstandard2.0/Wcwidth.xml", - "wcwidth.2.0.0.nupkg.sha512", - "wcwidth.nuspec" - ] - }, - "StgSgharp.Generator/1.0.0": { + "StgSharp.Common/1.0.0": { "type": "project", - "path": "../StgSgharp.Generator.Expression/StgSgharp.Generator.csproj", - "msbuildProject": "../StgSgharp.Generator.Expression/StgSgharp.Generator.csproj" + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" }, - "StgSharp.Commom/1.0.0": { + "StgSharp.Generator/1.0.0": { "type": "project", - "path": "../StgSharp/StgSharp.Commom.csproj", - "msbuildProject": "../StgSharp/StgSharp.Commom.csproj" + "path": "../StgSgharp.Generator/StgSharp.Generator.csproj", + "msbuildProject": "../StgSgharp.Generator/StgSharp.Generator.csproj" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "path": "../StgSharp.Model/StgSharp.Model.csproj", + "msbuildProject": "../StgSharp.Model/StgSharp.Model.csproj" }, "StgSharp.Script/1.0.0": { "type": "project", - "path": "../StgSharp.Modeling/StgSharp.Script.csproj", - "msbuildProject": "../StgSharp.Modeling/StgSharp.Script.csproj" - }, - "StgSharpTerminalDialogue/1.0.0": { - "type": "project", - "path": "../StgSharpTerminalDialogue/StgSharpTerminalDialogue.csproj", - "msbuildProject": "../StgSharpTerminalDialogue/StgSharpTerminalDialogue.csproj" - }, - "SthSharp.Model/1.0.0": { - "type": "project", - "path": "../SthSharp.Model/SthSharp.Model.csproj", - "msbuildProject": "../SthSharp.Model/SthSharp.Model.csproj" + "path": "../StgSharp.Script/StgSharp.Script.csproj", + "msbuildProject": "../StgSharp.Script/StgSharp.Script.csproj" } }, "projectFileDependencyGroups": { - "net8.0": [ - "Microsoft.Windows.CsWin32 >= 0.3.49-beta", - "StgSgharp.Generator >= 1.0.0", - "StgSharp.Commom >= 1.0.0", + "net6.0": [ + "StgSharp.Common >= 1.0.0", + "StgSharp.Generator >= 1.0.0", + "StgSharp.Model >= 1.0.0", "StgSharp.Script >= 1.0.0", - "StgSharpTerminalDialogue >= 1.0.0", - "SthSharp.Model >= 1.0.0", "System.Collections.Concurrent >= 4.3.0" ] }, @@ -2082,7 +1526,7 @@ "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ - "net8.0" + "net6.0" ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, @@ -2091,23 +1535,20 @@ "https://api.nuget.org/v3/index.json": {} }, "frameworks": { - "net8.0": { - "targetAlias": "net8.0", + "net6.0": { + "targetAlias": "net6.0", "projectReferences": { - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator.Expression\\StgSgharp.Generator.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Modeling\\StgSharp.Script.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpTerminalDialogue\\StgSharpTerminalDialogue.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp\\StgSharp.Commom.csproj" - }, - "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj": { - "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\SthSharp.Model\\SthSharp.Model.csproj" + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" } } } @@ -2124,14 +1565,9 @@ } }, "frameworks": { - "net8.0": { - "targetAlias": "net8.0", + "net6.0": { + "targetAlias": "net6.0", "dependencies": { - "Microsoft.Windows.CsWin32": { - "suppressParent": "All", - "target": "Package", - "version": "[0.3.49-beta, )" - }, "System.Collections.Concurrent": { "target": "Package", "version": "[4.3.0, )" @@ -2153,7 +1589,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400\\RuntimeIdentifierGraph.json" } } } diff --git a/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs b/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs index 3ac7f37c..3afbd352 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+6cfaa42ff31cf213685faf60a3fcde42b99f0224")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] [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.csproj.FileListAbsolute.txt b/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt index 1134028d..ae24ddbb 100644 --- a/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt +++ b/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt @@ -1,39 +1,36 @@ -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\StgSharpDebug.exe -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\awesomeface.png -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\fbo.frag -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\fbo.vert -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\Image1.png -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\main.frag -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\main.vert -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\particle.frag -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\Shader\particle.vert -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\StgSharpDebug.deps.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\StgSharpDebug.runtimeconfig.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\StgSharpDebug.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\StgSharpDebug.pdb -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\Output\x64\Debug\net6.0\StgSharpDebug.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\awesomeface.png +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\fbo.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\fbo.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\Image1.png +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\main.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\main.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\particle.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\Shader\particle.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\CommunityToolkit.HighPerformance.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\System.Runtime.CompilerServices.Unsafe.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Generator.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.csproj.AssemblyReference.cache D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.AssemblyInfoInputs.cache D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.AssemblyInfo.cs D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.csproj.CoreCompileInputs.cache D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharp.D6C465D7.Up2Date D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.dll D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.xml D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.pdb D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.genruntimeconfig.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\StgSharpDebug.exe -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\awesomeface.png -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\fbo.frag -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\fbo.vert -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\Image1.png -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\main.frag -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\main.vert -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\particle.frag -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\Shader\particle.vert -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\StgSharpDebug.deps.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\StgSharpDebug.runtimeconfig.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\StgSharpDebug.dll -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\StgSharpDebug.pdb -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\游戏源代码\Output\x64\Debug\net6.0\StgSharpDebug.xml -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.csproj.AssemblyReference.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharp.D6C465D7.Up2Date diff --git a/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json b/内核源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json index 53bd9bd6..d30ebc07 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/63c3cd17e2188771886daeb4046edf28633fa949/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e687473132786f419a48170313782d6779890c3d/*"}} \ 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 0ebd9277..8b6da536 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+592ad55d57752262ac1a710ef11425da83ef4676")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/内核源代码/StgSharpDevelop.sln b/内核源代码/StgSharpDevelop.sln index 8ea250a5..7b47e7fd 100644 --- a/内核源代码/StgSharpDevelop.sln +++ b/内核源代码/StgSharpDevelop.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32825.248 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Commom", "StgSharp\StgSharp.Commom.csproj", "{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Common", "StgSharp.Common\StgSharp.Common.csproj", "{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}" ProjectSection(ProjectDependencies) = postProject {20CBFF26-6746-402E-992C-7B643E9423EB} = {20CBFF26-6746-402E-992C-7B643E9423EB} EndProjectSection @@ -15,132 +15,98 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharpDebug", "StgSharpDe {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} = {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StgSharpC", "StgSharpC\StgSharpC.vcxproj", "{20CBFF26-6746-402E-992C-7B643E9423EB}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StgSharp.C", "StgSharp.C\StgSharpC.vcxproj", "{20CBFF26-6746-402E-992C-7B643E9423EB}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0961B2BE-415C-45EA-8607-5B83623B2EF7}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharpTerminalDialogue", "StgSharpTerminalDialogue\StgSharpTerminalDialogue.csproj", "{10B5819F-2A62-41B6-980A-EB9E76A0E95C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.TerminalDialogue", "StgSharp.TerminalDialogue\StgSharp.TerminalDialogue.csproj", "{10B5819F-2A62-41B6-980A-EB9E76A0E95C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Script", "StgSharp.Modeling\StgSharp.Script.csproj", "{5B51F5EA-138C-46B5-B36F-1D389968B6CF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Script", "StgSharp.Script\StgSharp.Script.csproj", "{5B51F5EA-138C-46B5-B36F-1D389968B6CF}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharpTest", "STgSharpTest\StgSharpTest.csproj", "{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSgharp.Generator", "StgSgharp.Generator.Expression\StgSgharp.Generator.csproj", "{9A678884-081A-4E28-8439-B08F4BC05791}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Generator", "StgSgharp.Generator\StgSharp.Generator.csproj", "{9A678884-081A-4E28-8439-B08F4BC05791}" ProjectSection(ProjectDependencies) = postProject {20CBFF26-6746-402E-992C-7B643E9423EB} = {20CBFF26-6746-402E-992C-7B643E9423EB} {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} = {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SthSharp.Model", "SthSharp.Model\SthSharp.Model.csproj", "{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Model", "StgSharp.Model\StgSharp.Model.csproj", "{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 - Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.ActiveCfg = Release|x64 - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.Build.0 = Release|x64 - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x86.ActiveCfg = Debug|Any CPU - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x86.Build.0 = Debug|Any CPU + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.ActiveCfg = Debug|x64 + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.Build.0 = Debug|x64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|Any CPU.ActiveCfg = Release|Any CPU {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|Any CPU.Build.0 = Release|Any CPU {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.ActiveCfg = Release|x64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.Build.0 = Release|x64 - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x86.ActiveCfg = Release|Any CPU - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x86.Build.0 = Release|Any CPU {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|Any CPU.ActiveCfg = Debug|x64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|Any CPU.Build.0 = Debug|x64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.ActiveCfg = Debug|x64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.Build.0 = Debug|x64 - {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x86.ActiveCfg = Debug|Any CPU - {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x86.Build.0 = Debug|Any CPU {610B992B-BB34-49C3-9993-676C595FC12E}.Release|Any CPU.ActiveCfg = Release|Any CPU {610B992B-BB34-49C3-9993-676C595FC12E}.Release|Any CPU.Build.0 = Release|Any CPU {610B992B-BB34-49C3-9993-676C595FC12E}.Release|x64.ActiveCfg = Release|x64 - {610B992B-BB34-49C3-9993-676C595FC12E}.Release|x86.ActiveCfg = Release|Any CPU - {610B992B-BB34-49C3-9993-676C595FC12E}.Release|x86.Build.0 = Release|Any CPU {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|Any CPU.ActiveCfg = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|Any CPU.Build.0 = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x64.ActiveCfg = Debug|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x64.Build.0 = Debug|x64 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x86.ActiveCfg = Debug|Win32 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x86.Build.0 = Debug|Win32 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|Any CPU.ActiveCfg = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|Any CPU.Build.0 = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.ActiveCfg = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.Build.0 = Release|x64 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x86.ActiveCfg = Release|Win32 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x86.Build.0 = Release|Win32 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.ActiveCfg = Debug|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.Build.0 = Debug|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x86.ActiveCfg = Debug|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x86.Build.0 = Debug|Any CPU + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.ActiveCfg = Debug|x64 + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.Build.0 = Debug|x64 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|Any CPU.ActiveCfg = Release|Any CPU {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|Any CPU.Build.0 = Release|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.ActiveCfg = Release|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.Build.0 = Release|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x86.ActiveCfg = Release|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x86.Build.0 = Release|Any CPU + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.ActiveCfg = Release|x64 + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.Build.0 = Release|x64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.ActiveCfg = Debug|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.Build.0 = Debug|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x86.ActiveCfg = Debug|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x86.Build.0 = Debug|Any CPU + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.ActiveCfg = Debug|x64 + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.Build.0 = Debug|x64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.Build.0 = Release|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.ActiveCfg = Release|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.Build.0 = Release|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x86.ActiveCfg = Release|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x86.Build.0 = Release|Any CPU + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.ActiveCfg = Release|x64 + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.Build.0 = Release|x64 {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x64.ActiveCfg = Debug|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x64.Build.0 = Debug|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x86.ActiveCfg = Debug|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x86.Build.0 = Debug|Any CPU + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x64.ActiveCfg = Debug|x64 + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x64.Build.0 = Debug|x64 {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|Any CPU.ActiveCfg = Release|Any CPU {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|Any CPU.Build.0 = Release|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x64.ActiveCfg = Release|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x64.Build.0 = Release|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x86.ActiveCfg = Release|Any CPU - {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x86.Build.0 = Release|Any CPU + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x64.ActiveCfg = Release|x64 + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x64.Build.0 = Release|x64 {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.ActiveCfg = Debug|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.Build.0 = Debug|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x86.ActiveCfg = Debug|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x86.Build.0 = Debug|Any CPU + {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.ActiveCfg = Debug|x64 + {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.Build.0 = Debug|x64 {9A678884-081A-4E28-8439-B08F4BC05791}.Release|Any CPU.ActiveCfg = Release|Any CPU {9A678884-081A-4E28-8439-B08F4BC05791}.Release|Any CPU.Build.0 = Release|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.ActiveCfg = Release|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.Build.0 = Release|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x86.ActiveCfg = Release|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x86.Build.0 = Release|Any CPU + {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.ActiveCfg = Release|x64 + {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.Build.0 = Release|x64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.ActiveCfg = Debug|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.Build.0 = Debug|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x86.ActiveCfg = Debug|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x86.Build.0 = Debug|Any CPU + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.ActiveCfg = Debug|x64 + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.Build.0 = Debug|x64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|Any CPU.ActiveCfg = Release|Any CPU {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|Any CPU.Build.0 = Release|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.ActiveCfg = Release|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.Build.0 = Release|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x86.ActiveCfg = Release|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x86.Build.0 = Release|Any CPU + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.ActiveCfg = Release|x64 + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/内核源代码/build/StgSharp.Common.deps.json b/内核源代码/build/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/内核源代码/build/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/内核源代码/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/内核源代码/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/内核源代码/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/内核源代码/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/内核源代码/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file